Vero v1.4.0 introduces block proposal improvements, new CLI flags, and addresses findings from a recent security assessment.
🦀 Block Proposals
Block proposal handling has been significantly upgraded, resulting in better performance and a future-proof block architecture.
- The pipeline now uses Rust under the hood, powered by Grandine’s highly efficient SSZ libraries.
- Vero now defaults to SSZ encoding for block proposal–related API requests.
- JSON remains available for debugging via
--force-json-wire-format
- JSON remains available for debugging via
🔎 Spec Verification
On startup, Vero verifies that the spec values it ships with match those returned by connected beacon nodes. This ensures Vero is configured for the correct network and fork schedule.
Not all mismatches indicate misconfiguration. For example, a beacon node may not yet support a newly introduced parameter such as ATTESTATION_DUE_BPS. In such cases, preventing startup would be undesirable.
You can now instruct Vero to ignore mismatches by providing the --ignore-spec-mismatch CLI flag.
🔒 Security Assessment Findings
A security assessment of Vero’s critical components was conducted recently by Sigma Prime.
- All findings have been addressed in this release
- No high or critical severity issues were identified
- The full report will be published separately
Related breaking changes:
-
Doppelganger detection
To improve the reliability of the doppelganger detection feature, Vero now retrieves validator liveness data from all connected beacon nodes. (In previous versions, Vero only used the first beacon node).
If you're using the doppelganger detection feature (
--enable-doppelganger-detection) ensure Vero can poll validator liveness data from all connected beacon nodes. Some client implementations require additional CLI flags for this:Client Flag Grandine --track-livenessTeku --beacon-liveness-tracking-enabled=true
🔑 Keymanager API
-
Token File Permissions (Breaking Change)
The Keymanager API token file now requires owner-only permissions (600).
Action required:
- If using Eth Docker, upgrade to v26.4.1 (2026-04-19) or later - it will take care of this change automatically
- Otherwise:
- Update file permissions manually to 600, or
- Delete the existing token file and let Vero recreate it on startup
-
Error Response Codes
Keymanager API error responses have been standardized as a result of resolving ambiguity around 404 status codes.
In this Vero release you may receive status code
404(or400) in cases where previously status code500was returned.If your integration depends on previous behavior, please review the changes and update accordingly.
🧪 Experimental Integrations
A special shoutout to the remote-signer-dirk-interop project which provides early support for using Vero with the Dirk remote signer.
How it works:
- Runs as a lightweight HTTP service implementing the standard Ethereum Remote Signing API (compatible with Web3Signer)
- Receives signing requests from Vero
- Forwards those requests to a Dirk signer, acting as a translation/proxy layer
Changes included in this release
Features
- Log number of validators during initialization by @eth2353 in #272
- Add
--ignore-spec-mismatchflag by @eth2353 in #269 - Use Grandine's SSZ crates for block proposal flow by @eth2353 in #281
- Disable remote signer health polling task if endpoint not supported by @eth2353 in #306
Bug Fixes
Maintenance
- Bump
urllib3to 2.6.3 by @eth2353 in #266 - Refactor
BlockProposalService.propose_blockby @eth2353 in #264 - Refactor
SyncCommitteeService.produce_sync_message_if_not_yet_producedby @eth2353 in #265 - Unify error handling across validator duty services by @eth2353 in #267
- Bump dependencies by @eth2353 in #268
- Update docs by @eth2353 in #270
- Bump protobuf by @eth2353 in #275
- Bump dependencies by @eth2353 in #276
- Sum once while comparing aggregates and contributions by @eth2353 in #277
- Fix typos by @eth2353 in #278
- Add spec preset check job to CI workflows by @eth2353 in #280
- Gnosis preset: reduce
MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEPby @eth2353 in #282 - Improve feature comparison table formatting by @eth2353 in #286
- Add changelog for v1.3.2 by @eth2353 in #289
- Add note about
--ignore-spec-mismatchto spec mismatch error message by @eth2353 in #291 - Fix comment for
UPDATE_TIMEOUTin Gnosis preset by @eth2353 in #295 - Add changelog for v1.3.3 by @eth2353 in #294
- Use GitHub actions cache to speed up image builds by @eth2353 in #296
- ci: remove --disable-pip from pip-audit workflow by @vero-ciraptor in #298
- Bump aiohttp to 3.13.5 by @eth2353 in #302
- Address security assessment findings by @eth2353 in #308
- Bump dependencies by @eth2353 in #309
- Fix typo in test name by @eth2353 in #310
- Apply fixes for code quality findings by @eth2353 in #311
- Use 7 day dependency cooldown by @eth2353 in #312
- Update changelog for v1.4.0 by @eth2353 in #313
Full Changelog: v1.3.3...v1.4.0