Repository navigation
Merge upstream Base v1.5.0 - #34
Merged
Merged
Conversation
Co-authored-by: Toshi <toshi-noreply@coinbase.com>
* chore(consensus): remove legacy sync request shim Co-authored-by: Codex <codex-noreply@coinbase.com> * test(gossip): drop redundant V4 shim removal coverage Co-authored-by: Codex <codex-noreply@coinbase.com> --------- Co-authored-by: Codex <codex-noreply@coinbase.com>
* fix(rpc): include EIP-8130 transaction hash * style(rpc): apply nightly rustfmt grouping
…5131) * feat(bench): support auto-deployed swap harness workload * style(bench): format swap harness tests * fix(bench): make harness deploy async and harden log parsing
Amp-Thread-ID: https://ampcode.com/threads/T-01a0b556-f12a-744b-a6c2-378934d8f018 Co-authored-by: Amp <amp@ampcode.com>
…ase#4600) * feat(txpool): accept MeterBundleResponse on builder insert wire Carry metering as a first-class field on ValidatedTransaction so u128 timing survives JSON (flatten cannot). Builders apply it on insert; forwarder copies it from the pooled tx. Absent when None. Co-authored-by: Cursor <cursoragent@cursor.com> * feat(builder): write insert metering into the builder cache base_insertValidatedTransaction is the write path now that base_setMeteringInformation is going away. On inbound metering, clone into MeteringProvider so payload selection can keep using get(tx_hash). Co-authored-by: Cursor <cursoragent@cursor.com> * fix(txpool): clippy and call-site nits after 3/n rebase Co-authored-by: Cursor <cursoragent@cursor.com> * fix(txpool): write metering cache only after pool accept Rejected inserts no longer pollute the builder cache. Fold BuilderApiExtensionArgs Debug into the derive. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
…ets (base#5153) * fix(batcher): keep tracking in-flight submissions across pipeline resets * docs(batcher): state the stale-id rule once, on BatchPipeline::reset
Co-authored-by: Claude <noreply@anthropic.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a0c47c-4416-719a-ad1d-b041cade22be Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a0b70a-a4d2-7134-8238-e5dab4d6dbf7 Co-authored-by: Amp <amp@ampcode.com>
* ci(bench): add opt-in fresh-devnet advisory workflow * ci(bench): ignore unrelated label changes
* fix(ci): remove superseded review summary comments Amp-Thread-ID: https://ampcode.com/threads/T-01a0c490-b863-70b8-8840-755728aa8a51 Co-authored-by: Amp <amp@ampcode.com> * fix(ci): attempt every stale review summary deletion Amp-Thread-ID: https://ampcode.com/threads/T-01a0c490-b863-70b8-8840-755728aa8a51 Co-authored-by: Amp <amp@ampcode.com> * fix(ci): clear stale summaries after clean reviews Amp-Thread-ID: https://ampcode.com/threads/T-01a0c564-f4f3-73ab-98d4-131818c60ac3 Co-authored-by: Amp <amp@ampcode.com> --------- Co-authored-by: Amp <amp@ampcode.com>
…ase#5201) * feat(cli): default Base Sepolia upgrade signal contract Amp-Thread-ID: https://ampcode.com/threads/T-01a0c4ed-8f12-71bf-a2c5-016bb097c68c Co-authored-by: Amp <amp@ampcode.com> * fix(cli): correct upgrade contract defaults for all Base networks Amp-Thread-ID: https://ampcode.com/threads/T-01a0c4fd-f5c4-709c-b924-c5204da3865b Co-authored-by: Amp <amp@ampcode.com> * fix(cli): update mainnet upgrade contract address Amp-Thread-ID: https://ampcode.com/threads/T-01a0c4fd-f5c4-709c-b924-c5204da3865b Co-authored-by: Amp <amp@ampcode.com> * fix(cli): shut down the OTLP test node before process exit Amp-Thread-ID: https://ampcode.com/threads/T-01a0c490-b863-70b8-8840-755728aa8a51 Co-authored-by: Amp <amp@ampcode.com> --------- Co-authored-by: Amp <amp@ampcode.com>
* fix(consensus): retry sequencer EL sync probe Recover derivation when the EL becomes ready after a Syncing bootstrap response without resetting while snap sync is incomplete. BASE-676: https://linear.app/coinbase/issue/BASE-676/recover-sequencer-derivation-when-el-becomes-ready-after-bootstrap Amp-Thread-ID: https://ampcode.com/threads/T-01a0c567-7237-729e-a0ee-93d7c65f38e4 Co-authored-by: Amp <amp@ampcode.com> * fix(consensus): preserve engine wait metric Stop receive-wait timing before running the periodic EL readiness probe. Amp-Thread-ID: https://ampcode.com/threads/T-01a0c567-7237-729e-a0ee-93d7c65f38e4 Co-authored-by: Amp <amp@ampcode.com> --------- Co-authored-by: Amp <amp@ampcode.com>
* docs: clarify BaseTime availability during block execution Amp-Thread-ID: https://ampcode.com/threads/T-01a0c4ff-4775-7305-bde6-a73fbcdb43c1 Co-authored-by: Amp <amp@ampcode.com> * docs: quote BaseTime in Rustdoc Amp-Thread-ID: https://ampcode.com/threads/T-01a0c4ff-4775-7305-bde6-a73fbcdb43c1 Co-authored-by: Amp <amp@ampcode.com> --------- Co-authored-by: Amp <amp@ampcode.com>
…ase#5144) Introduce Enabled/Disabled variants for QueuedEngineDerivationClient and QueuedL1WatcherDerivationClient. Both types now expose new() and disabled() constructors and use a consistent Enabled { tx }/Disabled enum internally, making the disabled state explicit in the type system.
* feat(precompiles): reject B20-prefix recipients at Denim Co-authored-by: Codex <codex-noreply@coinbase.com> * test(precompiles): cover B20-prefix credit recipients Co-authored-by: Codex <codex-noreply@coinbase.com> * style(precompiles): apply nightly formatting Co-authored-by: Codex <codex-noreply@coinbase.com> * fix(precompiles): reject only the token as recipient Co-authored-by: OpenCode <opencode-noreply@coinbase.com> * style(precompiles): apply nightly formatting Co-authored-by: OpenCode <opencode-noreply@coinbase.com> * refactor(precompiles): rename credit recipient module Co-authored-by: OpenCode <opencode-noreply@coinbase.com> --------- Co-authored-by: Codex <codex-noreply@coinbase.com> Co-authored-by: Stephan Cilliers <stephan.cilliers@coinbase.com> Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
* chore(ingress-rpc): remove service Delete the Tips ingress-rpc service (bin/ingress-rpc and crates/infra/ingress-rpc) and all of its build and devnet wiring: workspace deps, Docker bake targets and Dockerfile stages, the compose overlay service, proxyd ingress forwarding, scrape job, dashboard panels, and docs. The transaction-event vocabulary (ingress-rpc producer and ingress lifecycle event types) plus audit retention mappings are intentionally kept so historical audit-archiver rows still parse. Devnet overlay naming (just devnet ingress, L2_INGRESS_RPC_URL) is unchanged; that URL now refers to the proxyd entrypoint. * chore(devnet): rename ingress stack to tx-observability Follow-up to the ingress-rpc removal: the remaining devnet stack is the transaction-observability pipeline plus the proxyd entrypoint, so replace the stale ingress naming with what things are now. - docker-compose.ingress.yml -> docker-compose.tx-observability.yml - just devnet ingress[-down/-logs] -> just devnet tx-observability[-down/-logs] - bake group ingress / INGRESS_TARGETS -> tx-observability / TX_OBSERVABILITY_TARGETS - L2_INGRESS_HTTP_PORT / L2_INGRESS_RPC_URL -> L2_PROXYD_HTTP_PORT / L2_PROXYD_RPC_URL - local-devnet-ingress config name, x-ingress-healthcheck anchor, and docs/comments updated to match; validity-forwarding 'ingress nodes' reworded to 'mempool nodes'. Generic transaction-admission 'ingress' terminology in txpool, builder, consensus, and systems tests is intentionally untouched.
…se#5145) * feat(consensus): add disabled-mode derivation and L1 watcher clients Introduce Enabled/Disabled variants for QueuedEngineDerivationClient and QueuedL1WatcherDerivationClient. Both types now expose new() and disabled() constructors and use a consistent Enabled { tx }/Disabled enum internally, making the disabled state explicit in the type system. * feat(rpc): reject admin_postUnsafePayload for isolated sequencers * refactor(rpc): encode admin network access
* feat(consensus): wire isolated sequencer mode end to end * refactor(consensus): adapt isolated-mode capability constructors
* test(acceptance): stop health checks timing out on loaded CI runners The HeadsHealthy unit tests ran every check under a 60 ms timeout (80 ms scenario deadline) against real local TCP servers. On a loaded runner the rounds can exceed that, so the RPC deadline fires and the check reports Error instead of Passed or Failed. Give these tests the 5 s RPC budget, and keep the 60 ms timeout only for the case that deliberately exercises the request deadline. Co-authored-by: Toshi <toshi-noreply@coinbase.com> * test(acceptance): shorten deadline-outcome waits in check tests Co-authored-by: Toshi <toshi-noreply@coinbase.com> --------- Co-authored-by: Toshi <toshi-noreply@coinbase.com>
Co-authored-by: Toshi <toshi-noreply@coinbase.com>
* fix(tx-forwarding): stop emitting TXPOOL_BUILDER_CONSUMED * test(tx-forwarding): assert the full event journal across mempool and builder nodes
… the writer thread (base#5627) * perf(observability-events): build and serialize transaction events on the writer thread TransactionEventWriter now queues a deferred event builder instead of a serialized line. The writer thread finishes the event ID, validates and serializes the event, then appends it, so producers only pay for the enqueue. The flashblocks builder also defers its event data serialization, taking it out of the payload build loop. The bounded queue stays lossy: a full queue drops the event and counts it under the backpressure reason. Validation and serialization failures are counted on the writer thread instead of being returned to the caller, and a panicking event builder is caught and dropped rather than unwinding the caller. tracing-appender is no longer needed. Co-authored-by: Toshi <toshi-noreply@coinbase.com> * fix(observability-events): preserve explicit event_time in emit_to Also move payload_id into the deferred builder closure instead of cloning it. --------- Co-authored-by: Toshi <toshi-noreply@coinbase.com>
…se#5647) Co-authored-by: Toshi <toshi-noreply@coinbase.com>
…base#5631) * feat(batcher): add a quadratic throttle strategy and --throttle-strategy * feat(batcher): default the DA throttle to the quadratic strategy * feat(batcher): split the throttle threshold into a start and a full one
…ng (base#5526) Co-authored-by: Toshi <toshi-noreply@coinbase.com>
…rover-port (base#5609) A zero attestation age made every Nitro attestation fail the freshness check, so no signer was ever registered, and a zero prover port made every instance poll target port 0. Both now fail at argument parsing. Co-authored-by: Toshi <toshi-noreply@coinbase.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Activate Denim on Base Sepolia at 1792605600 (Wed Oct 21 2026 18:00:00 UTC), the same time of day as the Sepolia Cobalt activation. (cherry picked from commit 25bc0ce)
Amp-Thread-ID: https://ampcode.com/threads/T-01a11d8b-22ed-75f9-a4a2-dbde4953e929 Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a11dc1-9bd7-710f-a1a8-533c94625011 Co-authored-by: Amp <amp@ampcode.com>
* feat(txpool): backport signed validity predicates to v1.5.0 Backport the net changes from base#5645 at 8857633, excluding unrelated main-branch merges. * fix(ci): resolve release-version fork-test patches Refresh the pinned base-anvil lockfile with the local crate patches before building. Without an explicit update, Cargo retains the locked 0.0.0 git crates and ignores the 1.5.0 release crates, running historical fork tests against stale precompiles.
(cherry picked from commit e3513cd) Co-authored-by: Brian Bland <brian.bland@coinbase.com> Co-authored-by: Toshi <toshi-noreply@coinbase.com>
Release v1.5.0 # Conflicts: # .depot/workflows/base-std-fork-tests.yml # .github/workflows/build-release.yml # CLAUDE.md # Cargo.lock # Cargo.toml # bin/base/Cargo.toml # bin/base/src/cli.rs # bin/base/src/commands/rpc.rs # bin/base/src/commands/sequencer.rs # bin/base/src/main.rs # bin/builder/src/main.rs # crates/batcher/cli/src/metrics.rs # crates/builder/cli/src/args.rs # crates/builder/core/benches/tx_selection.rs # crates/builder/core/src/config.rs # crates/builder/core/src/extension.rs # crates/builder/core/src/flashblocks/context.rs # crates/builder/core/src/shadow_validity.rs # crates/builder/core/tests/rpc.rs # crates/builder/multiplex/src/service_builder.rs # crates/common/chains/src/chain.rs # crates/common/chains/src/config.rs # crates/common/chains/src/upgrade.rs # crates/common/genesis/src/chain/upgrade.rs # crates/execution/cli/src/commands/download.rs # crates/execution/cli/src/standard_node.rs # crates/execution/node/src/node.rs # crates/execution/payload/src/builder.rs # crates/execution/payload/src/validity.rs # crates/execution/runner/Cargo.toml # crates/execution/runner/src/add_ons.rs # crates/execution/runner/src/lib.rs # crates/execution/tx-forwarding/tests/forwarding.rs # crates/execution/txpool-rpc/README.md # crates/execution/txpool-rpc/src/extension.rs # crates/execution/txpool-rpc/src/lib.rs # crates/execution/txpool-rpc/src/rpc.rs # crates/execution/txpool/src/transaction.rs # crates/infra/load-tests/README.md # crates/utilities/reth-cli/src/snapshots.rs # etc/systems/src/l2/in_process_builder.rs # etc/systems/src/l2/in_process_client.rs
Canyon, Denim and Everest install code and storage straight to the state DB, so the tracer missed them. List them for reth-firehose to emit.
sduchesneau
marked this pull request as ready for review
October 16, 2026 18:36
UlysseCorbeil
approved these changes
Oct 16, 2026
UlysseCorbeil
left a comment
There was a problem hiding this comment.
Checked the Firehose side: pre-execution writes are wired on the live, backfill and flashblocks paths, and the list matches the three installs v1.5.0 does outside the EVM lgtm.
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.0 and moves reth to
streamingfast/rethbase-v2.5.2.8-fh3.1(streamingfast/reth#72). Base Sepolia nodes must run this release before the Denim hardfork on 2026-10-21 18:00 UTC.Firehose impact
timestamp, and every block gets a BaseTime deposit at transaction index 1.BasePreExecutionWriteslists the locations Base writes this way (Canyoncreate2deployer, Denim BaseTime, Everest nonce manager). reth-firehose emits them: code as block-level code changes, storage in a system call to the written account.0x79), and an L1 signal can schedule it without a release. Firehose cannot represent them yet; the node stops on the first one with an error naming the transaction. No network has scheduled Everest. SeeACTIVATIONS.md.Changes
BaseAddOns(it now usesbase-node-core's). The engine-event hook the fork had added there is gone;FirehoseFlashblocksExtensionsubscribes toadd_ons_handle.engine_eventsfrom its node-started hook instead.crates/execution/payload/src/builder.rs,crates/execution/node/src/node.rs,crates/builder/multiplex/src/service_builder.rs: fork hunks re-applied on upstream's new versions (upstream dropped the payload builder'sTxsparameter). The built-block trace stays gated onno_tx_pool.reth-errorsadded to thebase/rethpatch list;firehose-prestatesets the neweverestupgrade field.Testing
cargo check --workspace --all-targetspasses.reth-firehose/reth-firehose-tests,base-execution-firehose,base-firehose-tests,base-firehose-flashblocks,base-firehose-prestateandbase-node-runnerlive tracing pass.firehose_b20,firehose_cobalt_b20and the newfirehose_denimpass.firehose_denimfails withoutBasePreExecutionWrites.base-reth-node: 79 passing, 0 failing, 15 pending.compare-blocks-rpcover blocks 1–685 is identical.Release
Changelog section is
v1.5.0-fh3.1.