Releases: ObolNetwork/charon
v0.10.1 - 2022-09-30
This is a non-urgent release primarily aimed at improving Obol's central monitoring by adding cluster labels to all prometheus metrics.
Operators with a configured monitoring token are encouraged to upgrade.
Note that since we follow trunk based development, it also includes all other changes to the main branch since the previous release.
Full Changelog: v0.10.0..v0.10.1
Feature
- Add support for
DutyPrepareAggregator
in parsigex #1065 (#1087) - Add v2 attestation aggregation interface #1061 (#1073)
- Add support for attestation aggregation endpoints to
validatorapi
#1094 (#1116,#1121,#1120) - Add support for
DutyAggregator
to fetcher #1088 (#1118) - Add
CalculateCommitteeSubscriptionResponse
function toeth2exp
#1091 (#1098) - Verify charon-enr-private-key matches lock file before p2p setup #937 (#1181,#1157)
- Add support for
DutyPrepareAggregator
to bcast #1068 (#1085) - Add support for
DutyAggregator
toparsigex
#1095 (#1122) - Add support for
v1.BeaconCommitteeSubscriptionsSubmitter
to bcast #1093 (#1112) - Refactor cluster definition hash spec #1082 (#1101)
- Wire
DutyPrepareAggregator
#1069 (#1150,#1144) - Add support for
DutyAggregator
to bcast #1096 (#1123) - Update tracker failure reasons for DutyPrepareAggregator and DutyAggregator #1154 (#1164)
- Add support for
DutyAggregator
to DutyDB #1115 (#1139) - Add
core.SignedData
implementation for sync committee types #1177 (#1202) - Add eth2-client interfaces for sync committee duties #1199 (#1200)
- Add support for
DutyAggregator
to Scheduler #1075 (#1113,#1114) - Add new duty types for sync committee duties #1174 (#1198)
- Fetcher to query DutyDB for attestation data for DutyAggregator #1146 (#1148)
charon dkg
can take a remote URI for a DKG cluster-definition #1045 (#1070)- Add
DutyPrepareAggregator
to DutyDB #1064 (#1080,#1076) - Refactor participation metrics to counters #1109 (#1175)
- Add support for
DutyPrepareAggregator
to validatorapi #1067 (#1110,#1079)
Bug
- Invalid lock hash for legacy config with checksummed addresses #1153 (#1156)
- Add "cluster_id" label to charon metrics #1142 (#1165,#1160)
- Charon create dkg overwrites the cluster-definition file #1062 (#1111)
- Fix EIP712 signatures #1149 (#1147)
Refactor
- Drop data-dir in favour of explicit paths #994 (#1083)
- Bypass definition hash verification with
--no-verify
flag #1084 (#1099)
Misc
v0.10.0 - 2022-08-25
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)
Misc
v0.9.0 - 2022-07-21
This is a non-urgent release introducing general fixes and improvements.
- #710 adds a
Timestamp
field to the cluster definition file making it easier to identify for humans. The new definition version isv1.1.0
, the previousv1.0.0
definition version is however still supported. - #552 adds support for multiple beacon nodes leveraging go-eth2-client's multiclient feature. The
--beacon-node-endpoint
flag is deprecated in favour of--beacon-node-endpoints
that support a comma separated list of beacon nodes. - #764 introduces an experimental alpha feature that attempts to sync slot scheduling with the beacon node clock using event stream
head
events. It can be enabled with--feature-set=alpha
orfeature-set-enable=beacon_clock_sync
flags. Note even if not enabled, the clock offset can be monitored via the prometheus metriccore_scheduler_beacon_node_offset_seconds
. - #781 pushes docker images to Dockerhub, so
docker pull obolnetwork/charon:v0.9.0
also works now. Note previous versions have not been backfilled though. Dockerhub provides slightly better UX than Github Container Registry since no login is required.
Full Changelog: v0.8.1..v0.9.0
Feature
- Multiple Beacon Nodes #552 (#830)
- Add timestamp to cluster definition file #710 (#831,#818)
- Load balance resolved bootnodes #786 (#816)
- scheduler: sync with beacon node clock to mitigate slot timing issues #764 (#779)
Bug
Refactor
Misc
v0.8.1
v0.8.1 - 2022-07-09
This release introduces general fixes and improvements including progress on great new features.
Full Changelog: v0.8.0..v0.8.1
v0.8.0 - 2022-07-08
This release introduces general fixes and improvements including progress on great new features.
Full Changelog: v0.7.0..v0.8.0
Feature
- Add alive and ready monitoring endpoints #709 (#760)
- dkg: implement sync protocol #684 (#763,#748,#743)
Bug
- DKG sync: Move connected logs to server #762 (#771)
- DKG Sync Protocol: Fail server side if client sends wrong definition hash #761 (#772)
Refactor
v0.7.0 - 2022-06-22
This release introduces general fixes, UX improvements, refactor work, and the addition of some new features such as QBFT consensus being enabled by default.
Breaking Changes
This release updates the cluster-lock.json structure ahead of the introduction of the DV Launchpad based authentication of Node Operators. Lock files generated with earlier versions of charon will not work with this latest version. Future versions of the client will maintain backwards compatibility as far back as this new file format. If you are running a distributed validator with files generated with an earlier alpha version of charon, reach out to the team for specific upgrade instructions on how to regenerate your cluster-lock file with this new format.
Full Changelog: v0.6.0..v0.7.0
Feature
- p2p: robust intra-cluster broadcasting #635 (#681,#680,#675)
- Upgrade QBFT consensus to stable release #714 (#715)
Bug
- clashing read only cluster definition and lock files. #584 (#676)
- Proxy event stream from beacon node #688 (#696)
Refactor
- refactor: rename ports #732 (#740,#733)
- core: refactor signed data types to interfaces #698 (#717,#713,#708,#706,#699)
- core: add new SignedData interface and impls #699 (#705)
- Launchpad cluster definition creation issue #646 (#734)
- Change default p2pkey and datadir #702 (#694)
Test
Misc
v0.6.0 - 2022-06-07
This release introduces general fixes and improvements including progress on validator exits and DKG hardening.
Full Changelog: v0.5.0..v0.6.0
Feature
- Create a
charon create exit
command, to prepare exit data for an activated DV in a cluster #553 (#669,#667,#648) - Human friendly node/peer names #585 (#629,#624)
Bug
- dkg: command hangs if one peer drops out #586 (#671,#662)
- bootnode: circuit reservation resource issues #580 (#640)
- Implement compose to debug local docker-compose clusters #568 (#621)
Refactor
- Decrease complexity of scheduler resolveDuties #347 (#663)
- dkg: improve logging #587 (#633)
- p2p: remove --p2p-peerdb flag #644 (#657)
- p2p: add explanation of enr types in --p2p-bootnodes flag #643 (#658)
- p2p: rename --p2p-bootmanifest flag #642 (#660)
- keystore: path is a mandatory field in keystore files #567 (#622)
Test
Misc
v0.5.0 - 2022-05-26
This release introduces general fixes and improvements including progress on great new features.
Full Changelog: v0.4.0..v0.5.0
Feature
- Integrate QBFT into charon run #602 (#603)
- Add generic threshold aggregation functionality to DKG #522 (#564,#545)
- deposit: save deposit data in charon create cluster #554 (#557)
- Implement compose to debug local docker-compose clusters #568 (#607,#606,#605,#601,#600,#595,#593,#591,#590,#581,#578,#577,#576,#575,#571,#570,#569)
- prometheus: add cluster name and lockhash to all metrics #548 (#565)
- cmd: refactor charon create cluster to generate a cluster lock file #528 (#566)
- cmd: output deposit data in charon create cluster #549 (#561,#554)
- cmd: add flags for withdrawal address and network #555 (#556)
Bug
- cmd: ensure valid withdrawal address during create dkg command #582 (#599)
- cmd: ensure valid network during create dkg #583 (#598)
Refactor
- aligned cluster definition and lock filenames to dashes #588 (#594)
- app: refactor charon run to use cluster lock instead of manifest #527 (#562)
- QBFT: Do not buffer unjust messages #525 (#535)
- cmd: remove deprecated command charon create-cluster #550 (#551)
- QBFT: Mitigate OOM attack by spamming future messages #524 (#539)
- QBFT: Only trigger each upon rule once per round #523 (#536)
- refactor: replace verifiers with pubshares #596 (#604)
- cmd: remove config run scripts from create cluster #546 (#563)
- dkg: generate deposit_data #481 (#521)
v0.4.0 - 2022-05-13
This release introduces general fixes and improvements including Frost DKG and QBFT consensus core algorithms.
Full Changelog: v0.3.0..v0.4.0
Feature
- Add support for libp2p circuit relay #413 (#428,#421,#414)
- Implement Frost DKG #478 (#519,#518,#485,#483,#482,#479)
- QBFT opt-in beta consensus algo #445 (#517,#514,#513,#512,#509,#508,#507,#504,#503,#501,#500,#499)
- Refactor to use a create command with subcommands #442 (#497,#487,#484)
- Scheduler supports triggering duties at offset in slot #515 (#516)
- Support DutyProposer in sigagg #226 (#416)
- Add duty query API to scheduler #352 (#384)
- Implement stub dkg #439 (#440)
- Support DutyProposer in Broadcaster #227 (#418)
Bug
- Error: mkdir ./charon: not a directory #427 (#467)
- charon docker compose not working with latest charon #449 (#448)
Refactor
Test
Misc
v0.3.0 - 2022-04-12
This release introduces general fixes and improvements including progress on great new devops features like external p2p addresses
and charon bootnode
and charon create-cluster
commands as well as progress on DutyProposer
.
Full Changelog: v0.2.0..v0.3.0
Feature
- Use protobufs for parsigex transport #321 (#372)
- Add explicit gen-p2p command #315 (#316)
- Support DutyProposer in validatorapi (query phase) #224 (#382)
- Deploy and Integrate bulldozer bot #325 (#361,#357,#356)
- Add bootnode command #317 (#350,#318)
- Support DutyProposer in validatorapi (submit phase) #225 (#409)
- Add prometheus metrics for beacon node requests #362 (#377,#359)
- Log git commit hash on startup #367 (#378,#368)
- Add generic error handling and retry for temporary network failures #354 (#346)
- Support DutyProposer in DutyDB #223 (#326)
- Support resolving bootnode ENR by http query #329 (#330)
- Add support for external/advertised p2p addresses #332 (#333)
Bug
Refactor
- Change license to GPL V3 #190 (#391,#360)
- Align cli flags and defaults #369 (#370)
- Switch from scrypt to pbkdf2 ciphers for generated keystores #343 (#344)
- Add .golden extension to golden test files #353 (#358)