TerminologyThe term “validator” is used in the code and corresponding explanation due to historical reasons, but refers to the community RPC providers.
Prerequisites
Software Requirements
Install the Celo CLI following the Command Line Interface (CLI) setup instructions. Ensure you’re using Node.js version 18 or higher.Staking Requirements
To register as a community RPC provider, you need:- 10,000 CELO to register an RPC node
- 10,000 CELO per member RPC to register an RPC Group
Key Management
Private keys are the central primitive of any cryptographic system and need to be handled with extreme care. Loss of your private key can lead to irreversible loss of assets.
Account and Signer Keys
Running an RPC node involves managing multiple keys with different security levels and permissions. Keys used frequently (like those for updating URLs) are more vulnerable to compromise and therefore have limited permissions. Keys used less often (such as for locking CELO) can be stored more securely and have broader permissions. Below is a summary of the different keys used in the Celo network and their specific permissions:| Name of the key | Purpose |
|---|---|
| Account key | This is the key with the highest level of permissions, and is thus the most sensitive. It can be used to lock and unlock CELO, and authorize vote, validator, and attestation keys. Note that the account key also has all of the permissions of the other keys. |
| Validator signer key | This is the key that has permission to register and manage a node or a Group. |
| Vote signer key | This key can be used to vote in Validator elections and on-chain governance. |
Addresses Used
In this guide, the following addresses will be used:| Address name | Purpose | Owner entity | Recommended storage |
|---|---|---|---|
| CELO_GROUP_ADDRESS | Address representing a group, with up to five nodes. It’s the account that will receive votes. | Group | Cold |
| CELO_NODE_ADDRESS | Address that represent a node. | Node | Cold |
| CELO_VALIDATOR_SIGNER | Address authorized to generate signers or deregister members or join/leave a group. It can be rotated. | Node operator | Hot |
Setting Up Accounts
This amount (10,000 CELO) represents the minimum amount needed to be locked in order to register a Validator and Validator group.Note that you will want to be sure to leave enough CELO unlocked to be able to continue to pay transaction fees for future transactions (such as those issued by running some CLI commands).
Setting Up the Group Account
Lock CELO
Lock up CELO for both accounts to secure the right to register a Validator and Validator Group. You need 10,000 CELO to register a node. This CELO stays locked for approximately 60 days after deregistration.The Celo CLI needs an RPC address. You can use the Celo Community RPC gateway with
-n https://rpc.celo-community.org.You can use the Celo CLI with a Ledger hardware wallet (see CLI docs) or pass a private key directly with the
--privateKey flag. Both options work with any transaction-signing command.Setting Up the Node Account
Lock CELO
Lock up CELO for the node account to secure the right to register a Validator. You need 10,000 CELO to register a node. This CELO stays locked for approximately 180 days after removal of the Nth validator from the group.Create a Validator Signer
To register as a node, you need to generate a validator signer key. You can create this account by:- Exporting a private key from a wallet (like MetaMask)
- Using a hardware wallet
- Running the command below:
Make sure to safely store the signer key.
Create a Validator Signer Proof-of-Possession
Next, create a proof-of-possession to verify you control the validator signer private key. This involves signing a message containing the validator account address.Register Node Metadata On-Chain
Before proceeding with the election process, you need to register your node’s metadata on-chain. This step is critical - nodes without proper metadata are at risk of being slashed. For detailed instructions on registering your node URL and metadata, see Registering the Node URL.Register the Nodes and Group
To participate in elections as an RPC provider, you must register both your group and individual node. When registering a Group, you’ll need to specify a commission - this is the percentage of epoch rewards that group members pay to the group. Since we want to keep our account key secure, we’ll first authorize the validator signing key instead of using the account key for validation:Authorize Signer
Registering the Group
Register your Group using the following command. Since we haven’t authorized a validator signer for the Group account, use the account key for registration.Registering the Node
Register your node with the following command. Since we authorized a validator signer, this step can be performed on the validator machine. Running it locally avoids installing the Celo CLI on the validator machine.Affiliate the Node to the Group
Link your node to your Group. Note that you won’t be a group member until the Group accepts the affiliation. This command can also be run from the validator signer on the validator machine.Registering the Node URL
To register your node as an RPC provider, you must register a public HTTPS URL on-chain through a signed metadata file in your Celo Account. The--from flag in the CLI commands can use either the validator account itself or the validator signer.
Create Metadata File
Create a new metadata file for your node. If you need to update an existing metadata file, download it instead of creating a new one.Claim RPC URL
Register your public RPC URL in the metadata file:Upload Metadata
Upload the metadata file to a publicly available URL with high availability.Register Metadata URL
Link the metadata URL to your validator Celo account:If your account is a ReleaseGold contract, use the command
celocli releasecelo:set-account instead. Documentation can be found here.Verify Registration
Confirm that the metadata registration was successful:Voting
As an optional step, you can use both accounts to vote for your Group.Vote With All Accounts
Since we haven’t authorized a vote signer for either account, these transactions must be sent using the account keys.You can only run these commands with accounts you control. All commands are listed here for the sake of completeness.
Activate Your Votes
Users voting in the Celo protocol receive epoch rewards only after submitting a special transaction to activate their votes. This must be done every time new votes are cast, and can only be executed after the most recent epoch has ended. Use the following command, which waits until the epoch ends before sending the transaction:Watching the Election Process
You’re all set! Elections are finalized at the end of each epoch, roughly once a day on Mainnet. If elected, your node will start participating. After the first epoch of participation, you’ll receive your first epoch rewards. You can view current election status and the minimum votes needed on Mondo. Inspect the current validator elections:Rewards
CELO Rewards
If your Validator Group elects validators, you’ll receive epoch rewards as additional Locked CELO voting for your Validator Group. You can monitor these rewards using the previous commands and:cUSD Rewards
Active validators receive cUSD rewards based on their validator score, calculated as part of the L2 epoch rewards process (seeEpochRewards.calculateTargetEpochRewards()). For more details, refer to the L2 Epoch Rewards documentation.
For reward claiming instructions, see Claiming Rewards.
