This release introduces several new features and improvements. It also removes support for the Deneb fork.
Doppelganger detection
Doppelganger detection can be enabled through the new --enable-doppelganger-detection CLI argument. With this feature enabled, Vero will not start attesting immediately and will instead wait 2-3 epochs while it attempts to detect doppelgangers running on the network. For more information about this feature refer to the docs and the CLI reference.
Updated Default Gas Limit Values
This release changes the default gas limit values to 45M for Ethereum mainnet and 60M for the Hoodi and Holešky testnets.
Attestation Consensus Optimizations
The attestation consensus mechanism has been significantly reworked. Vero now attests to the latest head block as soon as possible, only coming to consensus on finality checkpoints. These finality checkpoints —under normal circumstances— only change once per epoch. This optimization reduces the overhead of the attestation consensus mechanism while still ensuring validators do not end up on the wrong chain (voting for the wrong finality checkpoints).
Before: Vero attests if enough of the connected beacon nodes agree on the head of the chain.
Vero v1.2.0+: Vero attests if enough of the connected beacon nodes agree on finality checkpoints.
This means using Vero to cross-check the state of the chain becomes more accessible and practical to home stakers who run two machines. With this version, only one of the two machines is required to be online most of the time.
Operational tip for people running Vero against a two-node configuration: update either of your clients right after you see the "Finality checkpoints confirmed" message - you'll have about 6 minutes to perform maintenance before the next checkpoint confirmation.
The logs now also provide more detail on the attesting process making it easy to tell which blocks are being attested to:
2025-07-25 10:59:12,000 - BeaconChain - INFO : Slot 935646
2025-07-25 10:59:12,875 - AttestationService - INFO : Published attestations for slot 935646, count: 160, head root: 0x0a6c97ea77504acd9d10134bbea41b6b05bdcf54175ec3b5479d33301d7509a3
2025-07-25 10:59:24,000 - BeaconChain - INFO : Slot 935647
2025-07-25 10:59:26,688 - AttestationService - INFO : Published attestations for slot 935647, count: 151, head root: 0x88c5aab237b955299443ad54f3275d935b277ab1e5d627cb4f402e7b53e1ce2f
2025-07-25 10:59:36,000 - BeaconChain - INFO : Epoch 29239
2025-07-25 10:59:36,000 - BeaconChain - INFO : Slot 935648
2025-07-25 10:59:39,070 - AttestationData - INFO : Confirming finality checkpoints source=Checkpoint(epoch='29238', root='0x2c1a4d219b01d48cbd1a27bd9d269e03a017d823685774b6ba9ce84f0f7a18de') => target=Checkpoint(epoch='29239', root='0xe5c2ccc47b82302488fe97deacb3b1319742270b627acb95f15a925969348bf3')
2025-07-25 10:59:39,091 - BeaconNode - INFO : Finality checkpoints confirmed by beacon-node-A
2025-07-25 10:59:39,121 - BeaconNode - INFO : Finality checkpoints confirmed by beacon-node-B
2025-07-25 10:59:39,439 - AttestationService - INFO : Published attestations for slot 935648, count: 154, head root: 0xe5c2ccc47b82302488fe97deacb3b1319742270b627acb95f15a925969348bf3
Due to the above changes, the following changes were also made:
- tracing for the attestation duty was removed
- the
vc_attestation_consensus_contributions_totalmetric was replaced by thecheckpoint_confirmations_totalmetric - Grafana dashboards were updated
Debug Logs
Vero now stores a limited amount (up to 25MB) of debug-level logs in its data directory to help investigate issues.
Features
- Store debug logs in datadir by @eth2353 in #156
- Cache validator duties on shutdown by @eth2353 in #148
- Update default gas limit values by @eth2353 in #164
- Handle unavailable block value in Beacon API response by @eth2353 in #163
- Make block proposal duty more efficient by @eth2353 in #171
- Replace hardcoded 12s in duty time metrics by @eth2353 in #172
- Optimize attestation consensus by @eth2353 in #173
- Add doppelganger detection by @eth2353 in #176
- Add host information to BeaconNode errors by @eth2353 in #179
- Set default graffiti to Vero by @eth2353 in #182
Bug Fixes
Maintenance
- Remove support for Deneb by @eth2353 in #150
- Pin all used GitHub actions to specific commit by @eth2353 in #161
- Temporarily hardcode aiosignal version by @eth2353 in #165
- Enforce use of
SerializedAsStringuint types by @eth2353 in #168 - Bump
aiohttpto 3.12.14 by @eth2353 in #170 - Update ruff pre-commit hook id by @eth2353 in #175
- Bump dependencies by @eth2353 in #177
- Limit
errors_totalin Grafana dashboard to vero Prometheus job by @eth2353 in #181
Full Changelog: v1.1.3...v1.2.0