Creator & Leader Journey
Charon is in an early alpha state and is not ready to be run on mainnet
The following instructions aim to assist with the preparation of a distributed validator key generation ceremony. Select the Leader tab if you will be an operator participating in the cluster, and select the Creator tab if you will NOT be an operator in the cluster.
These roles hold no position of privilege in the cluster, they only set the initial terms of the cluster that the other operators agree to.
- Leader
- Creator
Overview Video
Step 1. Collect Ethereum addresses of the cluster operators
Before starting the cluster creation, you will need to collect one Ethereum address per operator in the cluster. They will need to be able to sign messages through metamask with this address. Broader wallet support will be added in future.
Step 2. Create and back up a private key for charon
- Leader
- Creator
In order to prepare for a distributed key generation ceremony, you need to create an ENR for your charon client. Operators in your cluster will also need to do this step, as per their quickstart. This ENR is a public/private key pair, and allows the other charon clients in the DKG to identify and connect to your node.
# Clone this repo
git clone https://github.com/ObolNetwork/charon-distributed-validator-node.git
# Change directory
cd charon-distributed-validator-node
# Create your charon ENR private key, this will create a charon-enr-private-key file in the .charon directory
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v0.13.0 create enr
You should expect to see a console output like
Created ENR private key: .charon/charon-enr-private-key enr:-JG4QGQpV4qYe32QFUAbY1UyGNtNcrVMip83cvJRhw1brMslPeyELIz3q6dsZ7GblVaCjL_8FKQhF6Syg-O_kIWztimGAYHY5EvPgmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQKzMe_GFPpSqtnYl-mJr8uZAUtmkqccsAx7ojGmFy-FY4N0Y3CCDhqDdWRwgg4u
Please make sure to create a backup of the private key at .charon/charon-enr-private-key
. Be careful not to commit it to git! If you lose this file you won't be able to take part in the DKG ceremony and start the DV cluster successfully.
This step is not needed and you can move on to Step 3.
Step 3. Create the DKG configuration file and distribute it to cluster operators
You will prepare the configuration file for the distributed key generation ceremony using the launchpad.
- Go to the DV Launchpad
- Connect your wallet
- Select
Create a Cluster with a group
thenGet Started
.
-
Follow the flow and accept the advisories.
-
Configure the Cluster
- Input the
Cluster Name
&Cluster Size
(i.e. number of operators in the cluster). The threshold for the cluster to operate sucessfully will update automatically.
- Leader
- Creator
⚠️ Leave the
Non-Operator
toggle OFF.
⚠️ Turn the
Non-Operator
toggle ON.
- Input the Ethereum addresses for each operator collected during step 1.
- Select the desired amount of validators (32 ETH each) the cluster will run.
- Paste your
ENR
generated at Step 2. - Select the
Withdrawal Addresses
method. UseSingle address
to receive the principal and fees to a single address orSplitter Contracts
to share them among operators.
- Single Address
- Reward Splitter
- Enter the
Withdrawal Address
that will receive the validator effective balance at exit and when balance skimming occurs. - Enter the
Fee Recipient Address
to receive MEV rewards (if enabled), and block proposal priority fees.
You can set them to be the same as your connected wallet address in one click.
- Enter the Ethereum address to claim the validator principal (32 ether) at exit.
- Enter the Ethereum addresses and their percentage split of the validator's rewards. Validator rewards include consensus rewards, MEV rewards and proposal priority fees.
- Click
Create Cluster Configuration
- Input the
- Single Address
- Reward Splitter
- Review the cluster configuration
- 6. Deploy the withdrawal manager contracts by signing the two transactions with your wallet.
- Leader
- Creator
- You will be asked to confirm your configuration and to sign:
- The
config_hash
. This is a hashed representation of the details of this cluster, to ensure everyone is agreeing to an identical setup. - The
operator_config_hash
. This is your acceptance of the terms as a participating node operator. - Your
ENR
. Signing your ENR authorises the corresponding private key to act on your behalf in the cluster.
- You will be asked to confirm your configuration and to sign:
- The
config_hash
. This is a hashed representation of the details of this cluster, to ensure everyone is agreeing to an identical setup.
- Share your cluster invite link with the operators. Following the link will show you a screen waiting for other operators to accept the configuration you created.
- Leader
- Creator
👉 Once every participating operator has signed their approval to the terms, you will continue the Operator journey by completing the distributed key generation step.
Your journey ends here and you can monitor with the link whether the operators confirm their agreement to the cluster by signing their approval. Future versions of the launchpad will allow a creator to track a distributed validator's lifecycle in its entirety.