Dappnode Multiclient for Validators (ETH2, GNO)
Dappnode is a key piece of infrastructure decentralization. Our mission is to make running infrastructure easy for everyone, so we are now introducing multiple clients to validate on the Ethereum and Gnosis Consensus Layers (including testnets).
Current Status of Multiclient on Dappnode
Status for ETH Mainnet: Multiclient officially released for public use!
Status for ETH Prater Testnet: Multiclient officially released for public use!
Status for Gnosis Chain: Multiclient officially released for public use!
Short Multiclient Guide
- The user connects to their Dappnode via Wifi or VPN
- Picks between their validator client of choice (depending on the Network this includes: Prysm, Lighthouse, Teku, Nimbus or Lodestar)
- With the installation of any client, a second package gets installed called
Web3Signer
. This package will hold the keys and avoid having them in two places at the same time - User imports the keys into Web3Signer via the UI of the package
- Once the selected clients Beacon Chain is synced and the deposit phase is completed, the validator starts aggregating, attesting and proposing, generating rewards 🎉
Detailed Multiclient Guide (using GNOSIS as an example)
Step 1. Install the required packages for validating
Once you have access to the dappnode UI, go to the stakers-ui page , you can access by clicking on http://my.dappnode/#/stakers/gnosis or click in Stakers section you can find in the left menu, then click on the Gnosis tab.
Make sure to select the Gnosis chain tab,
The next step is to select the combination of client you want to use in your dappnode. For this process you need to select:
- Select the execution client: Nethermind-xdai. Click in the package
- Select the consensus client, here you can install one of the following options: Teku-gnosis, Lighthouse-gnosis and Prysm-gnosis
- Install the web3signer. This is required becausethis is the package that will contain the keystores.
Select the Execution client. For now, or in the moment this guide was created, nethermind is the only execution client that supports gnosis chain.
Select the consensus client. You will see the next fields when you click in the package chard.
Fee Recipient Address
The fee recipient is the regular Gnosis 0x
address that will receive priority fees of the proposed block. You will only receive fees at this address for blocks you propose, not for attestations. Any Gnosis EOA or Safe address
Graffiti
Choose a string that will be appended to your proposed blocks. You will be able to change later so it can be left as is for now.
Checkpoint for fast sync
To get your beacon node up and running in only a few minutes, you can start it from a recent finalized checkpoint state rather than syncing from genesis. This is substantially faster and consumes fewer resources than syncing from genesis while still providing all the same features.
Be sure you are using a trusted node for the fast sync. Get your checkpoint sync(Dappnode fills this field with the checkpoint sync they provide by default) from a running Gnosis Beacon Chain node or use the official one.
https://checkpoint.gnosischain.com
- Select the web3signer.
Then click in the below button that says "Apply changes"
Be patience, the installation process can take several minutes. You can check all have been installed in the dashboard page.
Step 2: Key Generation
Docker Command Line Instructions (only needed if you have trouble with Wagyu)
- Pull the docker image for the data generator
docker pull ghcr.io/gnosischain/validator-data-generator:latest
- If this is your first time running the process and there is no an existing mnemonic to generate keystores and deposit data, replace the variables below with your info then run the command.
docker run -it --rm -v /path/to/validator_keys:/app/validator_keys ghcr.io/gnosischain/validator-data-generator:latest new-mnemonic --num_validators=NUM --mnemonic_language=english --chain=gnosis --folder=/app/validator_keys --eth1_withdrawal_address=WITHDRAWAL_ADDRESS
- Choose a secure password and confirm. You will be shown a mnemonic seed phrase. Write down and store your keystore password and mnemonic safely offline.
Following execution, the path you defined for
/path/to/validator_keys
will contain the keystores anddeposit_data*.json
file.
Drop down for variable descriptions
NUM
The number of signing keys (validators) to generate.START_NUM
Index for the first validator key. If this is the first time generating keys with this mnemonic, use 0. If keys were previously generated with this mnemonic, use the subsequent index number (e.g., if 4 keys have been generated before (keys #0, #1, #2, #3, then enter 4 here).WITHDRAWAL_ADDRESS
Use this parameter to provide a regular Gnosis Chain0x
address for mGNO withdrawal. This parameter can also be omitted to generate withdrawal credentials with the mnemonic-derived withdrawal public key in the EIP-2334 format (ETH2 address format). Withdrawals will not be available until after the Shanghai upgrade./path/to/
should be replaced with a valid and existing path where you want to create the validator_keys folder. Or, to create the validator_keys folder in your current working directory, use$(PWD)/validator_keys:/app/validator_keys
- More details about command line arguments can be found here
KEEP YOUR KEYSTORES SAFE
We highly recommend generating keystores on a safe, completely offline device. To do so, you will need internet to access the latest release of Gnosis Chain Port of the Wagyu Key-Gen from GitHub (step 1), then disconnect internet or better yet copy the program to a USB drive to proceed with completely offline key generation (step 2), then finally save your deposit_data.json file (step 3) to a usb key or other transfer method that does not require online connection.
Securely backup your mnemonic, keystores, and password, and keep them in a safe place.
Step 3: Upload Keystores to Web3Signer
Now that you’ve generated your deposit data and keystores, go ahead and upload your keystores to Web3Signer Gnosis.
Return to your DAppNode’s Admin UI and navigate to the info page of the Web3Signer Gnosis package.
Open the UI by clicking the 🏠Ui
link, then click the Import Keystores
button on the lower part of the Web3Signer UI.
Select the keystore file(s) you generated the the password you chose during the last step.
You will be able to see all the keystores you’ve uploaded.
You are now ready to fund these validators and start validating.
Step 4: Fund Your Validators
tip
In case you need some xDai for transaction fees you can get some from the official xDai faucet for Gnosis.
Navigate to: https://deposit.gnosischain.com/
Connect your wallet.
Upload the
deposit_data*.json
you generated with the key generator tool in Step 3.Your deposit file will be validated and list the number of validator deposits you are making and the required GNO to deposit. Click
Deposit
to continue.Check that you understand the risks and ensure you are interacting with the correct contract before proceeding.
Click
Ok
and confirm the transaction in your wallet to complete the deposit.Our proxy smart contract will deposit the 4 GNO to your validators! YOU control the private keys, YOU control the withdrawal key... these validators are now yours. Take good care of them!
DAppNode <> Gnosis Chain Incentive Program
If you are claiming the 4 Gnosis validators from the incentive program, select the DAppNode tab instead. Be sure to use the same wallet that you provided when placing your DAppNode order.
If you encounter an issue claiming your incentive program validators, such as an error about your address not being whitelisted or that it has expired, please visit the DAppNode Discord Server and open a support ticket in #1-sales-support-ticket
.
This guide was done with the inestimable help of DAppNode Team Member @voss
, with some additions from @Lanski
.