Skip to content

Releases: ObolNetwork/charon

v0.17.0 - 2023-08-21

21 Aug 16:05
4c90ca0
Compare
Choose a tag to compare

Obol Logo

We are thrilled to announce the release of v0.17.0 of Charon, delivering major enhancements in terms of MEV support (still in beta), network performance, and duty result analysis.

Notable Improvements:

  • #2172 introduces improved MEV support for newly formed clusters using the latest v1.7.0 cluster definition and lock files. Keep in mind, this enhanced MEV support is still in the beta phase for this release, but we anticipate general availability in the near future.
  • #2203 provides a significant performance improvement by decreasing the P2P networking bandwidth over 50%. This reduction is achieved by serialising data as SSZ instead of JSON, greatly benefiting consensus on block proposals with large payloads.
  • #2200 offers improved chain inclusion tracking as part of duty result analysis. As a result, duties will now only be marked successful if they have been included on-chain. This change enhances previous behaviour that marked duties as successful only if they were successfully broadcasted to an upstream beacon node.

Breaking Changes ⚠️⚠️⚠️

#2203 introduces network changes that isn't compatible with v0.15.0. So v0.17.0 is only compatible with v0.16.0.

Make sure all nodes in the cluster are upgraded to v0.16.0 before proceeding with the upgrade to v0.17.0.

Full Changelog: v0.16.0..v0.17.0

Feature

Bug

  • Inclusion checker bug #2415 (#2424)
  • Ensure that ENRs are unique when verifying the definition | Charon #2296 (#2297)
  • Workflows using wrong image tag #2367 (#2368)
  • dkg: private key lock file not deleted properly on successful run #2258 (#2257)
  • p2p: stream scope not attached to a protocol errors #2259 (#2260)
  • Fix unmarshal issues with go-eth2-client version v0.17.0 #2333 (#2353)
  • Cluster failing attestations with mixed node versions #2386 (#2387)
  • Missing flags error on create cluster command #2444 (#2445)
  • goroutine leak in charon-perf-1 #2439 (#2452,#2447,#2448)
  • align hash timestamp to eth2 #2436 (#2430)
  • Outbound stream limit reached #2277 (#2290,#2289,#2278)
  • new memory leak alert on v.0.17-dev #2438 (#2443)

Refactor

  • Clone explicit builder version to eth2util #2466 (#2470)
  • Eager dlinear reporting consensus duration greater than legacy inc timer #2337 (#2425)
  • incorrect error message when number of addresses don't match number of validators #2340 (#2372)
  • parsigex can't unmarshal blinded blocks #2433 (#2462,#2459,#2434)
  • Make the folder output structure from create cluster compatible with charon run defaults #2302 (#2392)
  • Pre-generate validator registrations #2172 (#2238)
  • manifest file should contain SignedMutationList #2472 (#2473)
  • Remove default values for critical flags #2341 (#2380)
  • Remove support for stream-delimited wire protocols #1934 (#2350,#2350)
  • Track duty failing reasons on aggregate dashboard #1382 (#2242)

Test

  • Fix panic in testutil/validatormock/synccomm.go #2347 (#2349)
  • Nightly tests are failing #2239 (#2273,#2267)
  • Develop a test suite to ensure regressions don't happen on blinded blocks #2317 (#2356)

Misc

  • Deprecate old networks kiln and ropsten #1633 (#2314)
  • Fix flapping TestSimnetDuties/builder_registration_with_teku #2282 (#2284)
  • Change current config version to v1.6 #2246 (#2247)
  • nil Pointer References from Protobuf Messages. #1997 (#2338)

v0.16.0 - 2023-06-20

20 Jun 18:22
05f8a64
Compare
Choose a tag to compare

Obol Logo

We are excited about this new v0.16.0 release of charon which includes the fixes from our soon to be announced audit, as well as a number of performance and stability improvements.

Notable improvements:

  • #1991 is the tracking ticket for multiple fixes related to the Sigma Prime audit. These fixes mostly relate to more robust data validation.
  • #2117 adds a new feature flag that A/B tests a new QBFT round timing strategy. The aim is to monitor the performance of this new strategy compared to the existing strategy and hopefully enable it by default in v0.17. This A/B testing feature can be enabled via the --feature-set=alpha or --feature-set-enable=qbft_timers_ab_test flag.
  • #1382 introduces a new metric core_tracker_failed_duty_reason_total that counts the number of duty failed duties by type and reason which makes is much easier to identify why duties are failing.

Note that v0.16 doesn't introduce any breaking changes so has the same backwards compatibility as v0.15, it is therefore compatible with both v0.15 and v0.14.

Full Changelog: v0.15.0..v0.16.0

Feature

Bug

  • RLP Length in Bits Rather Than Bytes (OBOL-13) #2076 (#2081)
  • Verify QBFT justifications #1923 (#2079)
  • p2p: stream scope not attached to a protocol errors #2259 (#2260)
  • dkg: private key lock file not deleted properly on successful run #2258 (#2257)
  • Incorrect attestation inclusion check #2130 (#2223,#2168)
  • Duplicate Keys Allowed in ENR (OBOL-14) #2054 (#2073)
  • Prevent mutexes from holding locks while doing I/O #2028 (#2027)
  • Outbound stream limit reached #2277 (#2291)
  • Lack of Size Checks When Slicing Arrays (OBOL-05) #2052 (#2077)
  • sigagg Does Not Ensure t Partials Are Received (OBOL-16) #2053 (#2061)
  • Error while combining 1000 distributed keys #2151 (#2178,#2167)
  • Incorrectly ignoring attestation aggregation failures #1348 (#2086)

Refactor

Test

Misc

  • Add linter to disallow import of testutil into production packages #1683 (#2143)
  • Set app/version at build time for tagged releases #2097 (#2232)
  • Tagged release versions not overwritten to app.Version. #2270 (#2276,#2275,#2274,#2272)
  • nil Pointer References from Protobuf Messages. #1997 (#2090,#2088)
  • Update deposit cli version to v2.5.0. #2067 (#2074)
  • Use main/release branch version when tagging docker images #2098 (#2233)
  • Change current config version to v1.6 #2246 (#2247)

v0.15.0 - 2023-04-12

12 Apr 15:02
0da35ae
Compare
Choose a tag to compare

Obol Logo

We are excited about this new v0.15.0 release of charon which focuses on performance and stability.

Notable improvements:

  • #1904 completes the QBFT wire protocol migration resulting in a substantial decrease in bandwidth requirements for block proposals. This addresse sporadic block proposal failures in large geo-distributed clusters.
  • #1889 refactors the DKG wire protocol to use "reliable-broadcast" making our DKG more robust against byzantine peers.
  • #1895 enforces matching DKG minor versions, this mitigates problems caused by users running different versions of the DKG protocol.

Breaking Changes ⚠️⚠️⚠️

  • #1904 removed support for v0.13.0 legacy consensus wire protocol. v0.15.0 is therefore only compatible with v0.14.0. Only upgrade to v0.15.0 if all other nodes in the cluster are on v0.14.0 or newer.
  • The --network configuration flag in the charon create cluster and charon create dkg commands now default to mainnet. It does not default to goerli like previously anymore.

Full Changelog: v0.14.2..v0.15.0

Feature

Bug

Refactor

  • Output all combined keystores to a single directory #1836 (#1876)

Misc

  • Deploy latest promrated on updates without manual change #1964 (#1965)
  • Charon README review for Alpha #1968 (#1983)

v0.14.3 - 2023-03-21

21 Mar 20:05
Compare
Choose a tag to compare

Obol Logo

This release introduces a fix to the unexpected libp2p relay NO_RESERVATION errors which result in network connectivity issues in charon dkg and charon run.

This is a high priority patch release and all users are strongly encouraged to upgrade as soon as possible.

Full Changelog: v0.14.2..v0.14.3

Bug

  • Unexpected NO_RESERVATION errors #1913

v0.14.2 - 2023-03-16

16 Mar 12:46
36512d8
Compare
Choose a tag to compare

Obol Logo

This release introduces a fix to the container health check mechanism. It also fixes a bug in the --split-existing-keys argument.

Full Changelog: v0.14.1..v0.14.2

Bug

v0.14.1 - 2023-03-13

14 Mar 11:53
c3fe208
Compare
Choose a tag to compare

Obol Logo

Release v0.14.1 fixes an issue introduced in v0.14.0 related to parsing charon-enr-private-key with trailing newlines, see #1875.

This is a low priority release only required for operators facing the following error:Error: load priv key: decode private key hex: encoding/hex: invalid byte.

Full Changelog: v0.14.0..v0.14.1

v0.14.0 - 2023-03-10

10 Mar 13:02
b6741d4
Compare
Choose a tag to compare

Obol Logo

We are excited about this new v0.14.0 release of charon. This release will be our first under a new Business Source License, which will be used to guide the gradual roll out of DVT onto mainnet over the coming year. This release also includes the first step of reducing the consensus protocol network bandwidth requirements, along with general bug fixes and performance improvements. Most importantly, this release adds provisional attestation support for Nimbus, Lodestar and Prysm validator clients, meaning every Ethereum validator client can attest as part of a distributed validator cluster. 🎉 Finishing the remainder of the duties is a work in progress, and you can view the latest client support at https://dvt.obol.tech/

⚠️⚠️⚠️ Breaking Changes.

  • #1552 removed support for v0.12.0 legacy consensus wire protocol. v0.14.0 is therefore only compatible with v0.13.0. Only upgrade to v0.14.0 if all other nodes in the cluster are on v0.13.0 or newer.
  • --withdrawal-address and --fee-recipient-address have been renamed to --withdrawal-addresses and --fee-recipient-addresses, to allow you to specify an array of addresses if you want to have different addresses per validator in the cluster. As these flags are only used once-off to prepare a cluster, the impact of the change should be negligible.

The following flags have been removed and is no longer supported from this release:

  • p2p-bootnodes: Renamed to p2p-relays
  • p2p-bootnode-relay: Always enabled.
  • p2p-bootnodes-from-lockfile: Not supported anymore.
  • p2p-udp-address: Discv5 not supported anymore.

The following port is no longer in use by DiscV5, and can be closed if it was opened/port forwarded previously.

  • UDP/3630

Some notable features and fixes:

  • #1866 fixed a data race condition in scheduler
  • #1827 fixed a memory leak
  • #1626 replaced the deprecated kryptology BLS crypto library in charon with Herumi BLS.
  • #1503 adds support to import DKG generated keys to a keymanger-api such as Web3Signer.
  • #1552 upgrade the consensus wire protocol to support reduced bandwith in the next release.

All operators are encouraged to upgrade to this release as soon as possible to ensure smooth upgrade to v0.15.0 that will greatly reduce the consensus network bandwidth requirements thereby removing support for v0.13.0.

Full Changelog: 2cddcf0...v0.14.0

Feature

Bug

  • Issue with p2p connection type metric #1790 (#1798,#1792,#1791)
  • Promrated needs authentication token and is failing silently #1738 (#1746,#1739)
  • Cluster definition hash incorrect for empty addresses or signatures #1689 (#1695)

Refactor

Test

Misc

v0.13.0 - 2023-01-17

17 Jan 20:14
2cddcf0
Compare
Choose a tag to compare

Obol Logo

We are excited about this new v0.13.0 release of charon that introduces a big upgrade to the networking model, along with general fixes and performance improvements from our recent load-testing efforts.

⚠️⚠️⚠️ #1555 removed support for v0.10.0 legacy consensus wire protocol. v0.13.0 is therefore only compatible with v0.11.0 and v0.12.0. Only upgrade to v0.13.0 if no other node in the cluster is on v0.10.0.

The UDP-based discv5 peer discovery protocol has been deprecated (and will be removed completely in the next release). It has been replaced with the native libp2p-based peer discovery using external relays. This requires all peers in a cluster to connect to at least one common relay to find and establish a direct p2p connection with one another at boot.

We also took the opportunity to rebrand these "bootnodes" as "relays", as these connections can occur at more than just the boot phase but also when a direct connection between peers fails to be established (this is not suitable for production, your validator will be slower than with a direct connection). It also aligns the naming closer to an mev-relay, which although not the same, share some similarities and as such can help a new user become familiar with the trust assumptions that might be entailed by their selection of relay. Obol intends to make it easy to self-host independent relays, and will work with other organizations in the space to host some alternative relays to the Obol hosted ones to improve network resilience and decentralization.

One other change to be aware of is that we have started to monitor the health and readiness of validator clients that connect to charon, by confirming whether they are requesting information about all of the distributed validator key shares this client will operate. This monitoring feeds into Charon's health and readiness endpoints. If you notice your charon client's container health failing, flapping, or otherwise behaving unexpectedly after this release, do let us know.

The following flags have been deprecated (and will be removed in the next release):

  • p2p-bootnodes: Renamed to p2p-relays
  • p2p-bootnode-relay: Will always be enabled from next release.
  • p2p-bootnodes-from-lockfile: Will not be supported from next release.
  • p2p-udp-address: Will be removed in next release.

The following bootnode URL has been deprecated (and will be removed in the future once enough operators have upgraded to a version supporting the new default relay):

  • http://bootnode.lb.gcp.obol.tech:3640/enr

As part of the networking change, this release adds a new bootnode/relay URL alongside the old one. Charon clients are capable of relying on multiple relays and only need one common relay between peers to function. Once every operator in your cluster is running at least v0.13 or newer, it will be safe to remove all references to the old bootnode URL. If you remove reference to it too soon, operators that have not updated to the new relay will be left behind and will be unable to find your client at the old bootnode.

All operators are strongly encouraged to upgrade to this release as soon as possible to ensure a smooth upgrade to the subsequent v0.14.0 release.

Full Changelog: v0.12.0..v0.13.0

Feature

  • Detect all validators queried by VC #1501 (#1609,#1599,#1597,#1566)
  • Add support for p2p external IP and Hostname to relay discovery #1590 (#1604)
  • Use case v1 priority protocol #1421 (#1485)
  • Track attestation inclusion distance #1254 (#1468)
  • Synthetic block proposals #1486 (#1544,#1539,#1533,#1499,#1497,#1487)
  • Add metrics for consensus components #1247 (#1526)
  • Introduce "partial cluster definition" which contains the creator data but without operators or a definition hash (empty operators and empty definition_hash). #1488 (#1520)
  • peerinfo protocol to bootnode #1521 (#1536)
  • Scheduler duties not trimmed #1584 (#1596)
  • AggSigDB data not trimmed #1582 (#1598)
  • Improve error message when VC key share index doesn't match charon index #947 (#1601,#1586)
  • Prometheus metrics for bootnode observability #1506 (#1534,#1512)
  • Investigate dropping discv5 for pure libp2p stack #712 (#1496)
  • core/tracker: track inclusion distance #1446 (#1473)
  • Add cluster name, hash, peer and network to pushed loki labels #1509 (#1511)

Bug

Refactor

  • Rebrand bootnodes as relays #1524 (#1610)
  • Deprecate discV5 #1606 (#1607)
  • Clock diff still includes connection opening delay #1494 (#1592)
  • Make DKG program fault tolerant during 'connecting to peers' phase. #1475 (#1495)
  • Discv5 stale bootnode do not resolve #139 (#1489)
  • Revert partial definition concept #1591 (#1602)

Test

  • Make compose tests more robust #992 (#1466)

Misc

v0.12.0 - 2022-11-18

21 Nov 12:08
e7cbb56
Compare
Choose a tag to compare

Obol Logo

We are excited to release v0.12.0 of Charon, it adds a bunch of new features and client improvements! It is a non-urgent release and is backwards-compatible with v0.11.0 and v0.10.0. The most notable addition is support for Sync Committee Contributions (or sync committee aggregations), the final validator client duty to be implemented.

Notable features:

  • #1360 introduces version v1.4 of the cluster definition adding support for a creator to set up a cluster who is not part of the operators.
  • #1406 removes the need to run the loki docker driver in docker-compose by sending logs directly to loki if enabled.
  • #1450 improves support for debugging QBFT consensus by providing an endpoint to download recent messages (similar to pprof).

Note that since this release is backwards compatible, no upgrade coordination is required between operators in a cluster. Each operator can merely upgrade on their own. As long as threshold nodes (m of n) are always up and running, no attestations will be missed.

Full Changelog: v0.11.0..v0.12.0

Feature

  • Add support for DutySyncContribution to validatorapi #1267 (#1363)
  • Add creator to cluster definition #1360 (#1362)
  • Sniff QBFT messages #1450 (#1452)
  • Replace loki docker plugin with built-in loki spout #1406 (#1425,#1337)
  • Integrate DutyPrepareSyncContribution #1262 (#1384)
  • Add support for verifying signatures for sync committee contribution duties #1264 (#1373)
  • Add support for DutyPrepareSyncContribution to validatorapi #1260 (#1374)
  • Charon clusters can agree on supported versions #1380 (#1387,#1385)
  • Add support for DutySyncContribution to fetcher #1266 (#1355)
  • Track inconsistent partial signature data #1342 (#1343)
  • Add DutySyncContribution to DutyDB #1270 (#1364)
  • Add support for DutySyncContribution to scheduler #1265 (#1336)
  • Integrate DutySyncContribution #1268 (#1388)
  • Add support for DutySyncContribution to bcast #1269 (#1371)

Bug

  • Fix random panic bug #1389 (#1392)
  • Current connections is not a valid proxy for peer connectedness #1426 (#1435)
  • core/tracker: detect inconsistent partial signed data #1343 (#1359)
  • Aggregate attestation fails with inconsistent data #1347 (#1356,#1350,#1349)
  • eth2wrap returns zero slot duration sporadically on shutdown. #1326 (#1378)
  • Short lived relay connections in low latency deployments #1420 (#1419)

Refactor

  • Extract signing root function for all eth2 types #920 (#1372,#1361)
  • core/priority: refactor to fix deadlock #1429 (#1433)
  • Add support for sync committee contribution duties to parsigex #1263 (#1375)
  • Distinguish between creator and operator config signature #1394 (#1395)

Test

  • Table tests for core component duties #921 (#1390)

v0.11.0 - 2022-10-20

21 Oct 06:24
29e8f26
Compare
Choose a tag to compare

Obol Logo

We are excited to release v0.11.0 of Charon, it adds a bunch of new features and client improvements! Most notably, we added support for Sync Committee Messages, one of the last remaining incomplete duty types for a validator client. This solves the infrequent problem of a validator receiving significant penalties when they are assigned to sync committees. This release also contains most of the work for validator aggregation and sync contribution duties, the final two duties a distributed validator must correctly implement. More to come on their full support in coming releases.

Other notable features in this release include:

🚨🚨🚨 Important change for those running the quickstart repo 🚨🚨🚨
The latest version of the charon-distributed-validator-node repo requires the loki docker driver.
Install it with: docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
This enables us to provide logging related metrics in the grafana dashboards

Full Changelog: v0.10.1..v0.11.0

Feature

Bug

  • Log format not applied to all logs #1272 (#1277)
  • Consensus upgrades not backwards compatible #1222 (#1223)
  • Peerinfo sometimes return zero sent at timestamp #1295 (#1304)

Refactor

Test

  • Integrate test for priority protocol with consensus #1207 (#1221)

Misc

  • Release cluster definition version 1.3 #1204 (#1289)
  • Handle DutyAggregator participation in tracker #1213 (#1236)
  • Add metric to understand how many clusters are running through relays #1243 (#1252)