# Voting for Validator Groups

An account can vote for up to 10 different validator groups (based on the maxNumGroupsVotedFor parameter of the Elections core smart contract). For this implementation of StakedCelo, consequently the protocol can only vote for up to 10 validators. Currently, votes are only cast for 8 validator groups.&#x20;

The following principles guide the selection of the initial set of validators:

1. Efficiency: For holders of stCELO: Vote for validators who support Celo most effectively. For the community: Ship fast and iterate towards better (and more complex) solutions later on.
2. Neutrality: Cast votes in a comprehensible way, based on objective measures which are important for the protocol to work, or for the Celo ecosystem to function. Besides these core caveats,  aim to stay neutral in the selection of individual validator groups.
3. Credibility: Our approach should be verifiable by anyone based on on-chain data.

Based on these principles, establish rules to select the validator groups to vote for with StakedCelo:

**A) Create a shortlist of eligible validator groups**

i) Start with all validator groups of Celo as returned by the CLI (celocli validator:list)

ii) Of those, select all which have an uptime score of >98% \[need for high uptime to receive maximum rewards]

iii) Of those, select the lower two tertiles of validator groups regarding number of votes received (specifically this means excluding validator groups with over 3,750,000 votes) \[support the decentralization of Celo]

iv) Of those, select all which have had zero slashing incidents in the past \[slashing incidents decrease rewards]

v) Of those, select all which have at least one validator elected \[active validators needed to receive rewards]

vi) Of those, select all which have >2,000,000 votes as open capacity \[voting only possible for 8 validators and a minimum of 16M votes to be cast by protocol should be ensured]

This results in the shortlist shared below. Note: The list was created according to these rules on July 28 and shared on the [Celo forum](https://forum.celo.org/t/stcelo-launch-on-friday-feedback-on-our-plan-for-validator-election/3897) on that day.

**B) Randomly select a subset of the shortlist**

i) Commit to a blocknumber (and share the hash prior to its mining) and use the randomness contract to generate a seed with that block as input for a random selection algorithm

ii) Use [this script](https://github.com/m-chrzan/validator-selector) to select 8 validator groups randomly from the shortlist and then vote for those. We do select less than the maximum number of 10, such that we have two free slots available under normal conditions and retain some flexibility around changing votes.

**Appendix A: Shortlist**

Addresses of validator groups part of the shortlist, selected as described above:

`0x0f66619058BB9675f3d394FCc2cE236a29901571`

`0x15Ed3f6b79F5Fb9Ef1D99D37314Dd626b3005F0b`

`0x2AF540161Cbeb58FdC99b159c76E390598860510`

`0x2c2B0f71d59B546B2CAfd222696589c13C3c325C`

`0x34649AdA2cB44D851a2103Feaa8922DedDABfc1c`

`0x3D451dd723797b3DE938C5B22412032B6452591A`

`0x3DcF2ED8dC84a63FfD2bfDc3CDb2fA0B1aeAfE5c`

`0x5402172E972b31Fc9F0383F53f45823Ab5037379`

`0x602B65795BCc64b2fb329AC004236E194f077158`

`0x614B7654ba0cC6000ABe526779911b70C1F7125A`

`0x69cd274C6AcBc08F664eD7B2D54aaB6615BC1d70`

`0x70FC0b021dFdBb9A106D1Ed8F35f59D3f23eCb7B`

`0x71dcC67baEECd9308e341359f70B782D9C3565b8`

`0x81AE1C73A326325216E25ff1af9EA3871195036E`

`0x81cef0668e15639D0b101bdc3067699309D73BED`

`0x82f8Bcf96f24BA60Ef041D192c7CE04C907E2fb8`

`0x8493BD3De67AC341D4cC11531f96a1A2cdBf29aD`

`0x8580dB53C3ebC56230662B771ceF2707E92Ef83A`

`0x89d5bd54C43dDd10905A030DE6Ff02EbB6c51654`

`0x95aE59515915D6c493a846aE022F93726652b50A`

`0xAcdf897493A6000dbe256791E8A2beCbb405FD4F`

`0xB33e9e01E561a1Da60f7Cb42508500e571afb6Eb`

`0xb35Be22BccB0dB9dC62967dcF15fEB97C20f854e`

`0xc24baeac0Fd189637112B7e33d22FfF2730aF993`

`0xc64DF5Be250264bf2888591D87cdeB13BFADC501`

`0xC7d5409fEe80B3Ac37Dbc111664dC511a5982469`

`0xc8A81D473992c7c6D3F469A8263F24914625709d`

`0xd25c6a9FEf4744E8d4F90Bf6bdFAF7686909d799`

`0xD72Ed2e3db984bAC3bB351FE652200dE527eFfcf`

`0xE075ba4b1dCAF75513118d7aA08A057c658842c9`

`0xE141831c2c1198d79B9Ff61cD97C3bAca7F071E0`

**Appendix B: Selected validator groups**

[Link](https://forum.celo.org/t/stcelo-launch-on-friday-feedback-on-our-plan-for-validator-election/3897) to block commitment has.

Block 13816816 was selected, leading to randomness `eeebfcc9bf72d7966eb5413ff5f83270e5dca2f67231f566c95fbccd7216ad38`

which results with the following selection of validator groups:

`0xc24baeac0Fd189637112B7e33d22FfF2730aF993`

`0xb35Be22BccB0dB9dC62967dcF15fEB97C20f854e`

`0x3D451dd723797b3DE938C5B22412032B6452591A`

`0x15Ed3f6b79F5Fb9Ef1D99D37314Dd626b3005F0b`

`0x34649AdA2cB44D851a2103Feaa8922DedDABfc1c`

`0xc8A81D473992c7c6D3F469A8263F24914625709d`

`0x81AE1C73A326325216E25ff1af9EA3871195036E`

`0xD72Ed2e3db984bAC3bB351FE652200dE527eFfcf`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.stcelo.xyz/voting-for-validator-groups.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
