github Layr-Labs/eigenda v2.3.1
[Mainnet] EigenDA v2.3.1

one day ago

2.3.1 - Release Notes

  • Commit: c36d0aaa1d1618bc319ece23f80aae215d20619d
  • Prior Release: v2.2.0
  • Prior Commit: 6a7a24bc1c112d21dd81b37d735398ea9b1ebb62

This release is optional for validators.

Validators

New required flag for validators: NODE_EIGENDA_DIRECTORY. Value should be the contract address for the EigenDA
contract directory.

  • The address on mainnet is 0x64AB2e9A86FA2E183CB6f01B2D4050c1c2dFAad4.
  • The address on testnet Holesky is 0x90776Ea0E99E4c38aA1Efe575a61B3E40160A2FE.
  • The address on testnet Sepolia is 0x9620dC4B3564198554e4D2b06dEFB7A369D90257.
  • The address on testnet Hoodi is 0x5a44e56e88abcf610c68340c6814ae7f5c4369fd.

Instead of providing the validator with a bunch of different contract addresses, in the future, we will register all
contract addresses in this "directory" contract, and the code will look up the correct contract address from there.
In following releases, we will deprecate all old flags for individual contract addresses.

Major Changes

Minor Changes

Disperser

Major Changes

  • feat(payment): Do payment validation on controller by @litt3 in #2015
  • feat(controller): Implement Controller GRPC Server by @litt3 in #1897

Minor Changes

  • feat: log grpc response status from api server by @ian-shim in #1998
  • feat(payments): Implement reservation ledger by @litt3 in #1873
  • feat(payments): Implement client ledger by @litt3 in #1920
  • feat(payments): Implement OnDemandLedger by @litt3 in #1881
  • feat(payments): Implement OnDemandPaymentValidator by @litt3 in #1923
  • feat(payments): Implement ReservationPaymentValidator by @litt3 in #2003
  • feat(metering): Implement on demand meterer by @litt3 in #1945
  • feat(payments): Instantiate client ledger by @litt3 in #2009
  • feat(payments): Extract OnDemandLedgerCacheConfig by @litt3 in #2008
  • feat(payments): Test ReservationLedger by @litt3 in #2004
  • feat(payments): Integrate ClientLedger into PayloadDisperser by @litt3 in #2001
  • feat(payments): Implement reservation ledger cache by @litt3 in #1995
  • feat(payments): Test on demand ledger by @litt3 in #1975
  • feat(payments): Batch on demand PaymentVault RPC udpates by @litt3 in #1974
  • feat(payments): Make ClientLedger parameters updateable on the fly by @litt3 in #1967
  • feat(payments): Chunk fetching of PaymentVault reservation updates by @litt3 in #1970
  • feat(payments): Implement reservation vault monitor by @litt3 in #1952
  • feat(payments): add proxy flags to expose client ledger functionality by @litt3 in #1946
  • feat(payments): Expand golang PaymentVault by @litt3 in #1944
  • feat(payments): Rearchitect how OnDemand vault updates are made by @litt3 in #1933
  • feat(payments): Add reservation remaining capacity metric by @litt3 in #1964
  • feat(payments): Simplify cumulative payments API by @litt3 in #1917
  • fix(payments): Add new test util and use it to solve test flakes by @litt3 in #2019
  • fix(payments): Simplify ReservationLedger debit process to a single method by @litt3 in #1904
  • fix: Use floats for leaky bucket by @litt3 in #1870

Contracts

Major Changes

  • feat: Ejection manager by @pakim249 in #1639
  • chore: the new ejection contracts optional by @cody-littley in #2034
  • feat(contracts): Update CertVerifier V2 deploy script to read from directory contract & perform defensive checks by @ethenotethan in #1942

Minor Changes

  • feat(metrics): record CheckDACert gas usage by @iquidus in #1890
  • feat: contract imports by @8sunyuan in #1898
  • chore: copy registry coordinator by @pakim249 in #1785
  • feat(tools): add gas-exhaustion-cert-meter to measure the gas cost without signers by @bxue-l2 in #1925

Integrations

Proxy added experimental support for Arb's new Custom DA interface, which is a json-rpc server that works similarly to the REST one used for op and standard modes. A related breaking change is that now by default all data endpoints are turned off, and must be explicitly turned on via the --enabled-apis flag.

Proxy also inherits new client and accountant metrics which can be used to track, among other things, payment related balances.

Proxy configuration now uses the EigenDADirectory contract exclusively to find all other core contract addresses, such as RegistryCoordinator and OperatorStateRetriever, so no need to pass in any other core contract addresses. You can find the Directory address in our docs: https://docs.eigencloud.xyz/products/eigenda/networks/mainnet#contract-addresses
Other than the Directory address, the CertVerifierVerifier/Router is still needed to be passed separately, since we recommend teams deploy and manage their own due to the criticality of this contract. We are however maintaining and updating a default one that teams can use. Its address can be found by querying for CERT_ROUTER in the EigenDADirectory.

Lastly, we fixed safety (#1938) and liveness (#1924) issues with our V2 integration. See those PRs for full details.

Major Changes

  • feat(proxy): Arbitrum Custom DA Server Blueprint by @ethenotethan in #1957
  • feat(proxy): All user APIs disabled by default with enablement through EIGENDA_PROXY_APIS_TO_ENABLE env var by @ethenotethan in #1985
  • feat(proxy)!: remove support for redis cache by @samlaf in #1892
  • fix(cert-verifier): add try/catch to never revert and classify all checkDACert calls as valid/invalid/bug by @samlaf in #1938
  • feat(v2-clients): dispersal failover errors by @samlaf in #1924

Minor Changes

  • feat(proxy): Insecure write/read methods for Arb Custom DA by @ethenotethan in #1979
  • feat(coretypes): add MaliciousOperatorsError by @samlaf in #1860
  • refactor(verifier): create verifier v2 (currently just copy of v1) by @samlaf in #2010
  • refactor(verifier): only specifies and loads g1 srs points by @samlaf in #1996
  • refactor(encoding): introduce parametrized_verifier by @samlaf in #1972
  • refactor(proxy): separate eigenda_mgr getEigenDAV1/V2 by @samlaf in #1914
  • refactor(proxy): breakup mgr into cert and keccak mgrs by @samlaf in #1893
  • refactor: eigendacert interface by @samlaf in #1913
  • refactor: remove bls prefix from operatorStateRetriever by @samlaf in #1905
  • refactor: pass blobkey by value by @samlaf in #1878
  • chore(proxy-clients): new sub go module by @samlaf in #1782
  • chore(proxy): configure v2 with eigendadirectory exclusively by @samlaf in #1875
  • feat(contracts): Support abigen v2 migration path by @ethenotethan in #1910
  • feat(clients-v2): Add abigen V2 to checkDACert call by @ethenotethan in #1911
  • feat(metrics): add v2 client retrieval metrics by @iquidus in #1922
  • feat(metrics): add v2 disperser client metrics by @iquidus in #1879
  • feat(metrics): Add V2 accountant metrics by @iquidus in #1864

Other

Major Changes

  • perf(srs): embed g2PowerOf2 srs file into binaries by @samlaf in #1978

Minor Changes

  • feat(tools): add tool to parse altda commitment to human readable format and have gas exhaustion cert meter accept hexstring by @bxue-l2 in #1934
  • feat(tooling): Implement /audit-feature slash command by @litt3 in #1959
  • feat: hoodi subgraphs by @pschork in #1930
  • feat: Deploy contracts in testbed package by @dmanc in #1954
  • feat: Anvil testbed + various improvements to tests by @dmanc in #1950
  • feat: Use testcontainers for deploying localstack by @dmanc in #1939
  • fix: better srs and encoding error handling by @samlaf in #1971
  • fix: Copy everything in icicle Dockerfile by @dmanc in #2016
  • fix: contract directory configuration for the traffic generator by @cody-littley in #1916
  • fix: update NewDisperserClient errors by @iquidus in #1902
  • fix: initOnceGrpc function bugs by @samlaf in #1876
  • fix(docker-bake): wrong proxy-release target repo by @samlaf in #1899
  • fix(inabox): deploy-all manual launch by @samlaf in #1968
  • fix: golangci config file wrong syntax by @samlaf in #1912
  • fix(mdbook): Add 3rd party latex dependency to fix display bug by @ethenotethan in #1956
  • test: run LittDB unit tests in a separate panel by @cody-littley in #2000
  • chore: Move common/testutils and testbed into test package by @dmanc in #1986
  • chore(inabox): delete unused testconfig yamls by @samlaf in #1994
  • chore(inabox): bin.sh cleanup + improvements by @samlaf in #1984
  • chore(inabox): delete geth stuff by @samlaf in #1982
  • chore(encoding): clean up constants.go by @samlaf in #1991
  • chore(encoding): delete unused openCommitment package by @samlaf in #1977
  • chore(proxy): output doc metrics to ci checked file by @samlaf in #1929
  • chore: better contract bindings makefile command by @samlaf in #1906
  • chore: remove testnet ci by @pakim249 in #1941
  • chore: Use mainnet srs in tests by @dmanc in #1937
  • chore: update middleware branch to use forge fmt by @pakim249 in #1965
  • chore: Deprecate live holesky test and replace it with sepolia by @dmanc in #1948
  • chore: Update inabox's README.md by @davidralves in #1347
  • chore(integrations-spec): Add placeholder section for Arbitrum Secure V2 Integration by @ethenotethan in #1885
  • chore(proxy): Update DA Commitment section by @ethenotethan in #1877
  • feat(mdbook): Add last updated preprocessor by @ethenotethan in #1936
  • docs: explain security thresholds by @Lulu-Zhou-EigenLabs in #1949
  • docs(payments): Create doc describing migration from old to new payment system by @litt3 in #1981
  • docs(payments): Flesh out payments CLAUDE.md docs by @litt3 in #1980
  • docs(proxy): describe v2 cert verification by @samlaf in #1960
  • docs(proxy): remove readme section that overlaps with spec by @samlaf in #1961
  • docs(proxy): explain g2 srs flags better by @samlaf in #1962
  • docs(proxy): fix readme release section by @samlaf in #1869
  • docs: LittDB benchmark results by @cody-littley in #1932
  • docs: change from insecure to trusted by @bxue-l2 in #1947
  • docs: Update README.md by @mmurrs in #1966
  • docs: fix typos in mdbook 6-secure-integration.md by @samlaf in #1921
  • docs(integration): update spec for encoded payload definition and update blob decoding by @bxue-l2 in #1891

Payments

This release includes a large number of payments-related changes, due to an ongoing rework of the payments system. All new payments logic is turned off by default, and users should NOT modify default values for the new payments related fields. These new fields will become relevant in a future release. See the documentation here for additional information about the upcoming changes to the payment system.

Don't miss a new eigenda release

NewReleases is sending notifications on new releases.