Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.sf.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
## Unreleased

### Added

* Firehose traces EIP-8130 transactions (type `0x79`, enabled by Everest) as
`TRX_TYPE_ACCOUNT_ABSTRACTION`, instead of stopping the node. The transaction's own fields are in
`TransactionTrace.account_abstraction_trx_input`, with each signed call linked to the call that
executed it, and `committed_phases` is in `TransactionReceipt.account_abstraction_trx_output`.
The calls of a phase that reverted are `state_reverted`, including the ones that succeeded before
it, while the phases that committed keep their state even though the transaction is `FAILED`.
The payer's gas purchase and refund, the fee payouts, the nonce increment, the nonce manager
writes and the delegation code are recorded on the root call.
Keystore account changes, which only Zenith enables, still stop the node.

## v1.5.0-fh3.1-1

### Changed
Expand Down
227 changes: 115 additions & 112 deletions Cargo.lock

Large diffs are not rendered by default.

152 changes: 76 additions & 76 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -640,90 +640,90 @@ notify = "8.2"
governor = "0.7"

# Firehose tracer (defined by the streamingfast reth fork, release/base-2.x branch).
reth-firehose = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-firehose-tests = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
firehose-tracer = "5.6.0"
reth-firehose = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-firehose-tests = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
firehose-tracer = "5.7.0"

# Shared tracing-regression framework (capture / invariants / projection / golden).
firehose-tracer-test = "5.6.0"
firehose-tracer-test = "5.7.0"

# Chain-agnostic generator for replayable Firehose prestate fixtures.
firehose-tracer-prestate = "5.6.0"
firehose-tracer-prestate = "5.7.0"

[patch.crates-io]
# SF fork of alloy-evm that routes system calls (EIP-4788, EIP-2935, etc.) through the
# Inspector, so Firehose tracing observes them. Must match the patch in streamingfast/reth.
alloy-evm = { git = "https://github.com/streamingfast/evm.git", tag = "v0.38.0-sf" }

[patch."https://github.com/base/reth"]
reth-basic-payload-builder = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-chain-state = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-chainspec = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-cli = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-cli-commands = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-cli-runner = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-cli-util = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-consensus = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-consensus-common = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-db = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-db-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-db-common = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-db-models = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-discv4 = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-discv5 = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-e2e-test-utils = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-ecies = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-engine-primitives = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-engine-tree = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-errors = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-eth-wire = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-eth-wire-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-ethereum-forks = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-ethereum-primitives = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-evm = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-evm-ethereum = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-execution-cache = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-execution-errors = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-execution-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-exex = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-exex-test-utils = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-ipc = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-net-nat = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-network = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-network-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-network-p2p = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-network-peers = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-node-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-node-builder = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-node-core = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-node-ethereum = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-node-metrics = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-payload-builder = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-payload-builder-primitives = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-payload-primitives = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-payload-util = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-payload-validator = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-provider = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-prune-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-revm = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-rpc = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-rpc-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-rpc-convert = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-rpc-engine-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-rpc-eth-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-rpc-eth-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-rpc-layer = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-rpc-server-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-stages-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-storage-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-storage-errors = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-tasks = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-testing-utils = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-tokio-util = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-tracing = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-tracing-otlp = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-transaction-pool = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-trie = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-trie-common = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-trie-db = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-trie-parallel = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1" }
reth-basic-payload-builder = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-chain-state = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-chainspec = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-cli = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-cli-commands = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-cli-runner = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-cli-util = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-consensus = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-consensus-common = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-db = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-db-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-db-common = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-db-models = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-discv4 = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-discv5 = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-e2e-test-utils = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-ecies = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-engine-primitives = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-engine-tree = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-errors = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-eth-wire = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-eth-wire-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-ethereum-forks = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-ethereum-primitives = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-evm = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-evm-ethereum = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-execution-cache = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-execution-errors = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-execution-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-exex = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-exex-test-utils = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-ipc = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-net-nat = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-network = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-network-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-network-p2p = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-network-peers = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-node-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-node-builder = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-node-core = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-node-ethereum = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-node-metrics = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-payload-builder = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-payload-builder-primitives = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-payload-primitives = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-payload-util = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-payload-validator = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-provider = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-prune-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-revm = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-rpc = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-rpc-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-rpc-convert = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-rpc-engine-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-rpc-eth-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-rpc-eth-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-rpc-layer = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-rpc-server-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-stages-types = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-storage-api = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-storage-errors = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-tasks = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-testing-utils = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-tokio-util = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-tracing = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-tracing-otlp = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-transaction-pool = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-trie = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-trie-common = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-trie-db = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
reth-trie-parallel = { git = "https://github.com/streamingfast/reth.git", tag = "base-v2.5.2.8-fh3.1-2" }
14 changes: 14 additions & 0 deletions crates/common/evm/src/eip8130_phase_statuses.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,4 +98,18 @@ impl Eip8130PhaseStatuses {
pub const fn take() -> Vec<u8> {
Vec::new()
}

/// Returns a copy of the statuses recorded by the most recent [`Self::set`] on this
/// thread, leaving them in place for [`Self::take`]. Empty in `no_std` builds.
#[cfg(feature = "std")]
pub fn peek() -> Vec<u8> {
PHASE_STATUSES.with(|cell| cell.borrow().clone())
}

/// Returns a copy of the statuses recorded by the most recent [`Self::set`] on this
/// thread, leaving them in place for [`Self::take`]. Empty in `no_std` builds.
#[cfg(not(feature = "std"))]
pub const fn peek() -> Vec<u8> {
Vec::new()
}
}
7 changes: 7 additions & 0 deletions crates/execution/firehose-tests/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,12 @@ serde_json.workspace = true
name = "prestate"
path = "tests/prestate.rs"

[[test]]
name = "eip8130"
path = "tests/eip8130.rs"

[dev-dependencies]
k256.workspace = true
alloy-signer.workspace = true
base-test-utils.workspace = true
base-execution-eip8130.workspace = true
4 changes: 2 additions & 2 deletions crates/execution/firehose-tests/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ pub use firehose_tracer_test::{
BlockDiff, BlockInvariants, BlockProjection, FirehoseCapture, Golden, InvariantConfig,
ProductionReplay, SymbolTable, Violation, VolatilePolicy,
};
pub use reth_firehose_tests::RunOutcome;
pub use reth_firehose_tests::{RunOutcome, TraceContext};

mod prestate;
pub use prestate::run_prestate;
pub use prestate::{run_block, run_prestate};

mod capture;
pub use capture::BaseFirehoseCapture;
Loading
Loading