A validator client contributes to the Consensus Layer of the Ethereum blockchain by signing proposals and attestations of blocks, using a BLS private key which must be available to this client at all times.
The BLS remote signer API is designed to be consumed by validator clients, looking for a more secure avenue to store their BLS12-381 private key(s), enabling them to run in more permissive and scalable environments.
More information about the EIP can be found at the official website
Client diversity is a key goal in Dappnode, you will be able to use different clients and do not deposit all the trust on just one of them. It can also work as a load balancer, keeping your validators always validating, and also helps protect your keys and slashing database by storing your signing keys in just this remote signer, so that when switching client's locally you dont need to transfer Slashing Protection DBs, or your keystores between the 5 Consensus Layer Clients. The Web3Sginer is the most battle tested remote signer out there, which is geared towards institutional usage which demands the most rigorous security and audits.
Rquirements to run the Dappnode Package for the Web3Signer
- A Validator: Generate a validator(s) offline using Wagyu (Easiest way to generate keystores for validators all GUI Program no command line needed), or the Official Staking Deposit CLI, (needs basic CLI knowledge) Then fund your validator at with the Official Staking Launchpad
- Ethereum Execution Client: you should have installed and synced an Execution Layer Client (i.e. Besu, Erigon, Geth, or Nethermind).
- Ethereum Consensus Client: you should have installed and synced a Consensus Layer Client (i.e. Lighthouse, Lodestar, Nimbus, Prysm, or Teku).
Updated | Champion/s |
---|---|
✔️ | @pablomendez95 |
Build a development binary of the Web3Signer. Also uses the latest postgresql scripts defined at https://github.com/ConsenSys/web3signer/tree/master/slashing-protection/src/main/resources/migrations/postgresql
npx @dappnode/dappnodesdk build --compose_file_name=docker-compose.dev.yml