Releases: Layr-Labs/nitro
Consensus EigenDA V40
WAVM Module Root: 0x2c9a9d645ae56304c483709fc710a58a0935ed43893179fe4b275e1400503ea7
This consensus release supports ArbOS 40 w/ EigenDA.
v3.5.7: Stateless EigenDA Enablement Support
Containers: nitro-node, nitro-node-dev
Replay Artifact: consensus-eigenda-v32.3
This release introduces a simplification by removing EigenDA enablement from the L2 system config - effectively making it stateless. Having EigenDA as a first class citizen by being explicitly declared within global state created headaches for customers; i.e:
- Migrations from existing Arbitrum chains required performing additional operations by needing to enable EigenDA
- New chain deployments against an EigenDA
RollupCreatorcontract required using a genesis system config withEigenDA=true.
For more context on the exact problem statement and proposed solution - please advise specification here.
NOTE: Properly upgrading to this version requires updating the wasm module root on your parent chain, this can be done via calling your Rollup contract's setWasmModuleRoot method via your UpgradeExecutor contract.
What's Changed
- feat: Make EigenDA enablement stateless by @ethenotethan in #108
- chore: Update Dockerfile to include v32.3 consensus release by @ethenotethan in #109
Full Changelog: v3.5.6...v3.5.7
v3.5.6: Fix EigenDA Failover and Max Batch Size Limits
Containers: nitro-node, nitro-node-dev
Replay Artifact: consensus-eigenda-v32.2
This release addresses a critical validation bug affecting EigenDA message handling, introduces a fix for improper header parsing, and updates configuration defaults to prevent blob size overflows. Anyone running an earlier version is recommended to switch immediately.
NOTE: Properly upgrading to this version requires updating the wasm module root on your parent chain, this can be done via calling your Rollup contract's setWasmModuleRoot method via your UpgradeExecutor contract.
Bug Fix: Incorrect EigenDAHeaderByte Parsing
A critical issue was identified where validations failed due to the EigenDAHeaderByte being incorrectly set to 0xED. This value, when evaluated using bitwise AND with the hasBits mask against AnyTrust message header byte (0x80):
11101101 (0xED)
& 10000000 (0x80)
-----------
10000000 (result)
...falsely signaled that the message should be processed by an AnyTrust reader, even though it was an EigenDA sequencer message.
This behavior went undetected in our system tests due to a commutativity violation: the construction order of dapReaders differed between the replay and live node environments.
Fix: An override was introduced in the header verification logic to correctly interpret the EigenDAHeaderByte and prevent misclassification. Furthermore strict isomorphism with dapReaders initialization has been enforced across execution environments.
Configuration Fix: MaxEigenDABatchSize
The default MaxEigenDABatchSize was previously set to 16 MiB. However, when a rollup payload of exactly 16 MiB was dispersed, the EigenDA proxy would pad it to the next power of 2, exceeding the maximum allowed blob size and causing dispersal to fail.
Fix: The default value has been updated to ensure the payload, once encoded into blobs, does not exceed the 16 MiB limit.
Tests & Cleanup
- Added targeted tests to ensure proper header parsing behavior.
- Performed minor cleanup and refactoring for improved readability and forward compatibility.
- Updated eigenda-proxy dependency to v1.8.2
What's Changed
- fix: Validation bug when EigenDA && AnyTrust are both enabled by @ethenotethan in #97
- fix: Update replay script dependency ordering to reflect node env by @ethenotethan in #99
- fix: max eigenda batch size by @ethenotethan in #98
- chore: Add Debug Consensus V32.2 to Dockerfile by @ethenotethan in #100
- chore: Bump proxy to v1.8.2 && add more comprehensive invariance to EigenDA failover tests by @ethenotethan in #101
- fix: hasbits check by @ethenotethan in #103
- chore: Move EigenDA message logic to daprovider package by @ethenotethan in #104
- chore: eigenda message check in reader if reader not found in
dapReadersby @ethenotethan in #106 - chore: Update V32 consensus root reference in Dockerfile by @ethenotethan in #107
Full Changelog: v3.5.5...v3.5.6
Consensus EigenDA V32.3
WAVM Module Root: 0x39a7b951167ada11dc7c81f1707fb06e6710ca8b915b2f49e03c130bf7cd53b1
This consensus release supports ArbOS 32 w/ EigenDA and includes some breaking changes from Consensus EigenDA V32.2.
Consensus EigenDA V32.2
WAVM Module Root: 0xc723bd1be9fc564796bd8ce5c158c8b2f55d34afb38303a9fb6a8f0fda376edb
This consensus release supports ArbOS 32 w/ EigenDA and includes some patches from Consensus EigenDA V32.
v3.5.5: Fix max data size check
v3.5.4
Production containers can be found here
What's Changed
- chore: Fix docker CI by @ethenotethan in #89
- fix: remove seqInboxMaxDataSize > nodeConfig.Node.BatchPoster.MaxSize check when EigenDA is enabled by @dianwen in #91
New Contributors
Full Changelog: v3.5.3...v3.5.4
Nitro x EigenDA v3.5.3
Production docker containers can be found here
Summary
- Bumps eigenda-proxy dependency to v1.7.0
- Adds dangerous sequencer flag to disable L2 transaction size checks, allowing oversized L2 transactions.
- Fixes container build bug due to foundry updates
What's Changed
- fix: Pin foundry version by @ethenotethan in #81
- feat: add sequencer dangerous flag to disable tx size checks by @ethenotethan in #82
- chore: Bump eigenda-proxy test container dependency to v1.7.0 by @ethenotethan in #87
Full Changelog: v3.5.2...v3.5.3
Nitro x EigenDA v3.5.2
Production container builds can be found here
Summary
- Updated docker build pattern to be more concise by supporting a single namespace for multiple architectures as well as
nitro-node-devbuilds that can be ran using validation for a latest replay script without a corresponding consensus release - Fixed secondary storage lookup bug where certificate representation being hashed for insertions by the proxy differed when reading
- Reskinned and removed lots of custom code in-favor of reusing existing constructions in eigenda monorepo dependency
- Fixed validation bug where eigenda preimage lengths where being interpreted by the # of bytes and not field elements
- Updated test env contract deployment logics to reflect new
EigenDACertVerifiercontract - Introduce support for
eigenda-consensus-v32.1artifact
What's Changed
- feat: Add fork diff summary by @ethenotethan in #58
- fix(CI): Unified mulitplatform namespace && dev container support by @ethenotethan in #64
- feat: v3.5.0 merge by @ethenotethan in #63
- feat: v3.4.0 merge by @ethenotethan in #60
- feat: merge v3.5.2 by @ethenotethan in #67
- chore(eigenda-proxy): Bump to v1.6.4 by @ethenotethan in #69
- feat(contracts): Bump to use
nitro-contracts@eigenda-v2.1.3by @ethenotethan in #68 - fix(lang): Update rust pin by @ethenotethan in #75
- feat(eigenda): Updated failover tests && refactored type usage by @ethenotethan in #72
- fix: Strip
0x0prefix bytes from KZG commitment fields when casting toBlobStatusReplyby @ethenotethan in #76 - fix(eigenda): Prefix zero bytes if data commitment fields are less after serializing from big int by @ethenotethan in #77
Full Changelog: v3.2.1...v3.5.2
Consensus EigenDA V32.1
WAVM Module Root: 0x04a297cdd13254c4c6c26388915d416286daf22f3a20e3ebee10400a3129dd17
This consensus release supports ArbOS 32 w/ EigenDA and includes some patches from Consensus EigenDA V32.