- In order to use Vero, you will need to use a remote signer to manage your validator keys. The remote signer must be connected to a slashing protection database - Vero does not maintain its own slashing protection database!
Get started by using the correct version of Python - 3.12 .
Next, install the dependencies using the package manager of your choice:
pip install -r requirements.txt
You should now be able to run Vero:
python src/main.py <arguments>
You can build the image yourself using the included Dockerfile or you can use the official image.
docker run ghcr.io/serenita-org/vero:<version> <arguments>
Check out the example docker compose file.
[required] The network to use, one of mainnet,gnosis,holesky,custom
.
custom
is a special case where Vero loads the network spec from the file specified using --network-custom-config-path
Path to a custom network configuration file from which to load the network specs.
[required] URL of the remote signer, e.g. http://remote-signer:9000
[required] A comma-separated list of beacon node URLs, e.g. http://beacon-node-1:5052,http://beacon-node-2:5052,http://beacon-node-3:5052
A comma-separated list of beacon node URLs, e.g. http://beacon-node-1:5052,http://beacon-node-2:5052,http://beacon-node-3:5052
to
exclusively use for block proposals. When performing a block proposal duty,
only these beacon nodes will be used to produce and publish a block.
Specify the required number of beacon nodes that need to agree on the attestation data before the validators proceed to attest.
There are a few situations where you may want to change the default:
- when running against 2 beacon nodes, where you only want to use the second node as a fallback
- when running against a large client-diverse set of beacon nodes where a lower threshold (like 2 or 3 out of 6 beacon nodes agreeing) may be sufficient to avoid single-client bugs.
See #38 for more information.
Defaults to a majority of beacon nodes (>50%) agreeing.
[required] The fee recipient address to use during block proposals.
The graffiti string to use during block proposals. Defaults to an empty string.
The gas limit value to pass on to external block builders during validator registrations. Note: this does not affect the gas limit value of the connected CL or EL clients.
Current defaults per network:
mainnet: 36M
gnosis: 17M
holesky: 36M
custom: 100M
Provide this flag to submit validator registrations to external builders.
A percentage multiplier applied to externally built blocks when comparing their value
to locally built blocks. The externally built block is only chosen if its value,
post-multiplication, is higher than the locally built block's value. Defaults to 90
.
The directory to use for storing persistent data. Defaults to /vero/data
.
The metrics server listen address. Defaults to localhost
.
The metrics server listen port. Defaults to 8000
.
Provide this flag to collect metrics from all processes. This comes with some limitations, notably no cpu and memory metrics. See https://prometheus.github.io/client_python/multiprocess/ .
The logging level to use, one of CRITICAL,ERROR,WARNING,INFO,DEBUG
. Defaults to INFO
.