Repository navigation
Bump Base to v1.5.1 - #40
Merged
Merged
Conversation
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix(batcher): time out every RPC call after --network-timeout (base#5630) * fix(batcher): time out the L2 reads of a sequencer after 10 seconds * docs(batcher): keep the sequencer timeouts out of the CLI README * fix(batcher): time out every RPC call after --network-timeout * refactor(batcher): name the RPC client builder for what it builds * fix(batcher): log the L1 WS origin and document the network timeout * refactor(batcher): expose the tx manager settings as batcher config fields (cherry picked from commit f348cb6) * fix(batcher): keep the buffer when a node behind on L1 reports a lower safe head (base#5660) * fix(batcher): keep the buffer when a node behind on L1 reports a lower safe head * docs(batcher): state the ordering a derivation status guarantees * fix(batcher): wait for a starting rollup node at startup instead of exiting * refactor(batcher): name the empty derivation status check after what it checks * docs(batcher): name both causes of a lower safe head past the last L1 block (cherry picked from commit 85af58b) * fix(batcher): give each blob count and low blob fill its own histogram bucket (base#5773) (cherry picked from commit e9edf70) * fix(batcher): compare shadow parity only up to the validator safe head (base#5832) (cherry picked from commit 68cb0ec) * fix(batcher): measure the DA backlog in estimated compressed bytes (base#5833) (cherry picked from commit 2cebe4b) * feat(batcher): expose the throttle DA limits as flags with calibrated defaults (base#5835) * feat(batcher): expose the throttle DA limits as flags * feat(batcher): calibrate the throttle defaults for estimated DA bytes (cherry picked from commit 6e64f37) * fix(batcher): let the driver drain when a background task exits (base#5855) (cherry picked from commit 4fe6ef4)
…-e2e step back to v1.5.1 (base#5877) * fix(proof): use each game's intermediate block interval (base#5794) * fix(proof): use each game's intermediate block interval * fix(prover-service): reject rows without a request payload instead of rebuilding one (cherry picked from commit d918f45) * fix(snark-e2e): step back 100 L2 blocks at a time for 200ms blocks (base#5840) (cherry picked from commit 65a7646)
…the table to v1.5.1 (base#6064) * [backport] fix(disc): ping unverifiable ENRs so NATed peers can join the table to v1.5.1 (base#6025) Squashed cherry-pick of base#6025: (cherry picked from commit ef1835e) (cherry picked from commit a37ab29) * fix(disc): verify the actual ping destination Amp-Thread-ID: https://ampcode.com/threads/T-01a14beb-8703-76a8-86fe-4e5a5c08f8f1 Co-authored-by: Amp <amp@ampcode.com> (cherry picked from commit 6a5356a) * fix(disc): test verification without IPv6 sockets Amp-Thread-ID: https://ampcode.com/threads/T-01a14beb-8703-76a8-86fe-4e5a5c08f8f1 Co-authored-by: Amp <amp@ampcode.com> (cherry picked from commit 17ad249) --------- Co-authored-by: Amp <amp@ampcode.com>
* fix(tx-manager): always raise a zero fee in a replacement (base#6085) (cherry picked from commit f3685f3) * fix(batcher): let the shutdown signal handler own SIGINT (base#6087) * fix(batcher): let the shutdown signal handler own SIGINT * fix(batcher): stop setup on the shutdown signal (cherry picked from commit 7ae6633) * fix(batcher): reject a batcher hash that derivation rejects (base#6086) (cherry picked from commit 41a702d)
Activate Denim on Base Mainnet at 1793901600 (Thu Nov 5 2026 18:00:00 UTC), the same time of day as the Mainnet Cobalt activation.
…uilder cutover (base#6132) (base#6136) The cutover router sends every build to the unselected builder with no_tx_pool set. The native builder recorded inclusion histograms for those shadow builds, doubling txs_included_per_block and its sibling gas and fee-revenue histograms. Record them only for pool builds, matching the flashblocks builder. (cherry picked from commit e603fbf) Co-authored-by: Toshi <toshi-noreply@coinbase.com>
…ert them in one builder call (base#5816) (base#6142) * perf(txpool): validate transaction batches in one job with one state provider BaseTransactionPool::add_transactions validated and admitted each transaction separately, so a batch paid one validation-task round trip and one latest-state provider per transaction. Validate the protocol transactions of a batch with a single validate_transactions call that shares one state provider, then admit each in submission order. Batches containing EIP-8130 sidecar transactions keep the per-transaction path. * test(txpool): cover batch replacements, mixed origins and sidecar fallback Also qualify the batch outcome comment: outcomes match per-transaction adds unless the canonical head or the pool changes during the batch. * perf(txpool): insert forwarded transaction batches in one builder call Add base_insertValidatedTransactions, which admits up to 1024 validated transactions as one pool batch through add_transactions_with_origins and returns the single-call result for each, in order. The builder then validates a forwarded batch against one state provider instead of one per transaction. Forwarders use it behind --tx-forwarding-batched-insert, which defaults to off; with it off they send JSON-RPC batches of single calls as before. Roll out in two steps: deploy builders and sequencers that serve the method, then enable the flag on mempool nodes. With the flag on, batches over the limit or with requests lacking a batched form keep using single calls. --------- (cherry picked from commit 508a4a2) Co-authored-by: Brian Bland <brian.bland@coinbase.com> Co-authored-by: Toshi <toshi-noreply@coinbase.com>
…e#5817) (base#6140) `UnifiedTipPriority::cmp` cross-multiplied with `U256::saturating_mul`. When a product saturated (tips above 2^192 wei), distinct bids compared equal and equality was no longer transitive, so sorted and ordered collections could order the same bids differently depending on insertion history. Priority-fee bids (gas 1 on both sides) now compare tips directly, and other pairs compare exact 320-bit U256 x u64 products. A gas of 0 compares as 1. Ordering is unchanged for every pair whose product fits in 256 bits; only ordering among unpayable tips above 2^192 wei changes. (cherry picked from commit 792cb64) Co-authored-by: Toshi <toshi-noreply@coinbase.com>
base#5717) (base#6175) Lane invalidation compared every parked and ready entry by recomputing BestTransactionLane::for_transaction. Store the lane alongside each entry (and the source head) so invalidation compares a stored value and yielding no longer recomputes the lane already derived when the source head was filled. (cherry picked from commit 2a0ebfe) Co-authored-by: Brian Bland <brian.bland@coinbase.com> Co-authored-by: Toshi <toshi-noreply@coinbase.com>
invalidate_lane only marks the lane Invalid. Members of an invalid lane are dropped when promote, discard_parked, ready_priority, or pop_ready touches them, so a rejection no longer scans every parked and ready entry. (cherry picked from commit 80b926a) Co-authored-by: Toshi <toshi-noreply@coinbase.com>
…ying (base#6180) The wrapper copied the full call input into a new buffer before dispatch. Every dispatcher already takes `&[u8]`, so pass the borrowed input through. Gas charged, return data, and state are unchanged. Co-authored-by: Chris Hunter <chris.hunter@coinbase.com>
Release v1.5.1
Cargo.lock also picks up the 1.5.1 version of the Firehose crates.
UlysseCorbeil
approved these changes
Oct 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merges upstream Base
v1.5.1intorelease/1.x. Tagv1.5.1-fh3.1once merged.v1.5.1 schedules the Denim hardfork on Base mainnet at 2026-11-05 18:00:00 UTC (
1_793_901_600), so mainnet nodes must run this release before then. The merge had no conflicts.streamingfast/rethstays onbase-v2.5.2.8-fh3.1-2(upstream still pinsbase-v2.5.2.8) andfirehose-traceron 5.7.0. The Firehose block model is unchanged, so the tag keepsfh3.1. No other StreamingFast repository needs a release first.Besides the merge:
ACTIVATIONS.md: Denim mainnet schedule, and two Denim notes (millisecond block time vs the new RPCtimestampMsfields, and flashblocks stopping).CHANGELOG
Test Execution Summary
Branch
bump/base-1.5.1(release/1.xatv1.5.0-fh3.1-2+git merge v1.5.1, no conflicts).Build Status
cargo test --no-run -p base-execution-firehose -p base-firehose-tests -p base-firehose-flashblocks -p base-reth-node -p base-execution-chainspec -p base-common-genesis -p base-common-chains: PASSEDcargo build --release --package base-reth-node --bin base-reth-node --package base-consensus --bin base-consensus(same command asDockerfile.sf): PASSED (10 min)cargo clippy -p base-reth-node --tests: PASSED, no warnings inbin/node(existing doc-backtick warnings inbase-execution-firehoseandbase-execution-flashblocksare unchanged)base-reth-node node --chain base --datadir <empty dir> --disable-discoveryfor 90 s: PASSED. PrintsFIRE INIT 3.1 reth base-1.5.1and the genesisFIRE BLOCK 0, listsDenim @1793901600in the hardforks, and starts without a Denim schedule error.Unit Tests
cargo test -p base-firehose-testscargo test -p base-firehose-flashblockscargo test -p base-reth-nodemainnet_block_time_switches_to_milliseconds_at_denimcargo test -p base-execution-firehosecargo test -p base-execution-chainspeccargo test -p base-common-genesiscargo test -p base-common-chainscargo test -p reth-firehose -p reth-firehose-testsstreamingfast/rethcheckout atbase-v2.5.2.8-fh3.1-2(the pinned tag, unchanged by this bump); cargo cannot test a git dependency with dev-dependencies from this workspaceIntegration Tests
RUSTFLAGS="-C debug-assertions=off" RUST_MIN_STACK=33554432 cargo test -p base-system-tests --test firehose_denim --test firehose_b20 --test firehose_cobalt_b20, Docker-backed:firehose_b20::b20_transfer_is_tracedfirehose_cobalt_b20::cobalt_b20_surfaces_are_tracedfirehose_denim::denim_activation_block_traces_base_time_installBattlefield Tests
streamingfast/battlefield-ethereumatffd9260(origin/HEAD),op-reth-devnetsuite with this branch's releasebase-reth-node(1.5.1) as the Firehose node:./scripts/optimism/run_optimism_devnet.sh, thenOP_RETH_BINARY=<base>/target/release/base-reth-node RUST_MIN_STACK=33554432 ./scripts/run_firehose_op_reth_devnet.sh, thenpnpm test:fh3.0:op-reth-devnet. All goldens matched; no golden changed.fireeth tools compare-blocks-rpc -p localhost:8089 http://127.0.0.1:28545 1 160gave 160 identical, 0 different (the tests wrote up to block 156).ERRORor panic in the node log.firehose_denim(see Integration Tests) and by the unit test above for the mainnet block time.Firehose bug patterns
--tx-forwarding-batched-insert) stay on the mempool and builder side and never reach the traced executor. The precompile calldata change only borrows the input instead of copying it. None found.crates/execution/consensusor the engine validation path in the range. None found.1_793_901_600(2026-11-05 18:00 UTC). Its block content effects are traced sincev1.5.0-fh3.1. The mainnet schedule resolves (first Denim block 53_556_127 at1_793_901_601), so the millisecond FIRE BLOCK time applies on mainnet. New finding: Denim ends flashblocks, so the Firehose flashblocks partial-block stream goes quiet after activation. Everest and Zenith are unchanged. SeeACTIVATIONS.md.crates/common/consensusorcrates/common/rpc-typesin the range. None found.Open questions
--firehose-flashblocks-urlemits no partial blocks after activation (already the case on Base Sepolia since 2026-10-21). Nothing breaks: the extension keeps its connection and only records canonical heads. We can drop the flag after activation in next versions.