Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
b2dff1b
feat: add signet-rpc-storage crate scaffolding
prestwich Feb 11, 2026
802824b
feat: implement ETH RPC endpoints for signet-rpc-storage
prestwich Feb 12, 2026
477a732
test: add integration tests for ETH RPC endpoints
prestwich Feb 12, 2026
a435afa
fix: resolve review issues in endpoints and helpers
prestwich Feb 12, 2026
601c156
fix: correct log ordering comments in rpc test
prestwich Feb 12, 2026
35ed5cb
refactor: DRY up EVM setup, fix glob import, remove dead code
prestwich Feb 12, 2026
49ffbb6
refactor: move block resolution to StorageRpcCtx methods, drop RoTx b…
prestwich Feb 12, 2026
e7a543b
feat: add StorageRpcConfig and integrate RPC configuration values
prestwich Feb 12, 2026
fed52a0
feat: port missing RPC endpoints and add integration tests
prestwich Feb 12, 2026
291ab9f
chore: use signet-storage 0.3.0 from crates.io, remove patch overrides
prestwich Feb 13, 2026
2163d98
refactor: adapt rpc-storage to signet-storage 0.3.0 API
prestwich Feb 13, 2026
d6114f8
chore: bump signet-storage crates to 0.4.0
prestwich Feb 14, 2026
2963621
refactor: use hot storage for block resolution and header lookups
prestwich Feb 14, 2026
0c08f2f
refactor: align rpc-storage data shapes with canonical rpc crate
prestwich Feb 14, 2026
9ce7840
refactor: align filter, subscription, and tx submission behavior
prestwich Feb 14, 2026
40f5734
fix: synthesize pending header in resolve_evm_block and bump storage …
prestwich Feb 14, 2026
d90d2b7
feat: add uncle and access lists
prestwich Feb 14, 2026
4d9c6db
refactor: address PR review comments across rpc-storage crate
prestwich Feb 14, 2026
b40411e
feat: bump ajj to 0.5.0 with lazy serialization and API migration
prestwich Feb 14, 2026
9be14ce
fix: migrate signet-rpc crate to ajj 0.5.0 API
prestwich Feb 14, 2026
2dcab79
refactor: replace json! macro with typed subscription notification st…
prestwich Feb 14, 2026
0d17805
chore: bump ajj to 0.6.0
prestwich Feb 14, 2026
4eb1b0a
fix: suppress dead_code warning in test harness and fix doc link
prestwich Feb 15, 2026
a819a3f
feat: use cold storage log streaming for eth_getLogs and eth_getFilte…
prestwich Feb 15, 2026
4e9c249
chore: remove future-evaluation
prestwich Feb 15, 2026
f5b91b0
refactor: extract type definitions from endpoint files into type modules
prestwich Feb 15, 2026
afdff5a
feat: restore permit-based subscription notification batching
prestwich Feb 15, 2026
a98f49e
refactor: move orphaned types to signet-node and remove journal hash …
prestwich Feb 15, 2026
f105e1b
refactor: address PR review — fix bugs, unify types, and clean up
prestwich Feb 16, 2026
0acb382
refactor: rewrite block processor and node to use signet-storage (#79)
prestwich Feb 16, 2026
61043ac
refactor: address remaining PR #75 review threads
prestwich Feb 16, 2026
4c851c0
fix: derive genesis hardforks from chain config instead of hardcoding…
prestwich Feb 16, 2026
acc0aea
refactor: address PR #75 review — ChainNotifier, storage consistency,…
prestwich Feb 16, 2026
0e79104
fix: load genesis into cold storage during prebuild
prestwich Feb 16, 2026
65904bd
refactor: bump SDK to rc.11, per-block processor, address PR review +…
prestwich Feb 16, 2026
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
58 changes: 21 additions & 37 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,28 +36,30 @@ incremental = false
[workspace.dependencies]
signet-blobber = { version = "0.16.0-rc.7", path = "crates/blobber" }
signet-block-processor = { version = "0.16.0-rc.7", path = "crates/block-processor" }
signet-db = { version = "0.16.0-rc.7", path = "crates/db" }
signet-genesis = { version = "0.16.0-rc.7", path = "crates/genesis" }
signet-node = { version = "0.16.0-rc.7", path = "crates/node" }
signet-node-config = { version = "0.16.0-rc.7", path = "crates/node-config" }
signet-node-tests = { version = "0.16.0-rc.7", path = "crates/node-tests" }
signet-node-types = { version = "0.16.0-rc.7", path = "crates/node-types" }
signet-rpc = { version = "0.16.0-rc.7", path = "crates/rpc" }

init4-bin-base = { version = "0.18.0-rc.8", features = ["alloy"] }

signet-bundle = "0.16.0-rc.8"
signet-constants = "0.16.0-rc.8"
signet-evm = "0.16.0-rc.8"
signet-extract = "0.16.0-rc.8"
signet-test-utils = "0.16.0-rc.8"
signet-tx-cache = "0.16.0-rc.8"
signet-types = "0.16.0-rc.8"
signet-zenith = "0.16.0-rc.8"
signet-journal = "0.16.0-rc.8"
signet-bundle = "0.16.0-rc.11"
signet-constants = "0.16.0-rc.11"
signet-evm = "0.16.0-rc.11"
signet-extract = "0.16.0-rc.11"
signet-test-utils = "0.16.0-rc.11"
signet-tx-cache = "0.16.0-rc.11"
signet-types = "0.16.0-rc.11"
signet-zenith = "0.16.0-rc.11"
signet-journal = "0.16.0-rc.11"
signet-storage = "0.6.2"
signet-cold = "0.6.2"
signet-hot = "0.6.2"
signet-storage-types = "0.6.2"

# ajj
ajj = { version = "0.3.4" }
ajj = { version = "0.6.0" }

# trevm
trevm = { version = "0.34.0", features = ["full_env_cfg"] }
Expand All @@ -71,43 +73,24 @@ alloy = { version = "1.4.0", features = [
"genesis",
"arbitrary",
] }
alloy-contract = { version = "1.4.0", features = ["pubsub"] }

# Reth
reth = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-chainspec = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-codecs = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-db = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-db-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-db-common = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-eth-wire-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-exex = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-exex-test-utils = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-libmdbx = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-network-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-network-peers = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-node-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-prune-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-stages-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }
reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", tag = "v1.10.2" }

# Foundry periphery
foundry-blob-explorers = "0.17"

# Async
tokio = { version = "1.43.0", features = ["macros"] }
async-trait = "0.1.87"

# Pinned for compatibility with reth
parking_lot = "0.12"
tokio-stream = "0.1"
tokio-util = "0.7"

# Misc
chrono = "0.4.38"
clap = "4"
eyre = "0.6.12"
futures-util = "0.3.31"
hex = { package = "const-hex", version = "1.10", default-features = false, features = [
Expand All @@ -116,22 +99,23 @@ hex = { package = "const-hex", version = "1.10", default-features = false, featu
itertools = "0.14.0"
metrics = "0.24.2"
openssl = { version = "0.10", features = ["vendored"] }
proptest = "1.6.0"
reqwest = "0.12.9"
serde = { version = "1.0.217", features = ["derive"] }
serde_json = "1.0.137"
smallvec = "1.15.1"
tracing = "0.1.41"
tracing-subscriber = "0.3.19"
thiserror = "2.0.12"
url = "2.5.4"
uuid = "1.16.0"

# Test Utils
alloy-rlp = "0.3.11"
tempfile = "3.17.0"

# [patch.crates-io]
# signet-cold = { path = "../storage/crates/cold" }
# signet-hot = { path = "../storage/crates/hot" }
# signet-storage = { path = "../storage/crates/storage" }
# signet-storage-types = { path = "../storage/crates/types" }

# signet-bundle = { path = "../sdk/crates/bundle"}
# signet-constants = { path = "../sdk/crates/constants"}
# signet-evm = { path = "../sdk/crates/evm"}
Expand Down
6 changes: 4 additions & 2 deletions crates/blobber/src/shim.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,10 @@ impl From<RethRecovered> for RecoveredBlockShim {
}

impl HasTxns for RecoveredBlockShim {
fn transactions(&self) -> &[signet_types::primitives::TransactionSigned] {
&self.block.sealed_block().body().transactions
fn transactions(
&self,
) -> impl ExactSizeIterator<Item = &signet_types::primitives::TransactionSigned> {
self.block.sealed_block().body().transactions.iter()
}
}

Expand Down
8 changes: 2 additions & 6 deletions crates/block-processor/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,19 @@ repository.workspace = true
signet-constants.workspace = true
signet-evm.workspace = true
signet-extract.workspace = true
signet-journal.workspace = true
signet-types.workspace = true

init4-bin-base.workspace = true

trevm.workspace = true

signet-blobber.workspace = true
signet-db.workspace = true
signet-node-types.workspace = true
signet-hot.workspace = true
signet-storage-types.workspace = true

alloy.workspace = true

reth.workspace = true
reth-exex.workspace = true
reth-node-api.workspace = true
reth-chainspec.workspace = true

eyre.workspace = true
metrics.workspace = true
Expand Down
14 changes: 6 additions & 8 deletions crates/block-processor/README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
# Signet Block Processor

Block processing logic for the Signet Node. This crate takes a reth `Chain`,
runs the Signet EVM, and commits the results to a database.
Block processing logic for the Signet Node. This crate extracts and processes
Signet blocks from host chain commits using the EVM, reading rollup state from
hot storage.

# Significant Types

- A few convenience type aliases:
- `PrimitivesOf<Host>` - The primitives type used by the host.
- `Chain<Host>` - A reth `Chain` using the host's primitives.
- `ExExNotification<Host>` - A reth `ExExNotification` using the host's
primitives.
- `SignetBlockProcessorV1<Host, Db>` - The first version of the block processor.
- `SignetBlockProcessor<H, Alias>` — The block processor. Reads state from
`HotKv` storage, runs the EVM via `signet_evm`, and returns an
`ExecutedBlock`.
13 changes: 0 additions & 13 deletions crates/block-processor/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,5 @@ pub(crate) mod metrics;
mod alias;
pub use alias::{AliasOracle, AliasOracleFactory};

mod utils;
pub use utils::revm_spec;

mod v1;
pub use v1::SignetBlockProcessor as SignetBlockProcessorV1;

/// Primitives used by the host.
pub type PrimitivesOf<Host> =
<<Host as reth_node_api::FullNodeTypes>::Types as reth_node_api::NodeTypes>::Primitives;

/// A [`reth::providers::Chain`] using the host primitives.
pub type Chain<Host> = reth::providers::Chain<PrimitivesOf<Host>>;

/// A [`reth_exex::ExExNotification`] using the host primitives.
pub type ExExNotification<Host> = reth_exex::ExExNotification<PrimitivesOf<Host>>;
13 changes: 0 additions & 13 deletions crates/block-processor/src/metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,6 @@ const ENTER_TOKEN_PROCESSED_HELP: &str =
const TRANSACT_PROCESSED: &str = "signet.block_processor.transact_events.processed";
const TRANSACT_PROCESSED_HELP: &str = "Histogram of number of transact events processed per block";

const EXTRACTION_TIME: &str = "signet.block_processor.extraction.time";
const EXTRACTION_TIME_HELP: &str = "Time taken to extract signet outputs from a host notification. Note: sometimes the extraction includes multiple blocks.";

const PROCESSING_TIME: &str = "signet.block_processor.processing.time";
const PROCESSING_TIME_HELP: &str =
"Time taken to process a single signet block from extracts, in milliseconds.";
Expand All @@ -80,7 +77,6 @@ static DESCRIBE: LazyLock<()> = LazyLock::new(|| {
describe_histogram!(ENTER_PROCESSED, ENTER_PROCESSED_HELP);
describe_histogram!(ENTER_TOKEN_PROCESSED, ENTER_TOKEN_PROCESSED_HELP);
describe_histogram!(TRANSACT_PROCESSED, TRANSACT_PROCESSED_HELP);
describe_histogram!(EXTRACTION_TIME, EXTRACTION_TIME_HELP);
describe_histogram!(PROCESSING_TIME, PROCESSING_TIME_HELP);
describe_histogram!(BLOCK_GAS_USED, BLOCK_GAS_USED_HELP);
});
Expand Down Expand Up @@ -184,15 +180,6 @@ fn record_transacts_processed(value: u64) {
transacts_processed().record(value as f64);
}

fn extraction_time() -> Histogram {
LazyLock::force(&DESCRIBE);
histogram!(EXTRACTION_TIME)
}

pub(crate) fn record_extraction_time(started_at: &std::time::Instant) {
extraction_time().record(started_at.elapsed().as_millis() as f64);
}

fn processing_time() -> Histogram {
LazyLock::force(&DESCRIBE);
histogram!(PROCESSING_TIME)
Expand Down
44 changes: 0 additions & 44 deletions crates/block-processor/src/utils.rs

This file was deleted.

Loading