v0.13.0 - 2023-01-17
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 top2p-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
- Go routine leak in validatormock #1527 (#1528)
- Periodic clock offset spikes #1445 (#1474)
- Remove deprecated consensus wire protocol fields #1555 (#1556,#1554)
- core/dutydb: trim expired duties #978 (#1595)
- UponRule deduplication issue in QBFT #1493 (#1505)
- Create promrated utility to report validator metrics #1540 (#1575,#1574,#1569,#1562,#1553,#1548)
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)