Dear Celo community,
cLabs plans to launch stCELO, a Celo native liquid staking derivative, on Friday this week! Specifically, we will launch the protocol and have planned integrations (WebApp, DEX, Lending, etc.) for the weeks afterwards. This protocol will allow anyone to stake their $CELO (earning rewards and supporting the network) and at the same time to use that capital across ecosystem DApps. To earn staking rewards for the users of stCELO, the protocol must vote for validator groups with all the $CELO it has locked. In its current implementation, it is only possible to vote for a maximum of 10 validator groups at any given time. In this post, we share how we plan to cast the votes for validator groups and solicit feedback from the community on our approach.
Specifically, we guide our approach by the following principles:
- Efficiency: For holders of stCELO: We want to vote for validators in a way to maximize the return. For the community / cLabs: We want to ship fast and iterate towards better (and more complex) solutions later on.
- Neutrality: We want to cast votes in a comprehensible way, based on objective measures which are important for the protocol stCELO to work, or for the Celo ecosystem to function. Besides these core caveats, we aim to stay neutral in the selection of individual validator groups.
- Credibility: Our approach should be verifiable by anyone based on on-chain data.
Based on these principles, we have come up with the following rules to select the validator groups we vote for with stCELO:
A) We create a shortlist of eligible validator groups
i) We start with all validator groups of Celo which have at least one validator elected [we need active validators to receive rewards]
ii) Of those, we select all which have an uptime score of >98% [we need high uptime to receive maximum rewards]
iii) Of those, we 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) [we aim to support the decentralization of Celo]
iv) Of those, we select all which have had zero slashing incidents in the past [slashing incidents decrease rewards]
v) Of those, we select all which have >2,000,000 votes as open capacity [we can only vote for 8 validators and want to ensure a minimum of 16M votes that we can cast]
This results in the list shared below.
B) We randomly select a subset of the shortlist
i) We 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) We use this script to select 8 validator groups randomly from the shortlist and then vote for those: GitHub - m-chrzan/validator-selector. 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.
We hope our approach is understandable and we are looking very much forward to your feedback and to releasing the protocol to all of you for usage!
Matt for the stCELO team
PS: Happy to chat with everyone on how we can help here or on Discord matt#9000
PPS: the github repo of the protocol GitHub - celo-org/staked-celo
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