Stake Validators Keys Manually
Staking with registry
The validator registry contract is deployed to the mev-commit chain at address 0xF263483500e849Bd8d452c9A0F075B606ee64087
, with a minimum stake requirement of 3 ETH, and a 7000 block unstaking period. This unstaking period corresponds to 23.3 minutes, assuming a 200ms mev-commit chain 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 the testnet faucet to fund an account on the mev-commit chain.
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:
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:
Clone the Repository
Clone the validator-registry repository using the following command:
Prepare Validator Keys
Change directory into the cloned repository and edit the keys_example.txt
file to include your validator BLS public keys:
Run the Stake Script
Navigate to the cmd/stake
directory and run the staking script with your funded private key:
This script will attempt to stake 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 an unstake
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.