Repository navigation
v1.11.1 - 2026-10-13
⚠️ This release is NOT Gloas-ready. It is a patch release on top of v1.11.0 for the current fork only. A Gloas-ready release of Charon for Hoodi will be published in the upcoming days, and one for mainnet shortly after.
This is a recommended patch release of Charon v1.11.1. It hardens the chain_split_halt feature flag, invalidates cached duties that a lagging beacon node computed from a stale chain view, and bundles a number of stability and security fixes. Feedback is welcome and appreciated, please use github issues or discord if you have trouble with this release.
Read the rest of the release notes for more:
Full Changelog: v1.11.0..v1.11.1
Hardened chain_split_halt
With chain_split_halt enabled, a node now rejects the leader's attestation proposal if it includes a validator the node has no attester duty for, or a validator whose duty assignment (slot, committee, position) differs from the local one. Previously such validators were skipped, so a leader whose duties came from a stale shuffling could lead the cluster into agreeing on attestation data for the wrong set of validators, leaving the validators actually due in that slot with nothing to sign. A leader proposing for a subset of the local validators is still accepted.
This makes the flag stricter: a node that disagrees with the leader now withholds its vote and a different leader takes over in the next round. If more nodes disagree than the cluster's fault tolerance allows, the slot stalls instead of signing data the cluster does not agree on.
Recommendation: if you run with chain_split_halt enabled and upgrade to this version, we recommend also enabling sse_reorg_duties (--feature-set-enable=chain_split_halt,sse_reorg_duties or CHARON_FEATURE_SET_ENABLE=chain_split_halt,sse_reorg_duties). It lets the scheduler drop and re-resolve duties that turn out to be stale after it has already resolved the epoch, which keeps the window in which chain_split_halt has to reject proposals as short as possible.
Stale duties invalidation
A beacon node that imports the last block of an epoch late can serve next-epoch attester duties computed from the wrong RANDAO seed. Because the late import only extends its chain, no chain_reorg event fires and those duties previously stayed cached for the whole epoch. Charon now compares the duty dependent roots of every beacon node head event with the dependent root of the cached attester duties, and on a mismatch invalidates the affected cached duties exactly as a chain reorg would. This is always on and needs no feature flag. Mismatches are counted by the new app_beacon_node_sse_dependent_root_mismatch_total metric, labelled by beacon node address.
Feature
- Invalidate cached duties on beacon node dependent root mismatch (#4774)
Bug
- Reject leader attestation proposals with unknown or mismatched duties under
chain_split_halt(#4773) - Fix startup hang when the execution client is unresponsive #4689 (#4694)
- Don't close the execution client reconnect channel on shutdown (#4699)
- Bind received partial signatures to the sending peer's share index (#4705)
- Recover from panics in p2p stream handlers instead of crashing the node (#4706)
- Perform sync committee duties for exited validators #4711 (#4712)
Misc
- Bump
grpctov1.83.1(GO-2026-6348) andgolang.org/x/nettov0.60.0(GO-2026-6617,GO-2026-6612) (#4674,#4775) - Bump version through
v1.11rc and stable (#4713,#4780)
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
- build(deps): Bump the go-dependencies group with 7 updates (#4674) by @dependabot
- app/eth1wrap: avoid startup hang (#4694) by @b0a7
- app/eth1wrap: don't close reconnectCh on shutdown (#4699) by @KaloyanTanev
- core/parsigex: bind partial signature sender to share index (#4705) by @KaloyanTanev
- p2p: recover stream handler panics to avoid node crash (#4706) by @KaloyanTanev
- core: perform sync committee duties for exited validators (#4712) by @KaloyanTanev
- app/version: bump to v1.11-rc (#4713) by @obol-platform
- core/consensus: reject leader duties unknown locally (#4773) by @KaloyanTanev
- app/sse: invalidate duties on dependent root mismatch (#4774) by @KaloyanTanev
- *: bump golang.org/x/net to v0.60.0 (#4775) by @KaloyanTanev
- app/version: bump v1.11 to stable (#4780) by @obol-platform
