Releases: Layr-Labs/eigenda
EigenDA v0.6.2-rc.0 intended for holesky testnet
Summary
This upgrade is optional and contains minor patches for operators and rollups. It is intended for holesky testnet only
Notable features that directly affect users:
-
Rollups: KzgPad - an utility library which facilitates users to experiment to disperse and retrieve by automatically make conversion between a string of bytes and EigenDA compatible byte format
-
Operators: Churner response with longer expiration time - the churner response contains payload which is valid only within 90 seconds after response is produced. The expiry is increased to 3600 seconds.
-
Operators: Support “update-socket” operation from node plugin
Others Changes:
- Removed misleading ChainID log error #463
- Improve Batcher availability with fireblock timeout
- Improve Batcher availability with subgraph vendor by retrying
- Add logics to account stakes with percentage of non-signing in DataApi
- Fix multi-RPC error handler for JSON error
What's Changed
- Detect Fireblocks http timeout error by @ian-shim in #448
- Add kzgpad util for using grpcurl to test eigenda by @teddyknox in #459
- Add mainnet avs/eigenda uri by @jianoaix in #463
- Update signature aggregation test by @ian-shim in #322
- [Dataapi] GRPC Dial with timeout by @siddimore in #462
- Record the percent of stake held me each nonsigner by @mooselumph in #454
- Query non-signers between start and stop times. by @mooselumph in #464
- fix: inconsistent 'retriever' by @rguichard in #468
- Minor logging update by @ian-shim in #461
- Support
update-socket
operation from node plugin by @ian-shim in #469 - mandate to read power of 2 file at the beginning by @bxue-l2 in #472
- Detect wrapped url error timeout by @ian-shim in #473
- Revert "fix: inconsistent 'retriever' (#468)" by @jianoaix in #479
- [DataApi] Remove GetServiceAvailability API by @siddimore in #470
- Update graph-ts to 0.32.0 by @anupsv in #451
- Add retry for graph node by @mooselumph in #471
- fix log and change rpc in response to json rpc error by @bxue-l2 in #474
- increase churner expiry by @bxue-l2 in #481
- Import EjectionManager from eigenlayer-middleware by @0x0aa0 in #483
- Backward compatibility with using entire g2 by @bxue-l2 in #482
- ejector update by @0x0aa0 in #484
New Contributors
- @rguichard made their first contribution in #468
- @anupsv made their first contribution in #451
Full Changelog: v0.6.1...v0.6.2-rc.0
EigenDA v0.6.1
Summary
This minor upgrade includes a few patches for operators and rollups.
Notable features that directly affect users are:
- Rollups - Blob Verification Library: We patched
EigenDARollupUtils
library, which rollups use to verify dispersed blobs. We updated the data type forblobIndex
so that it can represent bigger values. - Operators - Optional ECDSA Key: ECDSA keys are now optional for node software. If an operator is using the node operator setup CLI to register their node, an ECDSA key does not have to be configured on the node software.
What's Changed
- [SyntheticTest] Fix Interval by @siddimore in #440
- fix memory leak by @bxue-l2 in #443
- [DataApi] Add Batcher availability by @siddimore in #436
- [dataapi] Represent total stakes with bigint by @ian-shim in #444
- Add mainnet contracts to networks.json by @dmanc in #445
- Update networks.json name by @dmanc in #447
- feat(node): support execution without ecdsa key by @jeffhubCB in #438
- fix blob size displayed at sendchunks by @bxue-l2 in #452
- Update contract address for networks.json by @dmanc in #453
- Optimize the bitmap lookup by @jianoaix in #455
- mainnet deploy by @0x0aa0 in #435
- update blob index size by @0x0aa0 in #457
- Bump v0.6.1 by @ian-shim in #458
New Contributors
- @jeffhubCB made their first contribution in #438
Full Changelog: v0.6.0...v0.6.1
EigenDA v0.6.0
Summary
This upgrade is mandatory for operators that need to interact with churner (to opt into new quorums). This upgrade is highly recommended for all operators otherwise.
This release includes a major change to the way the input blob data is interpreted. It also includes several new features and security improvements noted below.
Notable features that directly affect users are:
- Rollups - 32 byte symbol size: The dispersal interface is updated to be compatible with opening points on the smart contract, in the same way as 4844 on Ethereum. The new interface requires every 32 bytes of the data be smaller than a big integer less than the field element of bn254 curve. Please refer to the rollup guide on the EigenDA document page for more details.
- Operators: New cli command
list-quorums
is available. Use this command to list the quorums the node is opted in.
Other changes:
- Updates on serialization methods for G1/G2 points: Use gnark format for serialization and deserialization of elliptic curve point for communication between the disperser and operators, and between the churner and operators
- Several security related fixes
- Updates and fixes to logging/metrics
- Adds contract addresses for mainnet deployment, supports one quorum only
- An utility codec to convert any bytes to an array of bytes satisfying the new interface
What's Changed
- Account the invalid requests in disperser metrics by @jianoaix in #411
- don't count metadata not found as internal error by @mooselumph in #418
- add tools by @bxue-l2 in #352
- Fix: index of bounds panics by @jianoaix in #417
- Add invalid arg metrics by @mooselumph in #419
- Add child logger & remove method names from log messages by @ian-shim in #412
- Update accounting logic for total encoded blob size by @ian-shim in #421
- Measure attestation latency by @ian-shim in #424
- [DataAPI] Implement metric for Disperser and Churner Service Availability by @siddimore in #405
- RPC requests accounting by @jianoaix in #426
- [Batcher] Reset Timer instead of stopping function by @siddimore in #429
- Additional protobuf nil checks by @mooselumph in #427
- Mark blobs as insufficient signatures if batch aborted due to no sign… by @mooselumph in #431
- Distinguish between system and account ratelimit in metrics by @mooselumph in #430
- Update metrics not to double count blob failures by @ian-shim in #434
- Use histogram for dispersal e2e latency by @jianoaix in #433
- add checks on curve, and serialize using gnark by @bxue-l2 in #422
- Retry SendTransaction on context deadline exceeded error by @ian-shim in #432
- eigenda only accepts 32 bytes less than field modulo by @bxue-l2 in #428
- [fix] remove space from op type by @shrimalmadhur in #439
- [Encoder][Node] Add nil checks by @siddimore in #425
- Update semver 0.6.0 by @ian-shim in #441
Full Changelog: v0.5.2...v0.6.0
EigenDA v0.5.2
Summary
This release includes a patch that fixes an issue which prevents some operators in a particular quorum from receiving large batches.
Other updates:
- Improvements to metrics reported on DA nodes
- Few security related fixes
What's Changed
- Enable dual quorum by default in code by @jianoaix in #404
- Add blob quorum metrics at node by @jianoaix in #406
- Bump
eigensdk
version and patch Fireblocks wallet by @ian-shim in #408 - Add checks for g1 and g2 point deserialization by @mooselumph in #407
- Add list-quorums command to CLI by @jianoaix in #403
- Report number of signers/nonsigners by quorum by @ian-shim in #409
- Increase grpc message size limit by @ian-shim in #414
- Release v0.5.2 by @ian-shim in #415
- Fix most critical integer casting issues by @mooselumph in #413
- Upgrade eigensdk version by @ian-shim in #416
Full Changelog: v0.5.1...v0.5.2
EigenDA v0.5.1
Summary
This release includes a critical patch that fixes an issue which prevents some operators in a particular quorum from validating batches.
What's Changed
- fix: fix null pointer reference by @jianoaix in #397
- Pass in gas price caps explicitly for Fireblocks transactions by @ian-shim in #390
- Fix operator address format and add address to response by @jianoaix in #398
- Index operator state by quorum id not quorum index by @mooselumph in #399
- Upgrade version 0.6.0 by @ian-shim in #400
- Make release v0.5.1 by @ian-shim in #401
- Revert eigensdk version by @ian-shim in #402
Full Changelog: v0.5.0...v0.5.1
EigenDA v0.5.0
Summary
This major upgrade includes several new features, security improvements, and an API breaking change that simplifies the blob dispersal endpoint.
Notable features that directly affect users are:
- Rollups - Disperser API breaking change: The API for DisperseBlob request has been simplified, and
security_params
field is no longer supported. Default quorums are enforced by the protocol and additional quorums can be specified incustom_quorum_numbers
field. - Rollups - Disperser API error codes: The disperser API returns structured error codes along with the error messages.
- Rollups - Retrieval rate limits: We’ve added rate limits for RetrieveBlob endpoint.
- Operators - Operator CLI is revamped:
update-quorums
command is no longer supported, andopt-out
command takes specific quorums to be opted out (instead of opting out of all quorums)
Other improvements:
- This upgrade spans changes in contracts, disperser, and DA nodes to enable blob dispersals across multiple quorums
- Revamped logic for operator nonsigning accounting across multiple quorums
- Fireblocks MPC wallet support for disperser
- Automatic failover among multiple RPC endpoints
- More robust selection of reference block
- Other security patches and bug fixes
What's Changed
- [DataApi] Add Service Availability Handler by @siddimore in #276
- Upgrade
eigensdk-go
andgo-ethereum
by @ian-shim in #323 - Add missing methods in EthClient interface by @ian-shim in #332
- Create a json/text logger based on specified flag by @ian-shim in #331
- [DockerBuild] Update docker job to build for Pull Request by @siddimore in #329
- [Finalizer] Add check before processing ConfirmationInfo by @siddimore in #341
- [5/N][multi quorum ejection] Compute num batches per quorum and block range by @jianoaix in #327
- Fix doc typos in spec overview by @igorline in #334
- Fix: division by zero panic in assignment by @ian-shim in #340
- [dataapi] Return total stakes by quorum by @ian-shim in #330
- [6/N][multi quorum ejection] Create handler and put them all together by @jianoaix in #328
- [7/N][multi quorum ejection] Cleanup by @jianoaix in #351
- Add preprod-holesky to networks.json by @dmanc in #355
- Blob verification changes by @0x0aa0 in #321
- Minor fixes by @ian-shim in #358
- Check unexpected error and return when decoding chunks by @ian-shim in #359
- Holesky testnet deployment by @0x0aa0 in #360
- Revamp metrics to account the status code by @jianoaix in #320
- Validate gRPC requests earlier by @ian-shim in #356
- Update quorumConfirmationThresholdPercentages by @0x0aa0 in #364
- Handle uint8 overflow by @ian-shim in #363
- Upgrade lock for delete encoding request by @ian-shim in #357
- Multiple quorums support for traffic generator by @ian-shim in #339
- [Subgraph] Updates for Holesky by @siddimore in #367
- Fix: Construct a new map for security params by @ian-shim in #366
- Remove traffic generator threshold flags by @pschork in #368
- Make sure the operator quorum events are all fetched by @jianoaix in #361
- Remove the update-quorums command support by @jianoaix in #362
- Integrate EigenSDK wallet in batcher by @ian-shim in #348
- Use finalized reference block by @mooselumph in #350
- Crypto audix fix by @bxue-l2 in #371
- Return transact opts for non-pk EthClient by @ian-shim in #373
- Sort quorum IDs before aggregation by @ian-shim in #375
- Timeout disperser grpc streams by @mooselumph in #376
- Add store chunks validation at node by @jianoaix in #378
- failover that retries rpc by @bxue-l2 in #346
- Fix: make operators able to join all specified quorums by @ian-shim in #268
- Misc node code fixes by @jianoaix in #369
- Use latest available block for getting indexedOperatorState by @mooselumph in #365
- fix defer with closure by @bxue-l2 in #382
- Misc remove duplicate assignment in subgraph batch handle by @bxue-l2 in #384
- Atomically pass or fail rate limit check by @mooselumph in #374
- [Node] update DA UI map by @siddimore in #385
- Handle txn failure when retrieving txn receipt by @ian-shim in #383
- optimize encoder interpolation latency by @bxue-l2 in #309
- Update eigensdk version by @ian-shim in #387
- Fireblock with aws secret manager by @bxue-l2 in #377
- Revamp the operator CLI for opt-out by @jianoaix in #381
- refactor: make the security param validation a shared function by @jianoaix in #388
- Handle bitmap lookup for nonexistent operators by @jianoaix in #370
- Remove flaky targetNumChunks lower bound check by @mooselumph in #391
- Clarify error message when a required quorum is specified as a custom quorum by @ian-shim in #386
- Update semver for new release by @ian-shim in #393
- Add retrieval ratelimit by @mooselumph in #380
- Add context on few error logs + early return on encoding streamer by @ian-shim in #372
- Flag guard the dual quorum in disperser by @jianoaix in #389
- Fix the quorumID diffing for registartion from node start by @jianoaix in #395
- Update API documentation by @jianoaix in #396
New Contributors
Full Changelog: v0.4.0...v0.5.0
EigenDA v0.4.0
Summary
This release includes several bug fixes for operator nodes and the disperser. Most notably, this version is mandatory for operators to support multiple quorums.
- Fixes a bug on operator nodes for validating batches across multiple quorums
- Refactors encoding module to be more readable
- Fixes multiquorum handling on the disperser and the churner
- Few fixes to prevent panics
What's Changed
- goerliv2 testnet deploy by @0x0aa0 in #249
- [finalizer] Go through all confirmed blobs by @ian-shim in #217
- [TxnManager] Check if replaced txns are confirmed by @ian-shim in #228
- fix: update txn manager failure log by @ian-shim in #254
- fix: length check by @0x0aa0 in #257
- fix: Don't mark blob as confirmed if already confirmed by @ian-shim in #262
- Stop duplicating subgraph npm installation by @mooselumph in #263
- Add a defensive check on blob status by @jianoaix in #258
- [Batcher] Add Readiness and Liveness Health Probe by @siddimore in #203
- [DataApi] Rename tests by @siddimore in #265
- Refactor encoding (1 of N) by @mooselumph in #266
- Fix: Check nil blob commitment by @ian-shim in #274
- Refactor encoder (2 of N) by @mooselumph in #269
- Fix: Synchronize inmem store to fix finalizer test by @ian-shim in #277
- Fix error msg by @jianoaix in #259
- Deflake dataapi server test by @jianoaix in #267
- Separate apiserver validation by @mooselumph in #279
- rm custom bn254 under kzg and cleanup by @bxue-l2 in #280
- Cleanup spec by @mooselumph in #283
- Update the code org documentation by @jianoaix in #285
- Fix the operator nonsigning rate by @jianoaix in #271
- Fix: Include all batch quorums in batch metadata by @ian-shim in #273
- [DataApi] Update endpts to spinal-case by @siddimore in #261
- [Dockerfiles] Update pkg dir to encoding dir by @siddimore in #287
- [DataApi] Handle Deregisterd operator errors by @siddimore in #260
- [Batcher] Additional check in updateBlob method before dereferencing by @siddimore in #289
- [DataApi] Minor Logging and Test fixes by @siddimore in #291
- Make churner produce params for all specified quorums by @ian-shim in #288
- Create an
operators
folder for churner and ejector by @jianoaix in #296 - [Finalizer] Minor fixes by @siddimore in #295
- Add more blob metadata mretrics by @dmanc in #256
- [Batcher] fix race in Test by @siddimore in #300
- [Dockerfile ]Fix churner path by @siddimore in #303
- [DockerFile] Fix Churner Dockerbuild by @siddimore in #307
- Fix: Send only blobs relevant to operators by @ian-shim in #301
- Fix: Allow multiple quorums in allowlist by @ian-shim in #314
- [Docker Publish] Fix path by @siddimore in #311
- rm panic by @bxue-l2 in #316
- improve: use errors.New to replace fmt.Errorf with no parameters by @0x2d3c in #297
- [1/N][multi quorum ejection] Fetch batch nonsigning info by @jianoaix in #292
- Fix: Match wrapped errors by @ian-shim in #315
- [3/N][multi quorum ejection] Add batch quorum lookup and id conversion by @jianoaix in #299
- [2/N][multi quorum ejection] Fetch operator quorum opt-in/out info by @jianoaix in #293
- Validate batch merkle root by @mooselumph in #312
- Standardize the error codes from API endpoints by @jianoaix in #317
- Misc fixes related to operator management by @jianoaix in #318
- Log the context of Churner's decisions by @jianoaix in #319
- Cleanup kzg tests by @mooselumph in #313
- [4/N][multi quorum ejection] Create operator quorum intervals by @jianoaix in #304
- Revert "Add more blob metadata mretrics" by @dmanc in #324
- Bump node semver by @ian-shim in #326
New Contributors
Full Changelog: v0.3.0...v0.4.0
EigenDA v0.3.0
Summary
This release includes a major update with few breaking changes for operator nodes and rollup users.
- Smart contracts upgrades: Since EigenDA v0.1.0, there have been significant changes to EigenLayer middleware contracts as well as EigenDA contracts. With this release, all EigenDA offchain components will point to the new set of contracts.
- SRS points: Structured Reference String (SRS) points are used to generate and validate proofs. We have replaced the existing points to a larger set of MPC generated points. This means that the generated proofs are more secure and EigenDA can support bigger blobs (~2 MiB).
- API Enhancements (breaking change): We received feedback from rollups (participating in the EigenDA testnet) on how commitments are represented in the API. Rather than encoding them in a format not universally supported across languages, each commitment member is now expressed in raw byte representation. Refer to the latest APIs for disperser and node.
Here is a summary of downstream effects operators and rollup users can experience:
- Operators - New SRS points: When operators opt in after upgrading the node software, it will download a ~8GB file consisting of the new SRS points. This file is downloaded once at the very first time they opt in.
- Operators - Stake update: With the latest smart contracts, operator stakes will be updated periodically (at most once a week) instead of in real time in order to reduce gas costs for operators. Consequently, any updates to the operators’ stake following their initial opt in (any additional delegations or deposits) can take up to 1 week to be reflected in the system.
- Rollups - Previous blobs: Blobs that have been dispersed prior to this upgrade won’t be accessible.
- Rollups - API breaking changes: Please find the updated gRPC APIs here: disperser & operator nodes.
What's Changed
- Update response for nonsigners endpoint by @dmanc in #219
- [inabox] Update stake distribution for quorum 1 by @ian-shim in #216
- Validate the time intervals and fix the mix uses of timestamp units by @jianoaix in #209
- Add blob store failure monitoring by @jianoaix in #211
- Use logfmt instead of terminal format by @dmanc in #226
- Check if txn is mined before speedup by @ian-shim in #210
- Fix: Check total stake before calculating chunk length by @ian-shim in #225
- Pin foundry version by @ian-shim in #233
- m2-mainnet Contracts Update by @0x0aa0 in #158
- [subgraphs] Update preprod contract addresses by @ian-shim in #236
- add correct semvar for new release by @shrimalmadhur in #239
- Adapt low degree proof on G2 for compatibility with perpetual power of tau by @bxue-l2 in #222
- Warn log if cannot connect to operator by @dmanc in #232
- Use raw bytes for SRS points to save half storage by @jianoaix in #238
- Add partial point loading by @bxue-l2 in #240
- [disperser] Return commitment as a struct by @ian-shim in #223
- Cap the max quorumID to 254 by @jianoaix in #242
- API cleanup by @jianoaix in #243
- name parameter 'expeced' to 'expected' in function 'TestHeaderService… by @keienWang in #230
- Allocate reader buffer more precisely by @jianoaix in #245
- Update the API documentation by @jianoaix in #244
- Load only 28 g2point for opr node by @bxue-l2 in #246
- rm wrong validationa and expose log by @bxue-l2 in #250
- Remove logging from G1 partial load by @ian-shim in #248
- remove g2 point section logs by @shrimalmadhur in #251
- [Subgraph] Update Goerli Contract Address by @siddimore in #252
- [DataApi][Stage1] Deregistered operators endpt for LameDuck Operators by @siddimore in #152
- Sync with latest contracts by @ian-shim in #253
New Contributors
- @keienWang made their first contribution in #230
Full Changelog: v0.2.3...v0.3.0
EigenDA v0.2.3
Summary
This release includes improvements to monitoring/logging along with improvements around our authentication / rate-limiting functionality on the disperser. This release also includes minor bug fixes.
- Updates to how we tokenize the IP address in the disperser allowlist so that we can support IPv6 addresses.
- Add support for eth accounts in the disperser rate limiter.
- Adding a metric to track the # of blobs in the
PROCESSING
status allowing us to track when our system is under load. - On the EigenDA node we enabled an API that tracks the version running.
- Add more metrics around operator non signings (# of unsigned batches, total batches, percentage of signed batches).
What's Changed
- Add api for the percentage of unsigned batches monitoring by @wmb-software-consulting in #137
- Add eth accounts to allowlist by @mooselumph in #175
- fix typos by @buldazer23 in #184
- add utility to update socket by @shrimalmadhur in #188
- Make node api work and add node version by @shrimalmadhur in #197
- [node] Add more info on error logs by @ian-shim in #187
- Create a dynamodb collector by @dmanc in #190
- Fix: typo
Stoping
->Stopping
by @ian-shim in #206 - Compute the operator's time intervals during which the operator is live by @jianoaix in #198
- IP allowlist split token by @ian-shim in #205
- Handle the concurrency in the accounting of batch storing and validation by @jianoaix in #189
- Disperser server error logs by @ian-shim in #208
- Enable Multi-Quorum by @ian-shim in #204
New Contributors
- @buldazer23 made their first contribution in #184
Full Changelog: v0.2.2...v0.2.3
EigenDA v0.2.2
Summary
This release includes robustness and performance improvements on the disperser. Minor bug fixes and metrics are updated as well.
- The batching loop is no longer single-threaded. The onchain transaction are handled and monitored in a separate goroutine with speed ups if transactions aren't confirmed for an extended amount of time. This allows the existing timeout to be removed, prevents blobs from encoded/dispersed twice, and more time to be allocated for attestation.
- The encoding job throttles the number of blobs to be handled for each iteration. An encoding job, which runs periodically every 2s, retrieves request metadata and sends encoding requests to a set of encoders. Previously, it retrieved up to 1 MB of request metadata which routinely jammed the encoding throughput. Now it limits the number of request metadata to retrieve so that encoders can handle the load more gracefully.
- Several typo fixes
What's Changed
- Use
TxnManager
for onchain transactions by @ian-shim in #164 - Fix some typos by @vuittont60 in #163
- Add basic authentication classes by @mooselumph in #166
- Log quorum results by @ian-shim in #172
- [encodingstreamer] Consider blobs pending confirmation by @ian-shim in #169
- Add
TxnManager
metrics by @ian-shim in #170 - [Encoding ]Request with pagination by @siddimore in #157
- Fix: Properly handle gas fee bumps by @ian-shim in #173
- Add authenticated dispersal interface, client+server implementations by @mooselumph in #167
- [DynamodB] Fix Flaky Pagination UT by @siddimore in #174
- [TxnManager] Halt when speed up fails by @ian-shim in #179
- I corrected the typo (Update metrics.go) by @bolatfurkan in #182
- Transaction manager logging update by @ian-shim in #177
- Read MaxBlobsToFetchFromStoreFlag by @ian-shim in #181
- fix: repair outdated links in both code and docs by @krauspt in #185
- Cleanup: remove confirmer by @ian-shim in #183
- Fix: add disperser as a dependency to retriever by @ian-shim in #180
- Fix disperser client by @ian-shim in #186
New Contributors
- @vuittont60 made their first contribution in #163
- @bolatfurkan made their first contribution in #182
- @krauspt made their first contribution in #185
Full Changelog: v0.2.1...v0.2.2