Quick Start Guide
The collateral requirement to register a validator to ETHGas is currently *zero* ETH!
You can start using ETHGas today for FREE and earn higher rewards for every block π₯³
This guide is a simplified quick start configuration that assumes a standard validator setup. For a full technical guide with every available configuration option, check out the repo README.
Commit-Boost
The ethgas-preconf-commit-boost-module repo contains everything needed to setup and run Commit-Boost as well as the ETHGas module. If you are already running an existing version of Commit-Boost, you can either:
Use this single repo instead for simpler configuration management.
Or, continue using your existing version, making sure to add the configuration,
rpc_url, ETHGas[[relays]], etc.
To get started, clone the repo:
git clone https://github.com/ethgas-developer/ethgas-preconf-commit-boost-module.gitCopy docker-compose-example.yml as docker-compose.yml and make any required modifications.
cp docker-compose-example.yml docker-compose.ymlCreate an empty .cb.env file and generate a new jwt for the signer module by running:
touch .cb.env
docker compose -f docker-compose.yml up cb_gen_jwtCreate a config.toml file and enter the following configuration:
touch config.tomlThis is a minimal setup and does not cover all environment types. For a comprehensive list of all available configuration options, open the config.example.mainnet.toml file.
Signers
This section continues the configuration of the config.toml file for the signer modules. Select the signer that you are using add the configuration below the [signer] section in your config.toml file
Local Signers
Remote Signers
Web3Signer
Web3Signer implements the same API as Commit-Boost, so there's no need to set up a Signer module. The parameters needed for the remote signer are:
Dirk
Dirk is a distributed key management system that can be used to sign transactions. In this case the Signer module is needed as an intermediary between the modules and Dirk. The following parameters are needed:
cert_pathandkey_pathare the paths to the client certificate and key used to authenticate with Dirk.walletsis a list of wallets from which the Signer module will load all accounts as consensus keys. Generated proxy keys will have format<WALLET_NAME>/<ACCOUNT>/<MODULE_ID>/<UUID>, so accounts found with that pattern will be ignored.secrets_pathis the path to the folder containing the passwords of the generated proxy accounts, which will be stored in<secrets_path>/<WALLET_NAME>/<ACCOUNT>/<MODULE_ID>/<UUID>.pass.
Delegation signatures will be stored in files with the format <proxy_dir>/delegations/<MODULE_ID>/<PROXY_KEY>.sig.
A full example of a config file with Dirk can be found here.
ETHGas Module
The ETHGas module is run each time you want to update your ETHGas account configuration. This includes actions like:
Registering and deregistering validators
Updating your entity name, etc.
Currently, the only authentication optoions are adding your EOA_SIGNING_KEY or ACCESS_JWT to the config directly (or through a .env file). An improvement is planned to allow the generation of an API key in the ETHGas validator UI that can then be reused in this module configuration file. This would provide an alternative method for validators who want to use a hardware wallet and/or multisig wallet for authentication.
Metrics and Logs
Start the Signer module
For DVT validators or remote signer, you don't need to run this module.
For registration of non-DVT validators, run:
β
If your signer starts successfully, you should see the log similar to INFO Starting signing service version="0.8.0" commit_hash="f51f5bd61831fde943057b29ffd6e26e7eb23765" modules=["ETHGAS_COMMIT"] endpoint=0.0.0.0:20000 loaded_consensus=100 loaded_proxies=0 where loaded_consensus indicates the total number of loaded keys.
Start the ETHGas Commit module
You are advised to run this module at or after the 2nd slot of the current epoch, so you can have more time to configure the PBS module.
This module only needs to be run whenever you modify the configuration of this module, e.g. when you want to register or deregister a validator to the ETHGas Exchange, to change collateral settings, etc. Think of running this module as "Update my config and sync with ETHGas".
To register the validators to the ETHGas Exchange, run:
β
You will see the log INFO successful registration, you can now sell preconfs on ETHGas! or INFO successful registration, the default pricer can now sell preconfs on ETHGas on behalf of you! if all goes well
β If the module encounters ConnectionRefused error when it tries to connect to http://cb_signer:20000/signer/v1/get_pubkeys, please wait for 20 minutes to retry.
Start the PBS module
Start the PBS module by running:
The default port used by the PBS module is the same default port as MEV-Boost. If you had previously configured a custom port for MEV-Boost, make sure you have configured that on the PBS module.
β
You will see the log DEBUG register_validators{req_id=...}:handler{relay_id="ethgas"}: registration successful code=200 latency=...ms if all goes well.
Once the ETHGas Commit module has completed the registration process and right before the start of the next epoch, stop your existing MEV-Boost client, restart the beacon node with new builder endpoint (if the port is different), and immediately start the PBS module.
To hot reload the config without restarting the module, run:
β
You will see the log INFO : config reload successful if the config reloads successfully.
Refer here for more details about hot reloading.
Last updated