Skip to main content
Version: v0.17.0

Creator & Leader Journey

warning

Charon is in an alpha state and should be used with caution according to its Terms of Use.

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.

The person creating the cluster will be a node operator in the cluster.

Pre-requisites

  • Ensure you have docker installed.
  • Ensure you have git installed.
  • Make sure docker is running before executing the commands below.

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

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.17.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

If instead of being shown your enr you see an error saying permission denied then you may need to update docker permissions to allow the command to run successfully.

warning

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.

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.

  1. Go to the DV Launchpad
  2. Connect your wallet

Connect your Wallet

  1. Select Create a Cluster with a group then Get Started.

Get Started

  1. Follow the flow and accept the advisories.

  2. 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.
    • ⚠️ Leave the Non-Operator toggle OFF.

    • 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. Use Single address to receive the principal and fees to a single address or Splitter Contracts to share them among operators.
    • 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.



    Create Group

    • Click Create Cluster Configuration
    1. Review the cluster configuration
    1. 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.
  1. 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.

Invite Operators

👉 Once every participating operator has signed their approval to the terms, you will continue the Operator journey by completing the distributed key generation step.