⬆️ This is a strongly recommended release of op-batcher for all chain operators.
op-batcher changes
Multi-blob support in op-batcher
See release notes for v1.7.2-rc.3
for details on how to configure a multi-blob batcher.
Improved channel duration tracking
The batcher now tracks channel durations relative to the last L1 origin in a previous channel. The last channel's L1 origin is restored at startup and during reorgs.
This ensures that the desired channel duration survives restarts of the batcher, which is particularly important for low-throughput chains that use channel durations of a few hours.
There's a known quirk in the new tracking design, which leads to a slightly lower effective channel duration (~1min lower), related to how a channel timeout is determined relative to the current L1 head, not current channel's newest L1 origin. This will be improved in a future release.
Breaking compressor configuration change
The channel and compressor configuration got simplified by removal of the target-frame-size
flag. The only configuration parameters left to configure the channel size are
max-l1-tx-size
- default of 120k for calldata; for blobs this is overwritten to the max blob sizetaget-num-frames
- default of 1 for calldata; for multi-blob txs, set this to the desired amount of blobs per blob-tx (e.g. 6)
The default compressor is the shadow compressor, which is recommended in production.
Overflow frames bug fix
The batcher now correctly estimates a channel's output size, fixing a rarely but regularly occurring bug that produced overflow frames, leading for example to a 7th blob that was sent in a second batcher transaction.
op-node changes
- Improved peering behavior
- Per-chain hardfork activation times via superchain-registry
Partial Changelog
- feat(op-node): clean peer state when disconnectPeer is called and log intercept blocks by @felipe-op in #9706
- make txmgr aware of the txpool.ErrAlreadyReserved condition by @roberto-bayardo in #9683
- op-node/rollup/derive: also mark
IsLast
astrue
whenclosed && maxDataSize==readyBytes
by @zhiqiangxu in #9696 - op-node: Record genesis as being safe from L1 genesis by @ajsutton in #9684
- TXManager: add IsClosed to TxMgr and use check in BatchSubmitter by @axelKingsley in #9470
- Remove hardfork activation time overrides by @geoknee in #9642
- feat(op-node): gater unblock by @felipe-op in #9763
- op-node: Restore previous unsafe chain when invalid span batch by @pcw109550 in #8925
- export ChannelBuilder so we can use it in external analysis scripts by @roberto-bayardo in #9784
- op-node: Unhide the safedb.path option by @ajsutton in #9789
- More bootnodes by @trianglesphere in #9801
- simplify channel state publishing flow by separating tx sending from result processing by @roberto-bayardo in #9757
- op-batcher: Multi-blob Support by @sebastianst in #9779
- feat: add tx data version byte by @tchardin in #9845
- op-batcher: more accurate max channel duration tracking by @danyalprout in #9769
- remove an impossible condition in
NextBatch
by @zhiqiangxu in #9885 - feat(op-node): p2p rpc input validation by @felipe-op in #9897
- op-batcher: rework channel & compressor config, fix overhead bug by @sebastianst in #9887
- op-batcher: fix "handle receipt" log message to properly log id by @sebastianst in #9918
New Contributors
- @alecananian made their first contribution in #9805
- @friendwu made their first contribution in #9862
Full Changelog: v1.7.0...v1.7.2