Skip to main content
Step-by-step instructions on how to register a RPC node on chain to be eligible for rewards.
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
If you don’t have enough CELO, you can practice the registration process on the Celo Sepolia Testnet. Use the testnet faucet to get test CELO - select “Advanced Needs” when requesting funds for RPC provider testing.

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.
This guide contains a large number of keys, so it is important to understand the purpose of each key. Read more about key management.

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:

Addresses Used

In this guide, the following addresses will be used: Groups and validators may be run by different entities. This guide assumes they are running by the same entity, but you can skip those if not relevant to your specific setup.

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).
Check that your CELO was successfully locked with the following 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

Confirm by checking the authorized Validator signer for your Validator:

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.
View your Validator Group information:

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.
Accept the affiliation request:
Verify that your node is now a member of your Group:

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:
You can also list all registered RPC URLs on the network:

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.
Verify that your votes were cast successfully:

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:
Confirm that your votes were activated by running:

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:
Check your node’s status, including election status:
View additional node information, including uptime score:

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:

USDm Rewards

Active validators receive USDm rewards based on their validator score, calculated as part of the L2 epoch rewards process (see EpochRewards.calculateTargetEpochRewards()). For more details, refer to the L2 Epoch Rewards documentation. For reward claiming instructions, see Claiming Rewards.