Skip to content

v1.11.0

Latest

Choose a tag to compare

@KaloyanTanev KaloyanTanev released this 25 Aug 14:24
· 53 commits to main since this release
v1.11.0
e9f7121

v1.11.0 - 2026-08-25

Obol Logo

This is Charon's v1.11.0 release. Feedback is welcome and appreciated, please use github issues or discord if you have trouble with this release.

This release focuses on hardening and stability across consensus, DKG and networking. The release includes one wire-format change - a new per-subcommittee sync committee contribution format is negotiated automatically between nodes, only activating once a threshold of cluster peers advertise v1.11 or newer and otherwise falling back to the previous format. As always, we recommend upgrading all nodes in a cluster in close succession.

Read the rest of the release notes for more:

Full Changelog: v1.10.3..v1.11.0

Hardening and stability

This release is a substantial hardening and stability release. It bundles a large batch of QBFT consensus correctness fixes (rejecting zero-value and equivocating-leader messages, preserving local values on comparison failure), DKG and cluster definition/lock validation hardening, more robust partial signature exchange and p2p stream handling, a per-subcommittee sync committee contribution fix, and a fix for a potential code-injection vector in CI. See the Bug and Refactor sections below for the full list.

NAT hole punching improvements

Charon now uses libp2p's native EnableHolePunching() to establish direct connections between NAT'd peers, replacing the previous ForceDirectConnections approach that only succeeded when both peers happened to dial at the same moment. This should improve peer connectivity for operators behind NATs without requiring manual port forwarding.

Feature

  • Add support for cluster-definition v1.11 format #4265 (#4291)
  • Check fee recipient against local node configuration (#4474)
  • Surface remote cluster state in the list command (#4497)
  • Adopt beacon node v2 API endpoints (#4504)
  • Add p2p message send duration histogram metric (#4506)
  • Add metric tracking insufficient round-change messages #4478 (#4512)
  • Improve NAT hole punching for peer connectivity #4233 (#4516)
  • Adopt versioned proposer duties v2 endpoints (#4564)
  • Add metric for sync committee message cohorts (#4587)
  • Opt-in loading of incomplete validator_keys store (#4591)
  • Add dv_client field to the peerinfo protocol (#4632)

Bug

  • Fix CI, release workflow, and nightly test issues (#4451,#4452,#4513,#4588)
  • Fix pointer mutation bug in app/eth2wrap (#4486)
  • Improve fee recipient handling and defaults (#4490)
  • Fix SSE event proxying to validator clients (#4495)
  • Harden DKG and cluster definition/lock validation (#4514,#4590,#4634,#4635,#4636,#4638)
  • Fix various charon CLI command behaviours (#4523,#4559,#4577,#4579)
  • Fix deposit data fetching from the beacon API (#4526)
  • Add SSZ offset validation when decoding (#4529)
  • Fix non-deterministic QBFT linear round timer (#4537)
  • Fix voluntary exit signature aggregation (#4542)
  • Key DutyDB by committee index for aggregation #4006 (#4544)
  • Rework duty deadliner scheduling logic (#4552)
  • Fix metrics cardinality and proxy path labels (#4553,#4581)
  • Fix early duty fetch on head event (#4561)
  • Allow parsing of incomplete validator_keys store (#4576)
  • Fix potential code injection in CI workflow (#4598)
  • Harden partial signature exchange against malformed data (#4599)
  • Fix sync committee contribution and selection handling (#4602,#4610,#4615,#4641)
  • Fix core/priority protocol sorting and duty gating (#4611,#4643)
  • Fix QBFT consensus correctness and equivocation handling (#4619,#4622,#4623,#4624,#4628)
  • Fix p2p stream closing and relay query responses (#4626,#4629,#4642)
  • Fix slog handler panic on named types (#4640)

Refactor

  • Remove deprecated holesky testnet support (#4485)
  • Refactor consensus and QBFT message handling (#4505,#4557)
  • Harden fee recipient signing and fetching paths (#4571)
  • Improve DKG reshare and ceremony robustness (#4574,#4616,#4650)
  • Correct typo in p2p error message (#4578)
  • Add leading slash to priority protocol ID (#4605)
  • Remove noisy QUIC happy-path debug logs (#4645)

Docs

  • Refresh stale CLAUDE.md and README.md docs (#4573)
  • Refresh architecture and package structure documentation (#4580)
  • Auto-fetch latest client versions for release notes (#4597)

Test

Misc

Compatibility Matrix

❗ An issue between Lodestar BN and Lighthouse, Nimbus and Prysm VCs has been discovered. It has surfaced with testing latest versions of the above mentioned clients, however, it is applicable for multiple older Lodestar CL versions. Those duty failures are not related to Charon v1.11.0. If node operators are using any of those 3 combinations and are experiencing issues, we strongly recommend switching to different VC or BN until patches are released. We will keep this section of the release notes up to date with latest updates.

This release of Charon is backwards compatible with Charon >= v1.0, though only v1.7 and newer are Fulu-ready.

The below matrix details a combination of beacon node (consensus layer) + validator clients and their corresponding versions the DV Labs team have tested with this Charon release. More validator and consensus clients will be added to this list as they are supported in our automated testing framework.

Legend

  • ✅: All duties succeed in testing
  • 🟡: All duties succeed in testing, except non-penalised aggregation duties
  • 🟠: Duties may fail for this combination
  • 🔴: One or more duties fail consistently
Validator 👉 Consensus 👇 Teku v26.8.0 Lighthouse v8.2.2 Lodestar v1.46.0 Nimbus v26.7.0 Prysm v7.1.8 Vouch v1.13.0
Teku v26.8.0 🟡
Lighthouse v8.2.2 🟡
Lodestar v1.46.0 🟠 🟠 🟠 🟡
Nimbus v26.7.0 🟡
Prysm v7.1.8 🟡
Grandine v2.0.6 🟡

What's Changed