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
- Pre-generate validator registrations #2172 (#2238,#2219,#2214,#2208,#2205,#2202)
- Validate duty data #1922 (#2198)
- Validate received DKG messages #1888 (#2107)
- Upgrade all libp2p wire protocols to use length-delimited messages #1884 (#2212)
- Introduce cluster state data structure #1886 (#2199,#2197,#2193,#2190,#2187,#2182,#2175)
- Add lodestar to compose #1897 (#2128)
create dkg
config check (OBOL-19) #2093 (#2136)- Improve tracker participation metric #2034 (#2112,#2080,#2075)
- Teku migrated to SSZ block creation by default #1537 (#2063)
- verify reconstructed signature in sigagg (OBOL-17) #2122 (#2123)
- Switch to SSZ eth2 encoding in protobufs #2203 (#2210)
- Cache validators by pubkey in eth2client #1396 (#2121)
- Add deployment workflows for relays #2031 (#2082,#2032)
- dkg: generate deposit data #491 (#2150)
- Double QBFT timers for lead rounds #2092 (#2129,#2096)
- Extend inclusion delay logic to track failed attestation #1538 (#2124,#2120)
- Fix Sigma Prime Audit Results #1991 (#2115)
- Mitigate side-effects due to multiple
charon
commands running at the same time #1918 (#2109) - Add node_signatures to lock file #2204 (#2240,#2250,#2224)
- Regularly attempt direct dials even if relay conns exist #2114 (#2222)
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
- Benchmark different QBFT timing strategies #2117 (#2213,#2116)
- update outdated dependencies (OBOL-12) #2083 (#2089)
- Complete herumi migration #2055 (#2100,#2091)
- Track duty failing reasons on aggregate dashboard #1382 (#2242)
Test
- Nightly test doing long-running DKG #1971 (#2173,#2111)
- Flapping deadliner test #1721 (#2047)
- Fix issues found by beacon mock fuzz #1962 (#2137,#2105)
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)