We are excited to release v0.10.0 of Charon, it is jam-packed with lots of features and improvements! This release is our largest to date, and it couldn't have been completed without the help of our dedicated community and the Athena testnet participants. Over the last month over 100 distributed validator clusters have been created between community members around the world. This release incorporates all of the bug fixes and resilience improvements highlighted by our dedicated testers, and it should be much more fault-tolerant and self healing than our v0.9 release.
⚠️⚠️⚠️
Note this release introduces breaking changes to block proposal and the default bootnode flag. All nodes in an existing cluster should therefore upgrade at roughly the same time.Partially upgraded clusters without a quorum of nodes on either v0.9.0 or v0.10.0 will fail to attest. E.g., if half the cluster is on v.0.9.0 and the other half is on v0.10.0 then there isn't a quorum on either version and they will not be able to connect via the same default bootnode or propose blocks. Once a threshold of operators have upgraded your validator should come back online. In future, upgrades aim to be completely asynchronous between cluster operators.
Some notable features:
- #809 and #849 adds support for the builder API's blinded beacon blocks. This makes charon MEV-boost compatible, though work is still ongoing to support blinded beacon blocks with every validator client.
- #891 and #848 introduces a new version
v1.2.0
of the cluster definition and lock files refactoring all base64 fields to hex and removing the operatornonce
field. All previous definition and lock versions are however still compatible. - #768 and #821 adds tracking of duties adding metrics and improved logging of failed duties and peer participation.
- #952 removes the need to restart charon nodes if a bootnode ENR changes when resolved via HTTP. Adding support for stateless bootnodes.
- #960 improves support for multiple beacon nodes by calling them parallel instead of sequentially.
- #1029 updates the default bootnode flag to http://bootnode.lb.gcp.obol.tech:3640/enr which is Obol's new horizontally scaleable bootnode solution.
Full Changelog: v0.9.0..v0.10.0
Feature
- Explicit failed duty tracking #768 (#857)
- Validate cluster definition and lock files #589 (#1014)
- Improve analyze participation #855 (#971)
- Test, document and make observable a validator exit #907 (#922)
- Refactor cluster definition and lock fields to hex #848 (#854,#851)
- Continuously re-resolve HTTP bootnode ENRs #952 (#968)
- Move partial signature verification to parsigdb #217 (#967,#956,#953,#916,#912)
- Remove operator nonce from cluster definition #891 (#1018)
- Call multiple beacon nodes in parallel #960 (#1012)
- Analyse Cluster Participation #821 (#846)
- Duty Builder Registration - Builder Spec Implementation #849 (#988,#975,#957,#927,#915,#903,#881,#888,#884,#871,#870,#869,#864,#853,#852)
- Duty Builder Proposer - Builder Spec Implementation #809 (#962,#858,#850,#847,#838,#837)
- DutyBuilderRegistration Re Broadcast Every Epoch #1009 (#1008)
Bug
- Trackers always detects randao events as unexpected #993 (#996)
- Locally created clusters should verify #1025 (#1026)
- Incorrect ENR base64 format #970 (#1011)
- Multiple Beacon Nodes #552 (#840)
- Update readyz gauge asynchronously #880 (#867)
- Memory leak #974 (#978,#977)
Refactor
- p2p: invert peer discovery integration #989 (#991)
- Refactor randao core signed data implementation #919 (#1019)
- Improve failed duty message #866 (#972)
- Add
--num-validators
,--name
and--fee-recipient
flags to create cluster #879 (#878) - Update
prater
togoerli
in deposit data and CLI #935 (#943) - Set
threshold
automatically incharon create dkg
#894 (#917) - Improve libp2p connection logs #986 (#1001)
charon create enr
overwrites an existing one on disk #893 (#913)- Invert libp2p peer discovery #985 (#989)
Test
- Flapy integration test #910 (#932)
- Flapy test in monitoringapi_internal_test #886 (#934)
- Add timestamp to cluster definition file #710 (#833)