[Mainnet] EigenDA v2.1.0
This release is optional but highly recommended for operators because it resolves a goroutine leak. It is optional for rollups and other proxy users.
This release follows the Blazar release (0.9.2), colloquially referred to as "v2", for all monorepo services, and proxy release 1.8.2. The eigenda-proxy repo is now archived and its codebase has moved under api/proxy. Monorepo releases will include proxy code moving forward.
We opted to bump the semver to 2.1.0 to match the v2 name and remove some confusion we have observed both internally and externally.
In order to keep our releases simpler for now, we opt to release all services of the monorepo together, following a single semver. We cannot for this reason commit to strictly following semver practices, and reserve the right to push breaking changes to auxiliary services such as the dataapi.
Monorepo-wide changes
One important change is that we deployed an EigenDADirectory contract to all chains, which should be used as the main contract address locator. See our docs network pages for more information.
- chore: bump to go1.24 by @samlaf in #1669
- chore: upgrade gnark-crypto 0.16->0.18 by @samlaf in #1755
- feat: eth client address directory by @hopeyen in #1691
- feat: Implement claude log preprocessing command by @litt3 in #1692
Validator Node
Fixes a goroutine leak that leads to CPU starvation over long time periods.
This release also adds a new flag NODE_EIGENDA_DIRECTORY
which takes advantaged of the newly deployed contract directory. In a future release we will be deprecating the NODE_BLS_OPERATOR_STATE_RETRIVER
and NODE_EIGENDA_SERVICE_MANAGER
in favor of NODE_EIGENDA_DIRECTORY
.
- feat: Validator blacklisting dispersers by @anupsv in #1588
- feat(littdb): improve file utilities by @cody-littley in #1684
- fix: properly set LittDB sharding factor for validators by @cody-littley in #1616
- fix: validator blacklist with mutex by @anupsv in #1673
- fix: thread pool leak by @cody-littley in #1770
- fix: v2 thread pool leak by @cody-littley in #1773
- fix: remove blacklist wiring from nodes by @anupsv in #1788
- test: LittDB benchmark by @cody-littley in #1647
- docs: documentation for database path configuration by @cody-littley in #1622
- docs: documentation for littDB snapshotting by @cody-littley in #1689
- docs: upload LittDB audit report by @cody-littley in #1706
Disperser
Mainly adding more observability, an audit fix regarding payments, and fixes a performance issue with validator connections.
- feat(disperser): Instrument the metadata store with metrics by @dmanc in #1606
- feat(disperser): new metrics for important thresholds by @cody-littley in #1577
- feat: grpc logging interceptor in v2 apiserver by @ian-shim in #1690
- fix(payments): period index calculation by @hopeyen in #1641
- fix: Initialize connection with validator in background goroutine #1769 by @cody-littley #1769
- refactor: combine api server and relay by @yujiezhu0 in #1645
Dataapi
Adds a payment subgraph that will be used for tracking reservation information in a followup release. Rest of changes are minor fixes / additions.
- feat: dataapi add stake amount to operator stake response by @pschork in #1677
- feat: Payments subgraph #1709 by @dmanc #1709
- fix(dataapi): fix time query_param serialization/formatting bugs by @samlaf in #1672
- fix: update dataapi v2 nodeInfo to call v2 validator API by @pschork in #1708
Contracts
The EigenDADirectory contract was added and deployed to all networks, and should going forward be used as the single source of truth for all EigenDA contract addresses.
- feat(contracts): Immutable threshold registry for EigenDAV1 cert verifier by @ethenotethan in #1658
- feat: add address directory by @pakim249CAL in #1676
- feat: enumerable names and script configs for address registry by @pakim249CAL in #1697
- feat(contracts): new DeployEigenDA script (used to deploy mainnet beta) #1675 by @pakim249CAL #1675
Integrations (contracts, clients, proxy)
This release introduces the CertVerifierV3 as well as the CertVerifierRouter which allows for secure upgrades to verification logic. See our custom security docs for more information. Take a look at our updated secure integration spec page for our latest thinking.
Note that the --eigenda.v2.cert-verifier-addr
flag has been changed to --eigenda.v2.cert-verifier-router-or-immutable-verifier-addr
since it now supports being passed either a CertVerifierRouter or CertVerifierV3 address.
Release 1.8.2 was only compatible with CertVerifierV2, wherreas 2.1.0 proxy is only compatible with CertVerifierV3, so do make sure to pass in a router or CertVerifierV3 address. Most importantly, V2 certs are still verifiable by the CertVerifierV3 contract because they only differ with V3 certs in the order of their fields. The CertVerifierV3 and up contracts however have a new checkDACert function interface that is future compatible. That function now requires the cert to be abi encoded, so do not use a CertVerifierV3 contract with previous releases of the proxy.
We added a .env.exampleV2.mainnet example env file for mainnet.
The --eigenda.v2.network
flag now also supports mainnet
. Note that this is purely a convenience and doesn't do anything special other than populating other flag values (disperser-url, cert-verifier-address, etc.) with the default values (that can be found in our docs or the new EigenDADirectory contract).
We reverted the NTP clock in the client, as we felt its implementation was not ideal, and we also believe clock control should be left to the controlling environment. Please make sure that the computer you are running proxy and/or clients on has a synchronized clock.
- feat: Cert Verifier Router Support by @ethenotethan in Layr-Labs/eigenda-proxy#384
- feat(contracts): Cert Verifier Router deploy script && inabox deployment by @ethenotethan in #1540
- feat(clients): v3 cert type with new interaction patterns with onchain
Router
&&CertVerifier
interfaces by @ethenotethan in #1532 - feat: add structured errors to verifier client by @samlaf in #1617
- feat!: use u8 for cert version by @pakim249CAL in #1632
- feat(proxy): Add
mainnet
network enum #1756 by @ethenotethan #1756 - fix(contracts): separate cert verifier interface by @pakim249CAL in #1579
- fix: Update retrieval clients to take in cert sum type interface by @ethenotethan in #1607
- fix: Update disperser client to take in logger vs initializing default one for ntp clock by @ethenotethan in #1651
- fix: Verify v2 cert instead of reflexively passing by @litt3 in #1648
- fix: disperser client deadlock by @samlaf in #1688
- fix: make disperser client backwards compatible by @samlaf in #1686
- fix: disperser_client v2 should use default onDemandQuorums by @samlaf in #1700
- chore: revert ntp clock #1760 by @samlaf #1760
- chore: cherry-pick celo's PR from proxy repo #1776 by @samlaf #1776
- chore: utility for generating important payload size thresholds. by @cody-littley in #1590
Full Changelog: v0.9.2...9b2520b