Staking with registry
The validator registry contract is deployed to Holesky at address0x5d4fC7B5Aeea4CF4F0Ca6Be09A2F5AaDAd2F2803
, with a minimum stake requirement of 0.0001 ETH, and a 96 block unstaking period. This unstaking period corresponds to 19.2 minutes, assuming a 12 sec Holesky block time. This period allows two L1 epochs (L1 finalization period) plus a settlement buffer, to pass between validator unstake initiation and withdrawal.
The registry strictly accepts BLS public keys as the validator opt-in identifier. Any EOA can stake on behalf of a validator pub key, and only that EOA has the ability to withdraw in the future.
To stake with the mev-commit validator registry, first use an available Holesky faucet to fund an account.
To stake
with the contract, see the following function signature, where ether sent with the transaction is split evenly among the specified validator pub keys:
Due to gas limitations, it is recommended to stake in batches of 10-20 public keys at a time to ensure transaction success without hitting gas limits.
Using Golang
You can programmatically interact with the validator registry using Golang scripts. To stake one or more validator BLS public keys, refer to this example script as outlined in the steps below:1
Clone the Repository
Clone the validator-registry repository using the following command:
❯_ terminal
2
Prepare Validator Keys
Change directory into the cloned repository and edit the
keys_example.txt
file to include your validator BLS public keys:❯_ terminal
3
Run the Stake Script
Navigate to the This script will attempt to stake
cmd/stake
directory and run the staking script with your funded private key:❯_ terminal
3.1
ETH on behalf of each validator BLS public key in keys_example.txt
.Withdrawing
To withdraw your staked ether, you have two options: through the validator registry interface or programmatically using a Golang script. Please be aware that an unstaking period is mandatory. You must initiate anunstake
transaction and wait for the required number of
blocks to pass before you can execute a withdraw
transaction to transfer the funds to your account.