Skip to content

Releases: Layr-Labs/eigenda

[Mainnet] EigenDA v2.2.1

25 Aug 21:37
e9bda06
Compare
Choose a tag to compare

Release 2.2.1 contains a single commit on top of 2.2.0, which fixed an issue where the pipeline was not pushing proxy to ghcr.

Proxy 2.2.1 docker image is now available.

Operators should feel free to use 2.2.0 or 2.2.1, they are equivalent images.

Make sure to check the 2.2.0 release notes!

[Mainnet] EigenDA v2.2.0

20 Aug 22:37
6a7a24b
Compare
Choose a tag to compare

This is an optional release, but make sure to read the summary details in the relevant section below.

Validator node

This release provides a reduction in the default memory usage by the validator software, primarily by adjusting database cache sizes. Several safety features were also added to limit maximum memory consumption during periods of bursty traffic. A variety of internal code changes that lay the foundation for incremental database snapshotting and backup (V2 database only) were added. They are not enabled in this release, but intended for full release in the near future.

Disperser

Adds an account index to our metadata store to support a user account feed on the Data API. Also sets a max connection age so that the relays and API servers can utilize newly available instances.

Fixes a bug in the encoding logic that causes the service to panic when precomputing an SRS table beyond the loaded points.

Payments

We are in the process of revamping how payments works and is accounted in the client, disperser, and validators. This work will be carried out by @litt3, so expect more PRs in future releases to complete this work. Reservations are switching from a fixed window algorithm to a leaky bucket algorithm. And on-demand improvements are a WIP.

  • docs: Simplify and improve payment header docs by @litt3 in #1820
  • feat(payments): Implement leaky bucket algorithm by @litt3 in #1853

DataAPI

Adds support for an account feed through the account index added to the disperser’s metadata store. Adds reservation expiration tracking on the DataAPI as a metric.

  • feat: Add reservations expiration tracking to DataAPI by @dmanc in #1733
  • feat: adds account index to blobmetadatastore-v2 by @pschork in #1791
  • fix: allow liveness checks on private IPs (ie preprod) by @pschork in #1803

Contracts

Small tooling improvements that will be slowly rolled out and added to most eigenda contracts: initializable, access control, semver.

Integrations (contracts, clients, proxy)

Many new features related to secure integration spec have been added in this release. Proxy now returns teapot status code on GET paths to communicate cert validation errors with rollup clients. Proxy also now exposes some client dispersal metrics.

Most importantly for secure integrations, we changed the meaning of an EncodedPayload to require that it is padded to a power of 2 field elements (see this spec update PR for more details). This has simplification benefits and also allows decoding to a payload to be performed inside a fpvm/zkvm so as to prove and discard invalidly encoded payloads. Proxy GET routes also expose a new query_param ?return_encoded_payload=true to return an EncodedPayload instead of a Payload to the rollup client.

On the contract side, EigenDACertVerifier now implements a semver() function which will allow crashing proxy if it ever is trying to deal with a cert verifier version that it doesn’t support, and force operators to update to a newer release. The EigenDACertVerifierRouter also now supports being initialized with multiple CertVerifiers, allowing for rollup teams to deploy their own and migrate the state of the EigenDA deployed Router to their own, without affecting the validity of previous certs.

  • fix(proxy)!: MaxBlobSizeBytes processing by @ethenotethan in #1762
  • feat(proxy): implement new teapot statuscode scheme by @samlaf in #1736
  • chore(proxy): crash on startup if certverifier != v3 by @samlaf in #1802
  • chore(proxy): consolidate dotenv examples files into single one by @samlaf in #1800
  • feat(proxy): new GET query param to return EncodedPayload by @samlaf in #1813
  • docs: add OP Optimistic Fault Proof with Cannon by @bxue-l2 in #1825
  • test: add payload-to-blob conversion test_example by @samlaf in #1833
  • feat: introduce IEigenDASemVer + use it in EigenDACertVerifier by @pakim249CAL in #1816
  • feat: flexible router init by @pakim249CAL in #1787
  • refactor!: encoded payload meaning by @samlaf in #1841
  • feat(proxy): expose payload disperser metrics probe to proxy by @iquidus in #1863

AI/Tooling

  • docs: Create repo style guide by @litt3 in #1740
  • feat: Improve claude log preprocessing command by @litt3 in #1786
  • feat(tools): new eigenda contract addresses reading cli by @samlaf in #1804
  • feat: Enable additional linter rules just for new changes by @litt3 in #1817
  • feat(tooling): Create a /nitpick command by @litt3 in #1814
  • fix: create claude-security-reviewer.yaml which uses claude to do some basic security tests. by @anupsv in #1845

Full Changelog

https://github.com/Layr-Labs/eigenda/compare/574b7dea5f0d504f67af5d6eac5411f27702dd5e...v2.2.0

[Mainnet] EigenDA v2.1.0

24 Jul 00:11
6c1deb5
Compare
Choose a tag to compare

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.

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.

Disperser

Mainly adding more observability, an audit fix regarding payments, and fixes a performance issue with validator connections.

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.

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.
image
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.

Full Changelog: v0.9.2...9b2520b

[Testnet] EigenDA v2.1.0-rc.3

23 Jul 01:11
df72da0
Compare
Choose a tag to compare
Pre-release

Important

This release candidate is only valid for testnet environments

This release is optional but highly recommended for operators because it resolves a goroutine leak. It is optional for users.

This release follows the Blazar release (0.9.2), colloquially referred to as "v2". We opted to bump the semver to 2.1.0 to match this 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.

We are deprecating the [eigenda-proxy repo](https://github.com/Layr-Labs/eigenda-proxy, and have moved its codebase under api/proxy. Monorepo releases will include proxy code moving forward.

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.

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.

Disperser

Mainly adding more observability, an audit fix regarding payments, and fixes a performance issue with validator connections.

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.

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.

The proxy --network-id flag now supports mainnet, and we also added a .env.exampleV2.mainnet example env file.

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.

Full Changelog: v0.9.2...9b2520b

EigenDA Blazar (v0.9.1)

13 Jun 19:41
v0.9.1
c28a428
Compare
Choose a tag to compare

Summary

This is an optional patch release limited to the validator node which enables support for internal/ephemeral V2 port configs.

Full Changelog: v0.9.0...v0.9.1

EigenDA Blazar (v0.9.0)

05 Jun 00:46
Compare
Choose a tag to compare

Summary

This release is required for users and operators to upgrade.

We are excited to release EigenDA v0.9.0, code name "Blazar" (aka. EigenDA V2), a major protocol and architecture upgrade for the entire system.

System Requirements for Validators

https://docs.eigenda.xyz/operator-guides/requirements/system-requirements

Key Features and Enhancements

  • Control Plane & Data Plane Separation

    Separates the flow of blob data from its metadata/control as they move through disperser, encoders and validators. This improves end-to-end data movement efficiency and boosts validator node performance and robustness by increasing network utilization through concurrent download connections.

  • High-Performance Storage with LittDB

    Introduces LittDB, a highly performant key/value store specifically tailored for EigenDA’s needs. LittDB replaces LevelDB as the storage engine on validator nodes, significantly improving disk-related operations by two orders of magnitude. Designed from the ground up, LittDB ensures high capacity, high throughput, low latency, and low memory/CPU utilization.

  • Payments Support

    EigenDA now supports on-demand payments and reservations, enabling applications to access the network permissionlessly with flexible payment options.

  • Faster and Cheaper Dispersal with DA Certificate

    Reduces end-to-end dispersal latency and cost by eliminating on-chain confirmation and returning a DA certificate representing DA nodes' attestations.

  • New Chunk Allocation Model

    Introduces a fixed-chunk model, making encoding a stateless operation and reducing system complexity.

  • Revamped Blob State Management

    Enhances robustness by enforcing immutable records and introducing constraints into the data model.

  • Improved Blob Addressing

    Introduces Blobkey, a universally unique string identifier for each blob, replacing the previous composite key (batch header hash + blob index). This simplifies interactions and improves UX when working with blobs.

Further Details

Breaking Changes

Performance Improvements

Features

Read more

[Testnet] Blazar (v0.9.0-rc.5)

04 Jun 01:45
Compare
Choose a tag to compare
Pre-release

Summary

This release is required for users and operators to upgrade.

We are excited to release EigenDA v0.9.0, code name "Blazar" (aka. EigenDA V2), a major protocol and architecture upgrade for the entire system.

Key Features and Enhancements

  • Control Plane & Data Plane Separation

    Separates the flow of blob data from its metadata/control as they move through disperser, encoders and validators. This improves end-to-end data movement efficiency and boosts validator node performance and robustness by increasing network utilization through concurrent download connections.

  • High-Performance Storage with LittDB

    Introduces LittDB, a highly performant key/value store specifically tailored for EigenDA’s needs. LittDB replaces LevelDB as the storage engine on validator nodes, significantly improving disk-related operations by two orders of magnitude. Designed from the ground up, LittDB ensures high capacity, high throughput, low latency, and low memory/CPU utilization.

  • Payments Support

    EigenDA now supports on-demand payments and reservations, enabling applications to access the network permissionlessly with flexible payment options.

  • Faster and Cheaper Dispersal with DA Certificate

    Reduces end-to-end dispersal latency and cost by eliminating on-chain confirmation and returning a DA certificate representing DA nodes' attestations.

  • New Chunk Allocation Model

    Introduces a fixed-chunk model, making encoding a stateless operation and reducing system complexity.

  • Revamped Blob State Management

    Enhances robustness by enforcing immutable records and introducing constraints into the data model.

  • Improved Blob Addressing

    Introduces Blobkey, a universally unique string identifier for each blob, replacing the previous composite key (batch header hash + blob index). This simplifies interactions and improves UX when working with blobs.

Further Details

What's Changed

Changes between the previous release candidate and the current release candidate. The main change between rc.4 and rc.5 is #1634.

Breaking Changes

Features

  • feat: only do debug computations if equivalence check fails by @litt3 in #1563
  • feat: validator node authenticate and validate blob headers by @hopeyen in #1529
  • feat: reserved-only disperser apiserver by @hopeyen in #1536
  • feat: configurable traffic generator pool by @cody-littley in #1569
  • feat: cert verifier v3 + router by @pakim249CAL in #1518
  • feat: Create interface for offchain metering store by @dmanc in #1581

Fixes

Misc

Full Changelog: v0.9.0-rc.4...v0.9.0-rc.5

[Testnet] Blazar (v0.9.0-rc.4)

29 May 22:20
01f5c30
Compare
Choose a tag to compare
Pre-release

Summary

This release is required for users and operators to upgrade.

We are excited to release EigenDA v0.9.0, code name "Blazar" (aka. EigenDA V2), a major protocol and architecture upgrade for the entire system.

Key Features and Enhancements

  • Control Plane & Data Plane Separation

    Separates the flow of blob data from its metadata/control as they move through disperser, encoders and validators. This improves end-to-end data movement efficiency and boosts validator node performance and robustness by increasing network utilization through concurrent download connections.

  • High-Performance Storage with LittDB

    Introduces LittDB, a highly performant key/value store specifically tailored for EigenDA’s needs. LittDB replaces LevelDB as the storage engine on validator nodes, significantly improving disk-related operations by two orders of magnitude. Designed from the ground up, LittDB ensures high capacity, high throughput, low latency, and low memory/CPU utilization.

  • Payments Support

    EigenDA now supports on-demand payments and reservations, enabling applications to access the network permissionlessly with flexible payment options.

  • Faster and Cheaper Dispersal with DA Certificate

    Reduces end-to-end dispersal latency and cost by eliminating on-chain confirmation and returning a DA certificate representing DA nodes' attestations.

  • New Chunk Allocation Model

    Introduces a fixed-chunk model, making encoding a stateless operation and reducing system complexity.

  • Revamped Blob State Management

    Enhances robustness by enforcing immutable records and introducing constraints into the data model.

  • Improved Blob Addressing

    Introduces Blobkey, a universally unique string identifier for each blob, replacing the previous composite key (batch header hash + blob index). This simplifies interactions and improves UX when working with blobs.

Further Details

What's Changed

Changes between the previous release candidate and the current release candidate.

Breaking Changes

Features

  • feat: only do debug computations if equivalence check fails by @litt3 in #1563
  • feat: validator node authenticate and validate blob headers by @hopeyen in #1529
  • feat: reserved-only disperser apiserver by @hopeyen in #1536
  • feat: configurable traffic generator pool by @cody-littley in #1569
  • feat: cert verifier v3 + router by @pakim249CAL in #1518
  • feat: Create interface for offchain metering store by @dmanc in #1581

Fixes

Misc

Full Changelog: v0.9.0-rc.3...v0.9.0-rc.4

[Testnet] Blazar (v0.9.0-rc.3)

14 May 23:22
3670b0d
Compare
Choose a tag to compare
Pre-release

Summary

This release is required for users and operators to upgrade.

We are excited to release EigenDA v0.9.0, code name "Blazar" (aka. EigenDA V2), a major protocol and architecture upgrade for the entire system.

Key Features and Enhancements

  • Control Plane & Data Plane Separation

    Separates the flow of blob data from its metadata/control as they move through disperser, encoders and validators. This improves end-to-end data movement efficiency and boosts validator node performance and robustness by increasing network utilization through concurrent download connections.

  • High-Performance Storage with LittDB (New)

    Introduces LittDB, a highly performant key/value store specifically tailored for EigenDA’s needs. LittDB replaces LevelDB as the storage engine on validator nodes, significantly improving disk-related operations by two orders of magnitude. Designed from the ground up, LittDB ensures high capacity, high throughput, low latency, and low memory/CPU utilization.

  • Payments Support

    EigenDA now supports on-demand payments and reservations, enabling applications to access the network permissionlessly with flexible payment options.

  • Faster and Cheaper Dispersal with DA Certificate

    Reduces end-to-end dispersal latency and cost by eliminating on-chain confirmation and returning a DA certificate representing DA nodes' attestations.

  • New Chunk Allocation Model

    Introduces a fixed-chunk model, making encoding a stateless operation and reducing system complexity.

  • Revamped Blob State Management

    Enhances robustness by enforcing immutable records and introducing constraints into the data model.

  • Improved Blob Addressing

    Introduces Blobkey, a universally unique string identifier for each blob, replacing the previous composite key (batch header hash + blob index). This simplifies interactions and improves UX when working with blobs.

Further Details

What's Changed

Changes between the previous release candidate and the current release candidate. Note: We're including the changes from v0.9.0-rc.2 since v0.9.0-rc.3 is a hotfix release.

Breaking Changes

Performance Improvements

  • perf: add KV cache for lookup requests in data apis by @jianoaix in #1425
  • perf: apply query limit to the feed fetch by @jianoaix in #1431
  • perf: make dispersal feed based on responses not requests by @jianoaix in #1486
  • perf: support batch liveness check of validators by @jianoaix in #1488

Features

Fixes

Misc

Read more

[Testnet] Blazar (v0.9.0-rc.2)

13 May 01:41
9157bad
Compare
Choose a tag to compare
Pre-release

Summary

This release is required for users and operators to upgrade.

We are excited to release EigenDA v0.9.0, code name "Blazar" (aka. EigenDA V2), a major protocol and architecture upgrade for the entire system.

Key Features and Enhancements

  • Control Plane & Data Plane Separation

    Separates the flow of blob data from its metadata/control as they move through disperser, encoders and validators. This improves end-to-end data movement efficiency and boosts validator node performance and robustness by increasing network utilization through concurrent download connections.

  • High-Performance Storage with LittDB (New)

    Introduces LittDB, a highly performant key/value store specifically tailored for EigenDA’s needs. LittDB replaces LevelDB as the storage engine on validator nodes, significantly improving disk-related operations by two orders of magnitude. Designed from the ground up, LittDB ensures high capacity, high throughput, low latency, and low memory/CPU utilization.

  • Payments Support

    EigenDA now supports on-demand payments and reservations, enabling applications to access the network permissionlessly with flexible payment options.

  • Faster and Cheaper Dispersal with DA Certificate

    Reduces end-to-end dispersal latency and cost by eliminating on-chain confirmation and returning a DA certificate representing DA nodes' attestations.

  • New Chunk Allocation Model

    Introduces a fixed-chunk model, making encoding a stateless operation and reducing system complexity.

  • Revamped Blob State Management

    Enhances robustness by enforcing immutable records and introducing constraints into the data model.

  • Improved Blob Addressing

    Introduces Blobkey, a universally unique string identifier for each blob, replacing the previous composite key (batch header hash + blob index). This simplifies interactions and improves UX when working with blobs.

Further Details

What's Changed

Changes between the previous release candidate and the current release candidate.

Breaking Changes

Performance Improvements

  • perf: add KV cache for lookup requests in data apis by @jianoaix in #1425
  • perf: apply query limit to the feed fetch by @jianoaix in #1431
  • perf: make dispersal feed based on responses not requests by @jianoaix in #1486
  • perf: support batch liveness check of validators by @jianoaix in #1488

Features

Fixes

Misc

Read more