From d745f1316a5ce7f91aae635364be9a82423588d0 Mon Sep 17 00:00:00 2001 From: kayibal Date: Wed, 22 Jul 2026 12:50:10 +0100 Subject: [PATCH 1/6] feat(builder-core): stream block-build lifecycle events MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional, non-blocking stream of block-build lifecycle events so in-process services can observe block construction as it happens. BuildEventEmitter owns an optional mpsc sender and is held as Arc on the payload builder and its context, built in service.rs and mirroring the existing ws_pub / rejected_tx_sender wiring. Emission uses try_send and never blocks building: a full channel drops the event (backpressure), and a closed channel — the consumer having gone away — warns once per emitter rather than on every subsequent transaction. The payload builder emits four events per job, correlated by payload id: IterationStart, one TxExecuted per committed transaction (carrying its receipt logs), and a terminal IterationComplete or IterationAborted. When no consumer is attached the emitter is a no-op and BuilderConfig carries only the Option wiring handle as data. A driver test asserts the full event sequence and single-payload-id correlation for a built block. Co-Authored-By: Claude Opus 4.8 --- crates/builder/cli/src/args.rs | 1 + crates/builder/core/src/build_events.rs | 135 ++++++++++++++++++ crates/builder/core/src/config.rs | 6 + .../builder/core/src/flashblocks/context.rs | 23 ++- .../builder/core/src/flashblocks/payload.rs | 35 ++++- .../builder/core/src/flashblocks/service.rs | 4 +- crates/builder/core/src/lib.rs | 3 + crates/builder/core/tests/build_events.rs | 64 +++++++++ etc/systems/src/l2/in_process_builder.rs | 1 + 9 files changed, 266 insertions(+), 6 deletions(-) create mode 100644 crates/builder/core/src/build_events.rs create mode 100644 crates/builder/core/tests/build_events.rs diff --git a/crates/builder/cli/src/args.rs b/crates/builder/cli/src/args.rs index 71bbde5a7c..d350a5869e 100644 --- a/crates/builder/cli/src/args.rs +++ b/crates/builder/cli/src/args.rs @@ -307,6 +307,7 @@ impl Args { audit_archiver_url: self.audit_archiver_url, rejected_tx_channel_size: self.rejected_tx_channel_size, max_rejected_txs_per_block: self.max_rejected_txs_per_block, + build_event_tx: None, }) } } diff --git a/crates/builder/core/src/build_events.rs b/crates/builder/core/src/build_events.rs new file mode 100644 index 0000000000..cfa84f67b9 --- /dev/null +++ b/crates/builder/core/src/build_events.rs @@ -0,0 +1,135 @@ +//! Optional build-event stream emitted by the flashblocks payload builder. +//! +//! When [`crate::BuilderConfig::build_event_tx`] is set, the payload builder emits one +//! [`BuildEvent::IterationStart`] per payload job, one [`BuildEvent::TxExecuted`] per +//! committed transaction (with its receipt logs), and a terminal +//! [`BuildEvent::IterationComplete`] or [`BuildEvent::IterationAborted`]. Emission is +//! non-blocking (`try_send`); a full channel drops the event with a warning and never +//! stalls block building. [`BuildEventEmitter`] wraps the optional sender and performs +//! the emission. + +use std::sync::atomic::{AtomicBool, Ordering}; + +use alloy_primitives::{Address, B256, Log}; +use reth_payload_builder::PayloadId; +use tokio::sync::mpsc::{self, error::TrySendError}; +use tracing::warn; + +/// Sender half for the optional build-event stream. +pub type BuildEventSender = mpsc::Sender; + +/// Lifecycle events for one payload build (one block-building iteration). +#[derive(Debug, Clone)] +pub enum BuildEvent { + /// A payload build started. + IterationStart { + /// Identifier of the payload job; correlates all events of one iteration. + payload_id: PayloadId, + /// Number of the block being built. + block_number: u64, + /// Timestamp of the block being built. + timestamp: u64, + /// Base fee of the block being built. + base_fee: u64, + }, + /// A transaction was committed to the in-progress block. + TxExecuted { + /// Identifier of the payload job. + payload_id: PayloadId, + /// Hash of the committed transaction. + tx_hash: B256, + /// Transaction sender. + from: Address, + /// Transaction recipient, `None` for contract creation. + to: Option
, + /// Receipt logs of the committed transaction. + logs: Vec, + /// Gas used by the transaction. + gas_used: u64, + /// Whether execution succeeded (receipt status). + success: bool, + }, + /// The payload was finalized (block sealed). + IterationComplete { + /// Identifier of the payload job. + payload_id: PayloadId, + }, + /// The payload build exited with an error before finalizing. + IterationAborted { + /// Identifier of the payload job. + payload_id: PayloadId, + }, +} + +/// Emits [`BuildEvent`]s to an optional consumer without ever blocking the payload builder. +/// +/// Holds the optional channel and a one-shot latch so a closed consumer is reported once, +/// not per event. Construct one per builder and share it via `Arc`. +#[derive(Debug)] +pub struct BuildEventEmitter { + sender: Option, + closed_warned: AtomicBool, +} + +impl BuildEventEmitter { + /// Creates an emitter; `None` makes every [`Self::emit`] a no-op. + pub const fn new(sender: Option) -> Self { + Self { sender, closed_warned: AtomicBool::new(false) } + } + + /// Whether a consumer is attached. Emit sites can skip building event payloads when false. + pub const fn is_enabled(&self) -> bool { + self.sender.is_some() + } + + /// Emits a build event without blocking; drops the event if the channel is full + /// or closed. No-op if no consumer is attached. + /// + /// A full channel warns on every drop (genuine backpressure). A closed channel + /// (consumer gone) warns only once per emitter to avoid flooding logs for the + /// remaining lifetime of the builder. + pub fn emit(&self, event: BuildEvent) { + let Some(sender) = &self.sender else { return }; + match sender.try_send(event) { + Ok(()) => {} + Err(TrySendError::Full(_)) => { + warn!("build event dropped: channel full"); + } + Err(TrySendError::Closed(_)) => { + if !self.closed_warned.swap(true, Ordering::Relaxed) { + warn!( + "build event channel closed, consumer gone — suppressing further warnings" + ); + } + } + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + fn sample_event() -> BuildEvent { + BuildEvent::IterationComplete { payload_id: PayloadId::new([0; 8]) } + } + + #[test] + fn emit_does_not_panic_on_full_channel() { + let (tx, _rx) = mpsc::channel(1); + tx.try_send(sample_event()).expect("first send fills capacity"); + let emitter = BuildEventEmitter::new(Some(tx)); + + emitter.emit(sample_event()); + } + + #[test] + fn emit_does_not_panic_on_closed_channel() { + let (tx, rx) = mpsc::channel(1); + drop(rx); + let emitter = BuildEventEmitter::new(Some(tx)); + + emitter.emit(sample_event()); + emitter.emit(sample_event()); + } +} diff --git a/crates/builder/core/src/config.rs b/crates/builder/core/src/config.rs index 36b0a5da04..9b7fca5a2c 100644 --- a/crates/builder/core/src/config.rs +++ b/crates/builder/core/src/config.rs @@ -76,6 +76,10 @@ pub struct BuilderConfig { /// Maximum number of rejected transactions accumulated per block before /// further rejections are dropped. Prevents unbounded `ExecutionInfo` growth. pub max_rejected_txs_per_block: usize, + + /// Optional sink for build lifecycle events consumed by in-process services. + /// `None` (default) disables emission entirely. + pub build_event_tx: Option, } impl BuilderConfig { @@ -109,6 +113,7 @@ impl core::fmt::Debug for BuilderConfig { .field("audit_archiver_url", &self.audit_archiver_url) .field("rejected_tx_channel_size", &self.rejected_tx_channel_size) .field("max_rejected_txs_per_block", &self.max_rejected_txs_per_block) + .field("build_event_tx", &self.build_event_tx.is_some()) .finish() } } @@ -134,6 +139,7 @@ impl Default for BuilderConfig { audit_archiver_url: None, rejected_tx_channel_size: 500, max_rejected_txs_per_block: 500, + build_event_tx: None, } } } diff --git a/crates/builder/core/src/flashblocks/context.rs b/crates/builder/core/src/flashblocks/context.rs index db833ae480..d60cec84ad 100644 --- a/crates/builder/core/src/flashblocks/context.rs +++ b/crates/builder/core/src/flashblocks/context.rs @@ -4,7 +4,7 @@ use std::{ time::{Instant, SystemTime, UNIX_EPOCH}, }; -use alloy_consensus::{Eip658Value, Transaction}; +use alloy_consensus::{Eip658Value, Transaction, TxReceipt}; use alloy_eips::{Encodable2718, Typed2718}; use alloy_evm::Database; #[cfg(any(test, feature = "test-utils"))] @@ -42,8 +42,9 @@ use tokio_util::sync::CancellationToken; use tracing::{Level, debug, span, trace, warn}; use crate::{ - BuilderConfig, BuilderMetrics, ExecutionInfo, ExecutionMeteringLimitExceeded, PayloadTxsBounds, - ResourceLimits, TxResources, TxnExecutionError, TxnOutcome, + BuildEventEmitter, BuilderConfig, BuilderMetrics, ExecutionInfo, + ExecutionMeteringLimitExceeded, PayloadTxsBounds, ResourceLimits, TxResources, + TxnExecutionError, TxnOutcome, transaction_events::{ BuilderAcceptedEventData, BuilderConsideredEventData, BuilderRejectedEventData, BuilderTransactionEventContext, emit_builder_transaction_event, rejection_reason_code, @@ -253,6 +254,8 @@ pub struct BasePayloadBuilderCtx { pub builder_config: BuilderConfig, /// Sender for forwarding per-block batches of rejected transactions to the audit-archiver. pub rejected_tx_sender: Option>>, + /// Emitter for the optional build-event stream. + pub build_events: Arc, } impl BasePayloadBuilderCtx { @@ -1201,6 +1204,19 @@ impl BasePayloadBuilderCtx { }; info.receipts.push(self.build_receipt(ctx, None)); + if self.build_events.is_enabled() { + let logs = info.receipts.last().map(|r| r.logs().to_vec()).unwrap_or_default(); + self.build_events.emit(crate::BuildEvent::TxExecuted { + payload_id: self.payload_id(), + tx_hash, + from: tx.signer(), + to: tx.to(), + logs, + gas_used, + success: is_success, + }); + } + // commit changes evm.db_mut().commit(state); @@ -1337,6 +1353,7 @@ impl BasePayloadBuilderCtx { extra: FlashblocksExtraCtx::default(), builder_config: crate::BuilderConfig::default(), rejected_tx_sender: None, + build_events: Arc::new(BuildEventEmitter::new(None)), } } } diff --git a/crates/builder/core/src/flashblocks/payload.rs b/crates/builder/core/src/flashblocks/payload.rs index f6863099fd..dc26205ad0 100644 --- a/crates/builder/core/src/flashblocks/payload.rs +++ b/crates/builder/core/src/flashblocks/payload.rs @@ -52,7 +52,8 @@ use tokio_util::sync::CancellationToken; use tracing::{debug, error, info, metadata::Level, span, warn}; use crate::{ - BuilderConfig, BuilderMetrics, ExecutionInfo, PayloadBuilder, ResourceLimits, + BuildEventEmitter, BuilderConfig, BuilderMetrics, ExecutionInfo, PayloadBuilder, + ResourceLimits, flashblocks::{ FlashblocksExtraCtx, best_txs::BestFlashblocksTxs, @@ -120,12 +121,15 @@ pub(super) struct BasePayloadBuilder { pub config: BuilderConfig, /// Sender for forwarding per-block batches of rejected transactions to the audit-archiver. pub rejected_tx_sender: Option>>, + /// Emitter for the optional build-event stream. + pub build_events: Arc, /// Last flashblock emitted by this builder instance. last_emitted_flashblock_id: Arc, } impl BasePayloadBuilder { /// `BasePayloadBuilder` constructor. + #[allow(clippy::too_many_arguments)] pub(super) fn new( evm_config: BaseEvmConfig, pool: Pool, @@ -134,6 +138,7 @@ impl BasePayloadBuilder { payload_tx: mpsc::Sender, ws_pub: Arc, rejected_tx_sender: Option>>, + build_events: Arc, ) -> Self { Self { evm_config, @@ -143,6 +148,7 @@ impl BasePayloadBuilder { ws_pub, config, rejected_tx_sender, + build_events, last_emitted_flashblock_id: Arc::default(), } } @@ -241,9 +247,25 @@ where extra, builder_config: self.config.clone(), rejected_tx_sender: self.rejected_tx_sender.clone(), + build_events: Arc::clone(&self.build_events), }) } + /// Delegates to [`Self::build_payload`], additionally emitting an + /// [`crate::BuildEvent::IterationAborted`] event if the build fails. + async fn build_payload_with_events( + &self, + args: BuildArguments, BaseBuiltPayload>, + best_payload: BlockCell, + ) -> Result<(), PayloadBuilderError> { + let payload_id = args.config.attributes.payload_attributes.id; + let result = self.build_payload(args, best_payload).await; + if result.is_err() { + self.build_events.emit(crate::BuildEvent::IterationAborted { payload_id }); + } + result + } + /// Constructs a Base payload from the transactions sent via the /// Payload attributes by the sequencer. If the `no_tx_pool` argument is passed in /// the payload attributes, the transaction pool will be ignored and the only transactions @@ -288,6 +310,13 @@ where ) .map_err(|e| PayloadBuilderError::Other(e.into()))?; + self.build_events.emit(crate::BuildEvent::IterationStart { + payload_id: ctx.payload_id(), + block_number, + timestamp, + base_fee: ctx.base_fee(), + }); + let state_provider = self.client.state_by_block_hash(ctx.parent().hash())?; let db = StateProviderDatabase::new(state_provider); @@ -935,6 +964,8 @@ where ctx.flush_rejected_txs(info); self.emit_final_inclusion_events(ctx, &final_payload); + self.build_events + .emit(crate::BuildEvent::IterationComplete { payload_id: ctx.payload_id() }); let elapsed = start_time.elapsed(); info!( @@ -1057,7 +1088,7 @@ where args: BuildArguments, best_payload: BlockCell, ) -> Result<(), PayloadBuilderError> { - self.build_payload(args, best_payload).await + self.build_payload_with_events(args, best_payload).await } } diff --git a/crates/builder/core/src/flashblocks/service.rs b/crates/builder/core/src/flashblocks/service.rs index c144a9312f..64f7b84931 100644 --- a/crates/builder/core/src/flashblocks/service.rs +++ b/crates/builder/core/src/flashblocks/service.rs @@ -20,7 +20,7 @@ use tracing::info; use super::{PayloadHandler, generator::BlockPayloadJobGenerator, payload::BasePayloadBuilder}; use crate::{ - BuilderConfig, RejectedTxForwarder, + BuildEventEmitter, BuilderConfig, RejectedTxForwarder, traits::{NodeBounds, PoolBounds}, }; @@ -57,6 +57,7 @@ impl FlashblocksServiceBuilder { let ws_pub: Arc = WebSocketPublisher::new(self.0.flashblocks_ws_addr)?.into(); + let build_events = Arc::new(BuildEventEmitter::new(self.0.build_event_tx.clone())); let payload_builder = BasePayloadBuilder::new( BaseEvmConfig::base(ctx.chain_spec()), pool, @@ -65,6 +66,7 @@ impl FlashblocksServiceBuilder { built_payload_tx, ws_pub, rejected_tx_sender, + build_events, ); let payload_generator = BlockPayloadJobGenerator::with_builder( ctx.provider().clone(), diff --git a/crates/builder/core/src/lib.rs b/crates/builder/core/src/lib.rs index cbbce594c6..ab0a59a1a6 100644 --- a/crates/builder/core/src/lib.rs +++ b/crates/builder/core/src/lib.rs @@ -10,6 +10,9 @@ mod config; pub use config::BuilderConfig; +mod build_events; +pub use build_events::{BuildEvent, BuildEventEmitter, BuildEventSender}; + mod metrics; pub use metrics::BuilderMetrics; diff --git a/crates/builder/core/tests/build_events.rs b/crates/builder/core/tests/build_events.rs new file mode 100644 index 0000000000..29458c275f --- /dev/null +++ b/crates/builder/core/tests/build_events.rs @@ -0,0 +1,64 @@ +#![allow(missing_docs)] + +use std::collections::HashSet; + +use base_builder_core::{ + BuildEvent, BuilderConfig, + test_utils::{TransactionBuilderExt, setup_test_instance_with_builder_config}, +}; + +/// Verifies that a single payload job emits its build-event stream in order +/// (`IterationStart` first, `IterationComplete` last), includes a `TxExecuted` for the +/// submitted transfer, and that every event shares the job's `payload_id`. +#[tokio::test] +async fn build_events_stream_full_iteration() -> eyre::Result<()> { + let (event_tx, mut event_rx) = tokio::sync::mpsc::channel(1024); + let mut config = BuilderConfig::for_tests(); + config.build_event_tx = Some(event_tx); + + let rbuilder = setup_test_instance_with_builder_config(config).await?; + let driver = rbuilder.driver().await?; + + let tx = driver + .create_transaction() + .random_valid_transfer() + .send() + .await + .expect("Failed to send transaction"); + + driver.build_new_block_with_current_timestamp(None).await?; + + let mut events = Vec::new(); + while let Ok(event) = event_rx.try_recv() { + events.push(event); + } + + assert!( + matches!(events.first(), Some(BuildEvent::IterationStart { .. })), + "first event must be IterationStart, got {events:?}" + ); + assert!( + matches!(events.last(), Some(BuildEvent::IterationComplete { .. })), + "last event must be IterationComplete, got {events:?}" + ); + + let executed: Vec<_> = + events.iter().filter(|event| matches!(event, BuildEvent::TxExecuted { .. })).collect(); + assert!(!executed.is_empty(), "expected at least one TxExecuted event"); + let BuildEvent::TxExecuted { tx_hash, success, .. } = executed[0] else { unreachable!() }; + assert_eq!(*tx_hash, *tx.tx_hash(), "TxExecuted should report the submitted tx hash"); + assert!(*success, "submitted transfer should succeed"); + + let payload_ids: HashSet<_> = events + .iter() + .map(|event| match event { + BuildEvent::IterationStart { payload_id, .. } + | BuildEvent::TxExecuted { payload_id, .. } + | BuildEvent::IterationComplete { payload_id } + | BuildEvent::IterationAborted { payload_id } => *payload_id, + }) + .collect(); + assert_eq!(payload_ids.len(), 1, "all events must share one payload id, got {events:?}"); + + Ok(()) +} diff --git a/etc/systems/src/l2/in_process_builder.rs b/etc/systems/src/l2/in_process_builder.rs index 8ebc344ba5..0f95fb8043 100644 --- a/etc/systems/src/l2/in_process_builder.rs +++ b/etc/systems/src/l2/in_process_builder.rs @@ -110,6 +110,7 @@ impl InProcessBuilder { block_time: Duration::from_millis(2000), flashblocks_ws_addr: SocketAddr::new(Ipv4Addr::LOCALHOST.into(), flashblocks_port), flashblocks_interval: Duration::from_millis(200), + build_event_tx: None, ..Default::default() }; From 289853ecf196e2c8ab0925cea4b281ff5ef48c27 Mon Sep 17 00:00:00 2001 From: kayibal Date: Wed, 22 Jul 2026 12:50:43 +0100 Subject: [PATCH 2/6] feat(intent-swap): add crate with intent_submitOrder RPC and config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce the base-intent-swap crate: an in-process service that accepts signed 1inch Fusion orders and (in later commits) settles them into the current block. This commit adds the RPC ingress and configuration. intent_submitOrder validates order shape and the Dutch-auction window and enqueues accepted orders; it deliberately does not recover the maker's EIP-712 signature — the on-chain LOP validates it, and an optional pre-flight (IntentSwapConfig::verify_onchain_taking, default off) can reject unfillable orders before signing. Distinct error codes cover malformed signature, expired auction, invalid order, a full intake queue, and an unavailable engine. The EOA signing key is redacted from Debug. The solver engine is the backrunner crate, consumed as a git dependency pinned by rev to builder-integration main. The tycho / fynd stack it pulls in pins tycho-common/-simulation/-execution at 0.305.1 in Cargo.lock; these are load-bearing, as fynd-core 0.81.1 does not compile against the newer 0.339.x line, so the lockfile must not be regenerated. Co-Authored-By: Claude Opus 4.8 --- Cargo.lock | 2699 +++++++++++++++++----- Cargo.toml | 5 + crates/builder/intent-swap/Cargo.toml | 45 + crates/builder/intent-swap/src/config.rs | 95 + crates/builder/intent-swap/src/lib.rs | 13 + crates/builder/intent-swap/src/rpc.rs | 197 ++ 6 files changed, 2473 insertions(+), 581 deletions(-) create mode 100644 crates/builder/intent-swap/Cargo.toml create mode 100644 crates/builder/intent-swap/src/config.rs create mode 100644 crates/builder/intent-swap/src/lib.rs create mode 100644 crates/builder/intent-swap/src/rpc.rs diff --git a/Cargo.lock b/Cargo.lock index 981bc45165..9b366a97d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -150,6 +150,8 @@ dependencies = [ "alloy-contract 1.8.3", "alloy-core", "alloy-eips 1.8.3", + "alloy-genesis 1.8.3", + "alloy-json-rpc 1.8.3", "alloy-network 1.8.3", "alloy-node-bindings 1.8.3", "alloy-provider 1.8.3", @@ -157,7 +159,11 @@ dependencies = [ "alloy-rpc-types 1.8.3", "alloy-serde 1.8.3", "alloy-signer 1.8.3", + "alloy-signer-aws", + "alloy-signer-gcp", + "alloy-signer-ledger", "alloy-signer-local 1.8.3", + "alloy-signer-turnkey", "alloy-transport 1.8.3", "alloy-transport-http 1.8.3", "alloy-trie", @@ -169,7 +175,7 @@ version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84e0378e959aa6a885897522080a990e80eb317f1e9a222a604492ea50e13096" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "num_enum 0.7.6", @@ -185,7 +191,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f16daaf7e1f95f62c6c3bf8a3fc3d78b08ae9777810c0bb5e94966c7cd57ef0" dependencies = [ "alloy-eips 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde 1.8.3", "alloy-trie", @@ -212,7 +218,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83447eeb17816e172f1dfc0db1f9dc0b7c5d069bd1f7cecbecceb382bf931015" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde 2.0.5", "alloy-trie", @@ -241,7 +247,7 @@ checksum = "118998d9015332ab1b4720ae1f1e3009491966a0349938a1f43ff45a8a4c6299" dependencies = [ "alloy-consensus 1.8.3", "alloy-eips 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde 1.8.3", "serde", @@ -255,7 +261,7 @@ checksum = "5406343e306856dc2be762700e98a16904de45dee14a07f233e742ce68daff2f" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde 2.0.5", "arbitrary", @@ -273,12 +279,12 @@ dependencies = [ "alloy-json-abi", "alloy-network 1.8.3", "alloy-network-primitives 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 1.8.3", "alloy-rpc-types-eth 1.8.3", "alloy-sol-types", "alloy-transport 1.8.3", - "futures", + "futures 0.3.32", "futures-util", "serde_json", "thiserror 2.0.18", @@ -296,12 +302,12 @@ dependencies = [ "alloy-json-abi", "alloy-network 2.0.5", "alloy-network-primitives 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-eth 2.0.5", "alloy-sol-types", "alloy-transport 2.0.5", - "futures", + "futures 0.3.32", "futures-util", "serde_json", "thiserror 2.0.18", @@ -316,7 +322,7 @@ checksum = "62ddde5968de6044d67af107ad835bc0069a7ca245870b94c5958a7d8712b184" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-sol-types", ] @@ -328,7 +334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a475bb02d9cef2dbb99065c1664ab3fe1f9352e21d6d5ed3f02cdbfc06ed1abc" dependencies = [ "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-type-parser", "alloy-sol-types", "derive_more 2.1.1", @@ -344,7 +350,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "crc", @@ -359,7 +365,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "borsh", @@ -373,7 +379,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "borsh", @@ -390,7 +396,7 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b827a6d7784fe3eb3489d40699407a4cdcce74271421a01bdffe60cf573bb16" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "borsh", @@ -405,7 +411,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "951e1d988b5753bc424b837c98ce0dc575031db99e7cd01833d3a5053b97951a" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "borsh", @@ -424,7 +430,7 @@ dependencies = [ "alloy-eip2930", "alloy-eip7702", "alloy-eip7928 0.3.7", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde 1.8.3", "auto_impl", @@ -447,7 +453,7 @@ dependencies = [ "alloy-eip2930", "alloy-eip7702", "alloy-eip7928 0.3.7", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde 2.0.5", "arbitrary", @@ -472,13 +478,13 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-hardforks 0.4.7", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", "alloy-sol-types", "auto_impl", "derive_more 2.1.1", - "revm", + "revm 40.0.3", "thiserror 2.0.18", "tracing", ] @@ -490,10 +496,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbf9480307b09d22876efb67d30cadd9013134c21f3a17ec9f93fd7536d38024" dependencies = [ "alloy-eips 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-serde 1.8.3", "alloy-trie", + "borsh", "serde", + "serde_with", ] [[package]] @@ -503,7 +511,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab0e0fe9e6d1120ad7bb9254c3fc2b9bc80a8df42a033fb626be6559c13d5153" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-serde 2.0.5", "alloy-trie", "borsh", @@ -519,7 +527,7 @@ checksum = "3165210652f71dfc094b051602bafd691f506c54050a174b1cba18fb5ef706a3" dependencies = [ "alloy-chains", "alloy-eip2124", - "alloy-primitives", + "alloy-primitives 1.6.0", "auto_impl", "dyn-clone", ] @@ -532,7 +540,7 @@ checksum = "83ba208044232d14d4adbfa77e57d6329f51bc1acc21f5667bb7db72d88a0831" dependencies = [ "alloy-chains", "alloy-eip2124", - "alloy-primitives", + "alloy-primitives 1.6.0", "auto_impl", "dyn-clone", "serde", @@ -544,7 +552,7 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c36c9d7f9021601b04bfef14a4b64849f6d73116a4e91e071d7fbfe10247901" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-type-parser", "serde", "serde_json", @@ -556,7 +564,7 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "422d110f1c40f1f8d0e5562b0b649c35f345fccb7093d9f02729943dcd1eef71" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "http 1.4.2", "serde", @@ -571,7 +579,7 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0a82e56b1843bce483942d54fcadea92e676f1bde162e93c7d3b621fabc4e1" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "http 1.4.2", "serde", @@ -591,7 +599,7 @@ dependencies = [ "alloy-eips 1.8.3", "alloy-json-rpc 1.8.3", "alloy-network-primitives 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-any 1.8.3", "alloy-rpc-types-eth 1.8.3", "alloy-serde 1.8.3", @@ -617,7 +625,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-json-rpc 2.0.5", "alloy-network-primitives 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-any 2.0.5", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", @@ -640,7 +648,7 @@ checksum = "eb82711d59a43fdfd79727c99f270b974c784ec4eb5728a0d0d22f26716c87ef" dependencies = [ "alloy-consensus 1.8.3", "alloy-eips 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-serde 1.8.3", "serde", ] @@ -653,7 +661,7 @@ checksum = "cd28d9bfd11729037d194f2b1d43db8642eb3f342032691f4ca96bb745479c3c" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-serde 2.0.5", "serde", ] @@ -667,7 +675,7 @@ dependencies = [ "alloy-genesis 1.8.3", "alloy-hardforks 0.2.13", "alloy-network 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 1.8.3", "alloy-signer-local 1.8.3", "k256", @@ -689,7 +697,7 @@ dependencies = [ "alloy-genesis 2.0.5", "alloy-hardforks 0.2.13", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 2.0.5", "alloy-signer-local 2.0.5", "k256", @@ -702,6 +710,28 @@ dependencies = [ "url", ] +[[package]] +name = "alloy-primitives" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "600d34d8de81e23b6d909c094e23b3d357e01ca36b78a8c5424c501eedbe86f0" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 0.99.20", + "hex-literal 0.4.1", + "itoa", + "k256", + "keccak-asm", + "proptest", + "rand 0.8.6", + "ruint", + "serde", + "tiny-keccak", +] + [[package]] name = "alloy-primitives" version = "1.6.0" @@ -747,10 +777,12 @@ dependencies = [ "alloy-network 1.8.3", "alloy-network-primitives 1.8.3", "alloy-node-bindings 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-client 1.8.3", "alloy-rpc-types-anvil 1.8.3", + "alloy-rpc-types-debug 1.8.3", "alloy-rpc-types-eth 1.8.3", + "alloy-rpc-types-trace 1.8.3", "alloy-signer 1.8.3", "alloy-sol-types", "alloy-transport 1.8.3", @@ -760,7 +792,7 @@ dependencies = [ "auto_impl", "dashmap", "either", - "futures", + "futures 0.3.32", "futures-utils-wasm", "lru 0.16.4", "parking_lot", @@ -787,14 +819,14 @@ dependencies = [ "alloy-json-rpc 2.0.5", "alloy-network 2.0.5", "alloy-network-primitives 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-pubsub", "alloy-rpc-client 2.0.5", "alloy-rpc-types-admin", - "alloy-rpc-types-debug", + "alloy-rpc-types-debug 2.0.5", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", - "alloy-rpc-types-trace", + "alloy-rpc-types-trace 2.0.5", "alloy-rpc-types-txpool", "alloy-signer 2.0.5", "alloy-sol-types", @@ -807,7 +839,7 @@ dependencies = [ "auto_impl", "dashmap", "either", - "futures", + "futures 0.3.32", "futures-utils-wasm", "lru 0.16.4", "parking_lot", @@ -829,11 +861,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd85cfea1fa8ebd20d3475e961fe3a3624c0eb4659ea137715c0c83c8aeaff0" dependencies = [ "alloy-json-rpc 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-transport 2.0.5", "auto_impl", "bimap", - "futures", + "futures 0.3.32", "parking_lot", "serde", "serde_json", @@ -873,10 +905,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94fcc9604042ca80bd37aa5e232ea1cd851f337e31e2babbbb345bc0b1c30de3" dependencies = [ "alloy-json-rpc 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-transport 1.8.3", "alloy-transport-http 1.8.3", - "futures", + "futures 0.3.32", "pin-project", "reqwest 0.13.4", "serde", @@ -896,13 +928,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24f461f091dc8f657e73b5dea18fd63d5c7049720cd252f1eade4a7ebed6a7e1" dependencies = [ "alloy-json-rpc 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-pubsub", "alloy-transport 2.0.5", "alloy-transport-http 2.0.5", "alloy-transport-ipc", "alloy-transport-ws", - "futures", + "futures 0.3.32", "pin-project", "reqwest 0.13.4", "serde", @@ -921,8 +953,10 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4faad925d3a669ffc15f43b3deec7fbdf2adeb28a4d6f9cf4bc661698c0f8f4b" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", + "alloy-rpc-types-debug 1.8.3", "alloy-rpc-types-eth 1.8.3", + "alloy-rpc-types-trace 1.8.3", "alloy-serde 1.8.3", "serde", ] @@ -933,8 +967,8 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "052c031d1f7c5611997056bbcb8814e5cbf20f7efeee8c3de690555172038cf2" dependencies = [ - "alloy-primitives", - "alloy-rpc-types-debug", + "alloy-primitives 1.6.0", + "alloy-rpc-types-debug 2.0.5", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", @@ -948,7 +982,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef669b370940e7945a3a384cc4024038cd69ee658b71270d59c20b78dd8d20d4" dependencies = [ "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "serde", "serde_json", ] @@ -959,7 +993,7 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47df51bedb3e6062cb9981187a51e86d0d64a4de66eb0855e9efe6574b044ddf" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 1.8.3", "alloy-serde 1.8.3", "serde", @@ -971,7 +1005,7 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ff111a54268dc0bbd3b17f98571a7e27cc661dc081ad2999d91888647eb2e11" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", "serde", @@ -996,7 +1030,7 @@ checksum = "0a6561ed4759c974d9c144500a59e3fb8c1d87327a12900d5ce455c0cae6dcb6" dependencies = [ "alloy-consensus-any 2.0.5", "alloy-network-primitives 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", "serde", @@ -1010,7 +1044,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a62f6ce2d95f59ed310bd90d5fd1566a29d1ec45cc219abbc5dcc807d31f136" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "derive_more 2.1.1", "ethereum_ssz", @@ -1023,13 +1057,25 @@ dependencies = [ "tree_hash_derive", ] +[[package]] +name = "alloy-rpc-types-debug" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2145138f3214928f08cd13da3cb51ef7482b5920d8ac5a02ecd4e38d1a8f6d1e" +dependencies = [ + "alloy-primitives 1.6.0", + "derive_more 2.1.1", + "serde", + "serde_with", +] + [[package]] name = "alloy-rpc-types-debug" version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48b9ad6eee93dd35a9ec0a6c1c6b180892a900ee17a6ed6500921552dd71e846" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "derive_more 2.1.1", "serde", @@ -1044,7 +1090,7 @@ checksum = "7eba59e1c069f168a01982f42a57797736923b76aa854194df4930be17867e1c" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde 2.0.5", "arbitrary", @@ -1067,7 +1113,7 @@ dependencies = [ "alloy-consensus-any 1.8.3", "alloy-eips 1.8.3", "alloy-network-primitives 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde 1.8.3", "alloy-sol-types", @@ -1088,7 +1134,7 @@ dependencies = [ "alloy-consensus-any 2.0.5", "alloy-eips 2.0.5", "alloy-network-primitives 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde 2.0.5", "alloy-sol-types", @@ -1108,20 +1154,34 @@ checksum = "ed1004c1d68bfaee001712f83356f88031ab74a727b8560fb7fc738d1281ebe5" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", "serde", "serde_json", ] +[[package]] +name = "alloy-rpc-types-trace" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e5a4d010f86cd4e01e5205ec273911e538e1738e76d8bafe9ecd245910ea5a3" +dependencies = [ + "alloy-primitives 1.6.0", + "alloy-rpc-types-eth 1.8.3", + "alloy-serde 1.8.3", + "serde", + "serde_json", + "thiserror 2.0.18", +] + [[package]] name = "alloy-rpc-types-trace" version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "514b4b1ce3354f65067b4fc7eb75358e0f2ec8be3340c96dea65d6894f9ca435" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", "serde", @@ -1135,7 +1195,7 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76e34a42ebb4a71ab0bfdebc6d2f3c7bf809f01edf154d08fed159d10d1ef1d4" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", "serde", @@ -1147,7 +1207,7 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11ece63b89294b8614ab3f483560c08d016930f842bf36da56bf0b764a15c11e" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "serde", "serde_json", ] @@ -1158,7 +1218,7 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc21a8772af7d78bba286726aa245bd2ff81cd9abe230afea2e91578996831c9" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "arbitrary", "serde", "serde_json", @@ -1170,7 +1230,9 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43f447aefab0f1c0649f71edc33f590992d4e122bc35fb9cdbbf67d4421ace85" dependencies = [ - "alloy-primitives", + "alloy-dyn-abi", + "alloy-primitives 1.6.0", + "alloy-sol-types", "async-trait", "auto_impl", "either", @@ -1185,7 +1247,7 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ffbce94c50dd9d4d1f83e044c5595bbd3ada981bd3057ce28b3a5470e77385d" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "async-trait", "auto_impl", "either", @@ -1202,7 +1264,7 @@ checksum = "8194c416115dc27f03796c0075dee0731239e2d7fbce735a74894aa8f6a47d7d" dependencies = [ "alloy-consensus 1.8.3", "alloy-network 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 1.8.3", "async-trait", "aws-config", @@ -1213,6 +1275,44 @@ dependencies = [ "tracing", ] +[[package]] +name = "alloy-signer-gcp" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa71d57808c8ce3c41342a71245d67839b032d7e18072b50a8d262e28143c18" +dependencies = [ + "alloy-consensus 1.8.3", + "alloy-network 1.8.3", + "alloy-primitives 1.6.0", + "alloy-signer 1.8.3", + "async-trait", + "gcloud-sdk", + "k256", + "spki", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "alloy-signer-ledger" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f199e1a28175d8dbed35b4a726d2080bf0a696017e865d063090895f3342965" +dependencies = [ + "alloy-consensus 1.8.3", + "alloy-dyn-abi", + "alloy-network 1.8.3", + "alloy-primitives 1.6.0", + "alloy-signer 1.8.3", + "alloy-sol-types", + "async-trait", + "coins-ledger", + "futures-util", + "semver 1.0.28", + "thiserror 2.0.18", + "tracing", +] + [[package]] name = "alloy-signer-local" version = "1.8.3" @@ -1221,7 +1321,7 @@ checksum = "f721f4bf2e4812e5505aaf5de16ef3065a8e26b9139ac885862d00b5a55a659a" dependencies = [ "alloy-consensus 1.8.3", "alloy-network 1.8.3", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 1.8.3", "async-trait", "k256", @@ -1237,7 +1337,7 @@ checksum = "e48366d2c42b8d95ef951101bafa28486590f21b7a1e68b6b2d069746557bbe3" dependencies = [ "alloy-consensus 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 2.0.5", "async-trait", "coins-bip32", @@ -1248,6 +1348,22 @@ dependencies = [ "zeroize", ] +[[package]] +name = "alloy-signer-turnkey" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f20ea50426fb96f57f3fac0b25161a8b8c169a744c471b1394e51e860a05fbb8" +dependencies = [ + "alloy-consensus 1.8.3", + "alloy-network 1.8.3", + "alloy-primitives 1.6.0", + "alloy-signer 1.8.3", + "async-trait", + "thiserror 2.0.18", + "tracing", + "turnkey_client", +] + [[package]] name = "alloy-sol-macro" version = "1.6.0" @@ -1271,7 +1387,7 @@ dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", - "heck", + "heck 0.5.0", "indexmap 2.14.0", "proc-macro-error2", "proc-macro2", @@ -1290,7 +1406,7 @@ dependencies = [ "alloy-json-abi", "const-hex", "dunce", - "heck", + "heck 0.5.0", "macro-string", "proc-macro2", "quote", @@ -1316,7 +1432,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384cf252de0db2dec52821eac037a7f57e2aa33fe5b900ce6fe39973402341f1" dependencies = [ "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-macro", "serde", ] @@ -1331,7 +1447,7 @@ dependencies = [ "auto_impl", "base64 0.22.1", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "futures-utils-wasm", "parking_lot", "serde", @@ -1354,7 +1470,7 @@ dependencies = [ "auto_impl", "base64 0.22.1", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "futures-utils-wasm", "parking_lot", "serde", @@ -1418,7 +1534,7 @@ dependencies = [ "alloy-pubsub", "alloy-transport 2.0.5", "bytes", - "futures", + "futures 0.3.32", "interprocess", "pin-project", "serde", @@ -1436,7 +1552,7 @@ checksum = "33e32e0b47d3b3bf5770b7c132090c614b008d307c5e1544f1925f5b7e9e9af6" dependencies = [ "alloy-pubsub", "alloy-transport 2.0.5", - "futures", + "futures 0.3.32", "http 1.4.2", "rustls 0.23.40", "serde_json", @@ -1453,7 +1569,7 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f14b5d9b2c2173980202c6ff470d96e7c5e202c65a9f67884ad565226df7fbb" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "derive_arbitrary", @@ -2150,7 +2266,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix", + "rustix 1.1.4", "slab", "windows-sys 0.61.2", ] @@ -2182,7 +2298,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4042078ea593edffc452eef14e99fdb2b120caa4ad9618bcdeabc4a023b98740" dependencies = [ - "futures", + "futures 0.3.32", "pin-project", "tokio", ] @@ -2226,7 +2342,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" dependencies = [ - "futures", + "futures 0.3.32", "pharos", "rustc_version 0.4.1", ] @@ -2315,7 +2431,7 @@ name = "audit-archiver-lib" version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "anyhow", "async-trait", "aws-config", @@ -2326,7 +2442,7 @@ dependencies = [ "base-observability-events", "bytes", "chrono", - "futures", + "futures 0.3.32", "jsonrpsee", "jsonrpsee-types", "metrics", @@ -3088,6 +3204,12 @@ dependencies = [ "tower-service", ] +[[package]] +name = "az" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be5eb007b7cacc6c660343e96f650fedf4b5a77512399eb952ca6642cf8d13f7" + [[package]] name = "backoff" version = "0.4.0" @@ -3113,6 +3235,34 @@ dependencies = [ "tokio", ] +[[package]] +name = "backrunner" +version = "0.1.0" +source = "git+ssh://git@github.com/propeller-heads/builder-integration.git?rev=6029f1b4739c753383c0ce5ef03a70ad1bd007e5#6029f1b4739c753383c0ce5ef03a70ad1bd007e5" +dependencies = [ + "alloy", + "anyhow", + "builder-types", + "chrono", + "clap", + "futures 0.3.32", + "fynd-core", + "hex", + "num-bigint 0.4.6", + "reqwest 0.12.28", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", + "tracing-subscriber 0.3.23", + "tycho-simulation", + "uniswap-v2-core", + "uniswap-v3-core", + "uniswap-v4-core", + "uuid", +] + [[package]] name = "backtrace" version = "0.3.76" @@ -3165,7 +3315,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-genesis 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rlp", "alloy-rpc-types-engine", @@ -3226,7 +3376,7 @@ version = "0.0.0" dependencies = [ "alloy-network 2.0.5", "alloy-node-bindings 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "tokio", "tokio-util", @@ -3248,7 +3398,7 @@ dependencies = [ name = "base-batcher-bin" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer-local 2.0.5", "base-batcher-core", "base-batcher-encoder", @@ -3269,7 +3419,7 @@ name = "base-batcher-core" version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "async-trait", "auto_impl", @@ -3281,7 +3431,7 @@ dependencies = [ "base-runtime", "base-tx-manager", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "rstest", "serde", "thiserror 2.0.18", @@ -3295,7 +3445,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "base-common-consensus", "base-common-genesis", "base-comp", @@ -3315,7 +3465,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rlp", "alloy-rpc-types-eth 2.0.5", @@ -3338,7 +3488,7 @@ dependencies = [ "base-tx-manager", "derive_more 2.1.1", "eyre", - "futures", + "futures 0.3.32", "httpmock", "jsonrpsee", "metrics", @@ -3356,13 +3506,13 @@ name = "base-batcher-source" version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "async-trait", "base-common-consensus", "base-protocol", "base-runtime", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "thiserror 2.0.18", "tokio", "tracing", @@ -3373,7 +3523,7 @@ name = "base-blobs" version = "0.0.0" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "base-protocol", "rstest", "thiserror 2.0.18", @@ -3388,19 +3538,22 @@ dependencies = [ "base-builder-metering", "base-cli-utils", "base-execution-cli", + "base-intent-swap", "base-node-runner", "base-observability-events", "base-reth-cli", "base-txpool-rpc", "clap", + "eyre", "reth-cli-util", + "tokio", ] [[package]] name = "base-builder-cli" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "base-builder-core", "base-builder-metering", "base-bundles", @@ -3422,7 +3575,7 @@ dependencies = [ "alloy-evm", "alloy-json-rpc 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-client 2.0.5", "alloy-rpc-types-beacon", @@ -3468,7 +3621,7 @@ dependencies = [ "dirs-next", "either", "eyre", - "futures", + "futures 0.3.32", "hex", "http 1.4.2", "http-body-util", @@ -3518,7 +3671,7 @@ dependencies = [ "reth-transaction-pool", "reth-trie", "reth-trie-common", - "revm", + "revm 40.0.3", "rlimit", "secp256k1 0.30.0", "serde", @@ -3545,7 +3698,7 @@ dependencies = [ name = "base-builder-metering" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "base-builder-core", "base-bundles", "base-node-runner", @@ -3561,7 +3714,7 @@ dependencies = [ "base-metrics", "base-ring-buffer", "criterion", - "futures", + "futures 0.3.32", "http 1.4.2", "metrics", "parking_lot", @@ -3592,7 +3745,7 @@ name = "base-bundles" version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-serde 2.0.5", "alloy-signer-local 2.0.5", @@ -3610,7 +3763,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rlp", "alloy-rpc-types-eth 2.0.5", @@ -3634,7 +3787,7 @@ dependencies = [ "base-tx-manager", "clap", "eyre", - "futures", + "futures 0.3.32", "humantime", "metrics", "metrics-util", @@ -3694,10 +3847,10 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-genesis 2.0.5", "alloy-hardforks 0.4.7", - "alloy-primitives", + "alloy-primitives 1.6.0", "auto_impl", "base-common-genesis", - "revm", + "revm 40.0.3", "spin 0.10.0", ] @@ -3709,7 +3862,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-evm", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", @@ -3724,7 +3877,7 @@ dependencies = [ "reth-db-api", "reth-primitives-traits", "reth-zstd-compressors", - "revm", + "revm 40.0.3", "rstest", "serde", "serde_json", @@ -3740,7 +3893,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-evm", "alloy-hardforks 0.4.7", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "auto_impl", "base-common-chains", @@ -3754,7 +3907,7 @@ dependencies = [ "k256", "metrics", "reth-evm", - "revm", + "revm 40.0.3", "rstest", "serde", "serde_json", @@ -3766,7 +3919,7 @@ dependencies = [ name = "base-common-flashblocks" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", @@ -3794,7 +3947,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-hardforks 0.4.7", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "arbitrary", "derive_more 2.1.1", @@ -3814,7 +3967,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-engine", "alloy-transport 2.0.5", @@ -3830,7 +3983,7 @@ name = "base-common-precompiles" version = "0.0.0" dependencies = [ "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "base-common-chains", "base-common-genesis", @@ -3838,7 +3991,7 @@ dependencies = [ "base-precompile-storage", "criterion", "k256", - "revm", + "revm 40.0.3", "rstest", ] @@ -3851,7 +4004,7 @@ dependencies = [ "alloy-evm", "alloy-network 2.0.5", "alloy-network-primitives 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", "alloy-signer 2.0.5", @@ -3862,7 +4015,7 @@ dependencies = [ "rand 0.9.4", "reth-primitives-traits", "reth-rpc-convert", - "revm", + "revm 40.0.3", "serde", "serde_json", "similar-asserts", @@ -3874,7 +4027,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "alloy-serde 2.0.5", @@ -3899,7 +4052,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-network 2.0.5", "alloy-node-bindings 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "alloy-signer 2.0.5", "alloy-signer-local 2.0.5", @@ -3917,7 +4070,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-sol-types", "arbitrary", @@ -3951,7 +4104,7 @@ version = "0.0.0" dependencies = [ "alloy-chains", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-engine", "alloy-signer 2.0.5", @@ -3997,7 +4150,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "async-trait", @@ -4051,7 +4204,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-json-rpc 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-pubsub", "alloy-rpc-client 2.0.5", @@ -4096,7 +4249,7 @@ dependencies = [ "alloy-chains", "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "arbitrary", @@ -4108,7 +4261,7 @@ dependencies = [ "base-metrics", "derive_more 2.1.1", "discv5 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures", + "futures 0.3.32", "ipnet", "libp2p", "libp2p-identity", @@ -4136,7 +4289,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-client 2.0.5", "alloy-rpc-types-engine", @@ -4173,7 +4326,7 @@ dependencies = [ "derive_more 2.1.1", "discv5 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum_ssz", - "futures", + "futures 0.3.32", "http 1.4.2", "http-body 1.0.1", "http-body-util", @@ -4204,7 +4357,7 @@ dependencies = [ name = "base-consensus-peers" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "arbtest", @@ -4233,7 +4386,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-client 2.0.5", "alloy-rpc-types-beacon", @@ -4268,7 +4421,7 @@ name = "base-consensus-rpc" version = "0.0.0" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "async-trait", "backon", "base-common-genesis", @@ -4295,7 +4448,7 @@ name = "base-consensus-safedb" version = "0.0.0" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "async-trait", "base-protocol", "redb", @@ -4310,7 +4463,7 @@ dependencies = [ name = "base-consensus-sources" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-client 2.0.5", "alloy-signer 2.0.5", "alloy-signer-local 2.0.5", @@ -4333,10 +4486,10 @@ name = "base-consensus-upgrades" version = "0.0.0" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "base-common-consensus", "base-common-evm", - "revm", + "revm 40.0.3", "rstest", ] @@ -4349,7 +4502,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-genesis 2.0.5", "alloy-hardforks 0.4.7", - "alloy-primitives", + "alloy-primitives 1.6.0", "base-common-chains", "base-common-consensus", "base-common-genesis", @@ -4369,7 +4522,7 @@ name = "base-execution-cli" version = "0.0.0" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "axum 0.8.9", "backon", @@ -4396,7 +4549,7 @@ dependencies = [ "base-upgrade-signal", "clap", "eyre", - "futures", + "futures 0.3.32", "humantime", "jsonrpsee", "proptest", @@ -4439,7 +4592,7 @@ dependencies = [ "alloy-chains", "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-trie", "base-common-chains", "base-common-consensus", @@ -4459,7 +4612,7 @@ dependencies = [ "reth-storage-errors", "reth-trie", "reth-trie-common", - "revm", + "revm 40.0.3", "thiserror 2.0.18", "tracing", ] @@ -4468,7 +4621,7 @@ dependencies = [ name = "base-execution-eip8130" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "base-common-consensus", "base-common-precompiles", @@ -4477,7 +4630,7 @@ dependencies = [ "base64 0.22.1", "k256", "p256", - "revm", + "revm 40.0.3", "sha2 0.10.9", "thiserror 2.0.18", ] @@ -4489,7 +4642,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types 2.0.5", "base-common-chains", "base-common-consensus", @@ -4505,7 +4658,7 @@ dependencies = [ "reth-rpc-eth-api", "reth-rpc-eth-types", "reth-storage-api", - "revm", + "revm 40.0.3", "tracing", ] @@ -4516,7 +4669,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-genesis 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-client 2.0.5", "alloy-signer 2.0.5", @@ -4540,7 +4693,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-evm", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "base-common-chains", "base-common-consensus", @@ -4558,7 +4711,7 @@ dependencies = [ "reth-revm", "reth-rpc-eth-api", "reth-storage-errors", - "revm", + "revm 40.0.3", "thiserror 2.0.18", ] @@ -4572,7 +4725,7 @@ dependencies = [ "base-execution-trie", "base-node-core", "eyre", - "futures", + "futures 0.3.32", "reth-db", "reth-ethereum-primitives", "reth-execution-types", @@ -4595,9 +4748,9 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", - "alloy-rpc-types-debug", + "alloy-rpc-types-debug 2.0.5", "alloy-rpc-types-engine", "base-common-chains", "base-common-consensus", @@ -4620,7 +4773,7 @@ dependencies = [ "reth-storage-api", "reth-transaction-pool", "reth-trie-common", - "revm", + "revm 40.0.3", "serde", "thiserror 2.0.18", "tracing", @@ -4633,10 +4786,10 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-json-rpc 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-client 2.0.5", - "alloy-rpc-types-debug", + "alloy-rpc-types-debug 2.0.5", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", @@ -4658,7 +4811,7 @@ dependencies = [ "base-metrics", "derive_more 2.1.1", "eyre", - "futures", + "futures 0.3.32", "http 1.4.2", "jsonrpsee", "jsonrpsee-core", @@ -4686,7 +4839,7 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "reth-trie-common", - "revm", + "revm 40.0.3", "serde", "thiserror 2.0.18", "tokio", @@ -4701,7 +4854,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "auto_impl", "base-metrics", "bincode 2.0.1", @@ -4750,7 +4903,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 2.0.5", "alloy-signer-local 2.0.5", "async-trait", @@ -4769,7 +4922,7 @@ dependencies = [ "base-test-utils", "c-kzg", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "jsonrpsee", "metrics", "parking_lot", @@ -4783,7 +4936,7 @@ dependencies = [ "reth-storage-api", "reth-tasks", "reth-transaction-pool", - "revm", + "revm 40.0.3", "serde", "serde_json", "thiserror 2.0.18", @@ -4802,7 +4955,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-evm", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types 2.0.5", "alloy-rpc-types-engine", @@ -4823,7 +4976,7 @@ dependencies = [ "base-execution-rpc", "base-metrics", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "imbl", "jsonrpsee", "jsonrpsee-types", @@ -4839,8 +4992,8 @@ dependencies = [ "reth-rpc-eth-api", "reth-rpc-eth-types", "reth-tasks", - "revm", - "revm-database", + "revm 40.0.3", + "revm-database 15.0.2", "rstest", "serde", "serde_json", @@ -4861,7 +5014,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-genesis 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-client 2.0.5", "alloy-rpc-types 2.0.5", @@ -4883,7 +5036,7 @@ dependencies = [ "criterion", "derive_more 2.1.1", "eyre", - "futures", + "futures 0.3.32", "rand 0.9.4", "rayon", "reth-chain-state", @@ -4898,7 +5051,7 @@ dependencies = [ "reth-testing-utils", "reth-tracing", "reth-transaction-pool", - "revm", + "revm 40.0.3", "serde_json", "tokio", "tokio-stream", @@ -4916,7 +5069,7 @@ dependencies = [ "axum 0.8.9", "bytes", "eyre", - "futures", + "futures 0.3.32", "http 1.4.2", "http-body 1.0.1", "jsonrpsee", @@ -4929,11 +5082,39 @@ dependencies = [ "tracing", ] +[[package]] +name = "base-intent-swap" +version = "0.0.0" +dependencies = [ + "alloy-consensus 2.0.5", + "alloy-eips 2.0.5", + "alloy-primitives 1.6.0", + "alloy-signer 2.0.5", + "alloy-signer-local 2.0.5", + "async-trait", + "backrunner", + "base-builder-core", + "base-common-consensus", + "base-execution-txpool", + "base-node-runner", + "builder-types", + "eyre", + "jsonrpsee", + "reth-payload-builder", + "reth-provider", + "reth-transaction-pool", + "serde", + "serde_json", + "tokio", + "tracing", + "uuid", +] + [[package]] name = "base-jwt" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-engine", "backon", @@ -4949,7 +5130,7 @@ dependencies = [ name = "base-l1-head" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types 2.0.5", "base-common-network", @@ -4964,7 +5145,7 @@ name = "base-load-tester-bin" version = "0.0.0" dependencies = [ "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types 2.0.5", "alloy-signer-local 2.0.5", @@ -4972,7 +5153,7 @@ dependencies = [ "base-load-tests", "clap", "eyre", - "futures", + "futures 0.3.32", "indicatif 0.18.4", "tokio", "tracing", @@ -4987,7 +5168,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types 2.0.5", "alloy-signer 2.0.5", @@ -4999,13 +5180,13 @@ dependencies = [ "base-common-precompiles", "base-tx-manager", "eyre", - "futures", + "futures 0.3.32", "humantime", "indicatif 0.18.4", "parking_lot", "rand 0.9.4", "reqwest 0.13.4", - "revm", + "revm 40.0.3", "serde", "serde_json", "serde_yaml", @@ -5027,7 +5208,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-genesis 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-client 2.0.5", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", @@ -5057,9 +5238,9 @@ dependencies = [ "reth-provider", "reth-revm", "reth-transaction-pool", - "revm", - "revm-bytecode", - "revm-database", + "revm 40.0.3", + "revm-bytecode 11.0.1", + "revm-database 15.0.2", "serde", "serde_json", "thiserror 2.0.18", @@ -5086,7 +5267,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-genesis 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", @@ -5108,7 +5289,7 @@ dependencies = [ "base-upgrade-signal", "clap", "eyre", - "futures", + "futures 0.3.32", "humantime", "reth-chainspec", "reth-codecs", @@ -5143,7 +5324,7 @@ dependencies = [ "reth-transaction-pool", "reth-trie-common", "reth-trie-db", - "revm", + "revm 40.0.3", "rstest", "serde", "serde_json", @@ -5157,7 +5338,7 @@ version = "0.0.0" dependencies = [ "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-client 2.0.5", "alloy-rpc-types 2.0.5", @@ -5176,7 +5357,7 @@ dependencies = [ "chrono", "criterion", "eyre", - "futures", + "futures 0.3.32", "jsonrpsee", "reth-db", "reth-evm", @@ -5205,7 +5386,7 @@ dependencies = [ name = "base-observability-events" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "base-metrics", "chrono", "eyre", @@ -5226,7 +5407,7 @@ version = "0.0.0" dependencies = [ "alloy-eips 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-transport 2.0.5", "serde", @@ -5237,7 +5418,7 @@ dependencies = [ name = "base-precompile-macros" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "proc-macro2", "quote", "syn 2.0.117", @@ -5248,12 +5429,12 @@ name = "base-precompile-storage" version = "0.0.0" dependencies = [ "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "base-precompile-macros", "derive_more 2.1.1", "proptest", - "revm", + "revm 40.0.3", "rstest", "thiserror 2.0.18", "tracing", @@ -5267,7 +5448,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-evm", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-trie", "ark-bls12-381", @@ -5303,7 +5484,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "base-common-consensus", "base-common-evm", "base-common-genesis", @@ -5325,12 +5506,12 @@ name = "base-proof-contracts" version = "0.0.0" dependencies = [ "alloy-contract 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-sol-types", "alloy-transport 2.0.5", "async-trait", - "futures", + "futures 0.3.32", "rstest", "thiserror 2.0.18", "tracing", @@ -5343,7 +5524,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "async-trait", "base-common-consensus", @@ -5364,7 +5545,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rlp", "alloy-rpc-client 2.0.5", @@ -5381,7 +5562,7 @@ dependencies = [ "base-protocol", "getrandom 0.2.17", "rand 0.9.4", - "revm", + "revm 40.0.3", "rocksdb", "serde", "serde_json", @@ -5399,7 +5580,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-genesis 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rlp", "alloy-rpc-types 2.0.5", @@ -5421,10 +5602,10 @@ dependencies = [ "base-proof-preimage", "base-proof-primitives", "base-protocol", - "futures", + "futures 0.3.32", "metrics", "proptest", - "revm", + "revm 40.0.3", "rocksdb", "serde", "serde_json", @@ -5438,7 +5619,7 @@ name = "base-proof-mpt" version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rlp", "alloy-rpc-types 2.0.5", @@ -5458,7 +5639,7 @@ dependencies = [ name = "base-proof-preimage" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "async-channel", "async-trait", "rkyv", @@ -5474,7 +5655,7 @@ version = "0.0.0" dependencies = [ "alloy-chains", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "async-trait", "base-common-genesis", "base-proof-preimage", @@ -5492,7 +5673,7 @@ version = "0.0.0" dependencies = [ "alloy-eips 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-client 2.0.5", "alloy-rpc-types-eth 2.0.5", @@ -5520,7 +5701,7 @@ name = "base-proof-submission" version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "base-proof-contracts", "base-tx-manager", @@ -5536,7 +5717,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-evm", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-sol-types", "anyhow", @@ -5555,8 +5736,8 @@ dependencies = [ "base-protocol", "cfg-if", "kzg-rs", - "revm", - "revm-precompile", + "revm 40.0.3", + "revm-precompile 36.0.3", "rkyv", "serde", "serde_json", @@ -5577,7 +5758,7 @@ dependencies = [ "alloy-contract 2.0.5", "alloy-eips 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rlp", "alloy-sol-types", @@ -5599,7 +5780,7 @@ dependencies = [ "c-kzg", "cargo_metadata 0.18.1", "cfg-if", - "futures", + "futures 0.3.32", "kzg-rs", "lazy_static", "metrics", @@ -5646,7 +5827,7 @@ dependencies = [ name = "base-proof-succinct-scripts" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "anyhow", "base-proof-succinct-client-utils", "base-proof-succinct-elfs", @@ -5662,7 +5843,7 @@ dependencies = [ name = "base-proof-tee-nitro-attestation-prover" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "anyhow", "async-trait", "base-metrics", @@ -5685,7 +5866,7 @@ version = "0.0.0" dependencies = [ "alloy-chains", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 2.0.5", "alloy-signer-local 2.0.5", "async-trait", @@ -5717,7 +5898,7 @@ name = "base-proof-tee-nitro-host" version = "0.0.0" dependencies = [ "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 2.0.5", "async-trait", "base-common-genesis", @@ -5746,7 +5927,7 @@ dependencies = [ name = "base-proof-tee-nitro-verifier" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "ciborium", "hex", @@ -5764,7 +5945,7 @@ name = "base-proof-tee-registrar" version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-eth 2.0.5", "alloy-signer 2.0.5", @@ -5782,7 +5963,7 @@ dependencies = [ "base-proof-tee-nitro-attestation-prover", "base-proof-tee-nitro-verifier", "base-tx-manager", - "futures", + "futures 0.3.32", "hex", "hex-literal 1.1.0", "jsonrpsee", @@ -5802,7 +5983,7 @@ dependencies = [ name = "base-proof-tee-registrar-bin" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer-local 2.0.5", "base-cli-utils", "base-proof-tee-nitro-attestation-prover", @@ -5837,7 +6018,7 @@ dependencies = [ name = "base-proof-zk-backend" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "async-trait", "backoff", "base-l1-head", @@ -5867,7 +6048,7 @@ dependencies = [ name = "base-proof-zk-host" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "async-trait", "base-proof-primitives", "base-proof-worker", @@ -5902,7 +6083,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-eth 2.0.5", "alloy-signer-local 2.0.5", @@ -5923,7 +6104,7 @@ dependencies = [ "base-tx-manager", "clap", "eyre", - "futures", + "futures 0.3.32", "humantime", "jsonrpsee", "metrics", @@ -5957,7 +6138,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", @@ -5998,7 +6179,7 @@ dependencies = [ name = "base-prover-nitro-host" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "base-cli-utils", "base-common-chains", "base-proof-host", @@ -6072,7 +6253,7 @@ dependencies = [ "anyhow", "base-prover-service-protocol", "chrono", - "futures", + "futures 0.3.32", "serde", "serde_json", "sqlx", @@ -6086,7 +6267,7 @@ dependencies = [ name = "base-prover-service-protocol" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "base-proof-primitives", "chrono", "jsonrpsee", @@ -6148,7 +6329,7 @@ version = "0.0.0" name = "base-runtime" version = "0.0.0" dependencies = [ - "futures", + "futures 0.3.32", "rand 0.9.4", "thiserror 2.0.18", "tokio", @@ -6194,7 +6375,7 @@ dependencies = [ "blake3", "bollard", "clap", - "futures", + "futures 0.3.32", "rayon", "reth-cli-commands", "serde_json", @@ -6229,7 +6410,7 @@ dependencies = [ name = "base-snark-e2e" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types 2.0.5", "anyhow", @@ -6265,7 +6446,7 @@ dependencies = [ "alloy-genesis 2.0.5", "alloy-json-rpc 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-client 2.0.5", "alloy-rpc-types-engine", @@ -6350,7 +6531,7 @@ dependencies = [ name = "base-telemetry-service" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "anyhow", "async-trait", "axum 0.8.9", @@ -6376,7 +6557,7 @@ dependencies = [ "alloy-contract 2.0.5", "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 2.0.5", "alloy-signer-local 2.0.5", "alloy-sol-macro", @@ -6407,7 +6588,7 @@ dependencies = [ "alloy-json-rpc 2.0.5", "alloy-network 2.0.5", "alloy-node-bindings 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-eth 2.0.5", "alloy-signer 2.0.5", @@ -6420,7 +6601,7 @@ dependencies = [ "base-metrics", "base-runtime", "clap", - "futures", + "futures 0.3.32", "humantime", "metrics", "proptest", @@ -6437,7 +6618,7 @@ dependencies = [ name = "base-txpool-rpc" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "base-node-runner", "eyre", "httpmock", @@ -6456,7 +6637,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "base-common-consensus", "base-flashblocks", @@ -6468,7 +6649,7 @@ dependencies = [ "chrono", "derive_more 2.1.1", "eyre", - "futures", + "futures 0.3.32", "lru 0.16.4", "metrics", "reth-node-api", @@ -6476,7 +6657,7 @@ dependencies = [ "reth-provider", "reth-tracing", "reth-transaction-pool", - "revm-database", + "revm-database 15.0.2", "serde_json", "tokio", "tokio-stream", @@ -6487,7 +6668,7 @@ dependencies = [ name = "base-upgrade-signal" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-eth 2.0.5", "alloy-sol-types", @@ -6495,7 +6676,7 @@ dependencies = [ "base-metrics", "clap", "eyre", - "futures", + "futures 0.3.32", "metrics", "rstest", "serde", @@ -6509,7 +6690,7 @@ dependencies = [ name = "base-witness-diff" version = "0.0.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rlp", "alloy-rpc-client 2.0.5", @@ -6536,7 +6717,7 @@ name = "base-zk-benchmarks" version = "0.0.0" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "base-load-tests", "base-optimism-rpc", "base-prover-service-client", @@ -6611,7 +6792,7 @@ name = "basectl" version = "0.0.0" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-eth 2.0.5", "anyhow", @@ -6638,7 +6819,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-contract 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-client 2.0.5", "alloy-rpc-types-eth 2.0.5", @@ -6663,7 +6844,7 @@ dependencies = [ "chrono", "crossterm", "dirs 6.0.0", - "futures", + "futures 0.3.32", "jsonrpsee", "ratatui", "serde", @@ -6694,6 +6875,17 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +[[package]] +name = "bigdecimal" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + [[package]] name = "bimap" version = "0.6.3" @@ -6738,9 +6930,9 @@ dependencies = [ "bitflags 2.13.0", "cexpr", "clang-sys", - "itertools 0.13.0", + "itertools 0.11.0", "log", - "prettyplease", + "prettyplease 0.2.37", "proc-macro2", "quote", "regex", @@ -6758,7 +6950,7 @@ dependencies = [ "bitflags 2.13.0", "cexpr", "clang-sys", - "itertools 0.13.0", + "itertools 0.11.0", "proc-macro2", "quote", "regex", @@ -6876,6 +7068,15 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array 0.14.7", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -7175,7 +7376,7 @@ checksum = "dd9d445a56000478af5419c59f1f64299e48f0d010340e9dd737f0971f617857" dependencies = [ "alloy", "alloy-chains", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "anyhow", "async-stream", @@ -7190,7 +7391,7 @@ dependencies = [ "clap", "dashmap", "derive_builder", - "futures", + "futures 0.3.32", "futures-util", "hex", "moka", @@ -7215,7 +7416,7 @@ dependencies = [ "tower 0.5.3", "tracing", "url", - "utoipa", + "utoipa 5.5.0", "uuid", ] @@ -7270,6 +7471,16 @@ dependencies = [ "serde", ] +[[package]] +name = "builder-types" +version = "0.1.0" +source = "git+ssh://git@github.com/propeller-heads/builder-integration.git?rev=6029f1b4739c753383c0ce5ef03a70ad1bd007e5#6029f1b4739c753383c0ce5ef03a70ad1bd007e5" +dependencies = [ + "alloy", + "serde", + "uuid", +] + [[package]] name = "bumpalo" version = "3.20.3" @@ -7656,7 +7867,7 @@ version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.117", @@ -7752,6 +7963,28 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "coins-ledger" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c707b8909cef367cd04a11b0d71d65ab34a625d295a07869dd2fff2ca95bf688" +dependencies = [ + "async-trait", + "byteorder", + "cfg-if", + "const-hex", + "hidapi-rusb", + "js-sys", + "log", + "nix 0.26.4", + "once_cell", + "thiserror 1.0.69", + "tokio", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", +] + [[package]] name = "colorchoice" version = "1.0.5" @@ -7780,7 +8013,7 @@ checksum = "958c5d6ecf1f214b4c2bbbbf6ab9523a864bd136dcf71a7e8904799acfe1ad47" dependencies = [ "crossterm", "unicode-segmentation", - "unicode-width", + "unicode-width 0.2.2", ] [[package]] @@ -7844,7 +8077,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width", + "unicode-width 0.2.2", "windows-sys 0.59.0", ] @@ -7856,7 +8089,7 @@ checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" dependencies = [ "encode_unicode", "libc", - "unicode-width", + "unicode-width 0.2.2", "windows-sys 0.61.2", ] @@ -7917,6 +8150,12 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + [[package]] name = "convert_case" version = "0.10.0" @@ -8164,7 +8403,7 @@ dependencies = [ "document-features", "mio", "parking_lot", - "rustix", + "rustix 1.1.4", "signal-hook", "signal-hook-mio", "winapi", @@ -8524,6 +8763,15 @@ dependencies = [ "uuid", ] +[[package]] +name = "deepsize" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdb987ec36f6bf7bfbea3f928b75590b736fc42af8e54d97592481351b2b96c" +dependencies = [ + "deepsize_derive", +] + [[package]] name = "deepsize2" version = "0.1.0" @@ -8534,6 +8782,17 @@ dependencies = [ "hashbrown 0.14.5", ] +[[package]] +name = "deepsize_derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990101d41f3bc8c1a45641024377ee284ecc338e5ecf3ea0f0e236d897c72796" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "deepsize_derive2" version = "0.1.0" @@ -8551,7 +8810,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88e365f083a5cb5972d50ce8b1b2c9f125dc5ec0f50c0248cfb568ae59efcf0b" dependencies = [ - "futures", + "futures 0.3.32", "tokio", "tokio-util", ] @@ -8672,6 +8931,19 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case 0.4.0", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 2.0.117", +] + [[package]] name = "derive_more" version = "1.0.0" @@ -8707,7 +8979,7 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ - "convert_case", + "convert_case 0.10.0", "proc-macro2", "quote", "rustc_version 0.4.1", @@ -8840,7 +9112,7 @@ dependencies = [ "delay_map", "enr", "fnv", - "futures", + "futures 0.3.32", "hashlink 0.11.1", "hex", "hkdf", @@ -8871,7 +9143,7 @@ dependencies = [ "delay_map", "enr", "fnv", - "futures", + "futures 0.3.32", "hashlink 0.11.1", "hex", "hkdf", @@ -8942,6 +9214,12 @@ dependencies = [ "litrs", ] +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + [[package]] name = "dotenvy" version = "0.15.7" @@ -8967,7 +9245,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" dependencies = [ "digest 0.10.7", - "futures", + "futures 0.3.32", "rand 0.8.6", "reqwest 0.12.28", "thiserror 1.0.69", @@ -9115,6 +9393,22 @@ dependencies = [ "serde", ] +[[package]] +name = "ekubo_sdk" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb1070070cb29178166fc9a66b9e54b027013054037b094e3f3c1e8f2151a777" +dependencies = [ + "alloy-primitives 0.6.4", + "alloy-primitives 1.6.0", + "derive_more 2.1.1", + "num-traits", + "ruint", + "serde", + "starknet-types-core", + "thiserror 2.0.18", +] + [[package]] name = "elf" version = "0.7.4" @@ -9196,7 +9490,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.117", @@ -9243,6 +9537,30 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "enum_delegate" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8ea75f31022cba043afe037940d73684327e915f88f62478e778c3de914cd0a" +dependencies = [ + "enum_delegate_lib", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "enum_delegate_lib" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e1f6c3800b304a6be0012039e2a45a322a093539c45ab818d9e6895a39c90fe" +dependencies = [ + "proc-macro2", + "quote", + "rand 0.8.6", + "syn 1.0.109", +] + [[package]] name = "enum_dispatch" version = "0.3.13" @@ -9331,13 +9649,101 @@ dependencies = [ ] [[package]] -name = "ethereum_hashing" -version = "0.8.0" +name = "ethabi" +version = "17.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa93f58bb1eb3d1e556e4f408ef1dac130bad01ac37db4e7ade45de40d1c86a" +checksum = "e4966fba78396ff92db3b817ee71143eccd98acf0f876b8d600e585a670c5d1b" dependencies = [ - "cpufeatures 0.2.17", - "ring", + "ethereum-types 0.13.1", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3 0.10.9", + "thiserror 1.0.69", + "uint 0.9.5", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types 0.14.1", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3 0.10.9", + "thiserror 1.0.69", + "uint 0.9.5", +] + +[[package]] +name = "ethbloom" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11da94e443c60508eb62cf256243a64da87304c2802ac2528847f79d750007ef" +dependencies = [ + "crunchy", + "fixed-hash 0.7.0", + "impl-rlp", + "impl-serde 0.3.2", + "tiny-keccak", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash 0.8.0", + "impl-rlp", + "impl-serde 0.4.0", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2827b94c556145446fcce834ca86b7abf0c39a805883fe20e72c5bfdb5a0dc6" +dependencies = [ + "ethbloom 0.12.1", + "fixed-hash 0.7.0", + "impl-rlp", + "impl-serde 0.3.2", + "primitive-types 0.11.1", + "uint 0.9.5", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom 0.13.0", + "fixed-hash 0.8.0", + "impl-rlp", + "impl-serde 0.4.0", + "primitive-types 0.12.2", + "uint 0.9.5", +] + +[[package]] +name = "ethereum_hashing" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa93f58bb1eb3d1e556e4f408ef1dac130bad01ac37db4e7ade45de40d1c86a" +dependencies = [ + "cpufeatures 0.2.17", + "ring", "sha2 0.10.9", ] @@ -9347,7 +9753,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dc1355dbb41fbbd34ec28d4fb2a57d9a70c67ac3c19f6a5ca4d4a176b9e997a" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "hex", "serde", "serde_derive", @@ -9360,7 +9766,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e462875ad8693755ea8913d6e905715c76ea4836e2254e18c9cf0f7a8f8c2a13" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "ethereum_serde_utils", "itertools 0.14.0", "serde", @@ -9422,6 +9828,17 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "evm_ekubo_sdk" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eaf56840ccbfb0b6d4fb27dd20d96a13586482923b280f5d6eb1a5fa980e818" +dependencies = [ + "num-traits", + "serde", + "uint 0.10.0", +] + [[package]] name = "evmap" version = "11.0.0" @@ -9618,6 +10035,18 @@ dependencies = [ "typeid", ] +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "rand 0.8.6", + "rustc-hex", + "static_assertions", +] + [[package]] name = "fixed-hash" version = "0.8.0" @@ -9763,6 +10192,23 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "foundry-block-explorers" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff814624bb21bfe43b70fb736ab39527b405d04cdc94d90b7e182fba28b25ec7" +dependencies = [ + "alloy-chains", + "alloy-json-abi", + "alloy-primitives 1.6.0", + "reqwest 0.12.28", + "semver 1.0.28", + "serde", + "serde_json", + "thiserror 2.0.18", + "tracing", +] + [[package]] name = "fragile" version = "2.1.0" @@ -9793,6 +10239,12 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +[[package]] +name = "futures" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + [[package]] name = "futures" version = "0.3.32" @@ -9938,12 +10390,14 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ + "futures 0.1.31", "futures-channel", "futures-core", "futures-io", "futures-macro", "futures-sink", "futures-task", + "libc", "memchr", "pin-project-lite", "slab", @@ -9955,12 +10409,74 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" +[[package]] +name = "fynd-core" +version = "0.81.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17e2258f0c5ee75bc1151340b7dde1a7cdf7dc7df543c361ea139699e889f2ae" +dependencies = [ + "alloy", + "async-channel", + "async-trait", + "chrono", + "futures 0.3.32", + "itertools 0.14.0", + "lazy_static", + "metrics", + "num-bigint 0.4.6", + "num-rational", + "num-traits", + "num_cpus", + "petgraph 0.6.5", + "reqwest 0.12.28", + "serde", + "serde_json", + "serde_with", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tokio-tungstenite 0.28.0", + "tracing", + "tycho-execution", + "tycho-simulation", + "typetag", + "uuid", +] + [[package]] name = "gcd" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" +[[package]] +name = "gcloud-sdk" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b5b58d8683fa308be9bc58caece4972315a0b2547f9da16962511f0915d5b53" +dependencies = [ + "async-trait", + "bytes", + "chrono", + "futures 0.3.32", + "hyper 1.10.1", + "jsonwebtoken", + "once_cell", + "prost 0.14.4", + "prost-types 0.14.4", + "reqwest 0.13.4", + "secret-vault-value", + "serde", + "serde_json", + "tokio", + "tonic 0.14.6", + "tonic-prost", + "tower 0.5.3", + "tower-layer", + "tracing", + "url", +] + [[package]] name = "gdbstub" version = "0.7.10" @@ -10044,7 +10560,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix", + "rustix 1.1.4", "windows-link 0.2.1", ] @@ -10195,6 +10711,16 @@ dependencies = [ "web-sys", ] +[[package]] +name = "gmp-mpfr-sys" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7db155b537cb791b133341f99f68371d86ee7fa4c79aacfbc376d72d23c70531" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "group" version = "0.13.0" @@ -10415,6 +10941,12 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -10442,6 +10974,12 @@ dependencies = [ "arrayvec", ] +[[package]] +name = "hex-literal" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" + [[package]] name = "hex-literal" version = "0.4.1" @@ -10579,6 +11117,18 @@ dependencies = [ "tracing", ] +[[package]] +name = "hidapi-rusb" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efdc2ec354929a6e8f3c6b6923a4d97427ec2f764cfee8cd4bfe890946cdf08b" +dependencies = [ + "cc", + "libc", + "pkg-config", + "rusb", +] + [[package]] name = "hkdf" version = "0.12.4" @@ -10952,7 +11502,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core 0.59.0", ] [[package]] @@ -11125,7 +11675,7 @@ dependencies = [ "async-io", "core-foundation 0.9.4", "fnv", - "futures", + "futures 0.3.32", "if-addrs 0.15.0", "ipnet", "log", @@ -11148,7 +11698,7 @@ dependencies = [ "async-trait", "attohttpc", "bytes", - "futures", + "futures 0.3.32", "http 1.4.2", "http-body-util", "hyper 1.10.1", @@ -11208,6 +11758,33 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + [[package]] name = "impl-trait-for-tuples" version = "0.2.3" @@ -11283,7 +11860,7 @@ dependencies = [ "console 0.15.11", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.2", "web-time", ] @@ -11295,7 +11872,7 @@ checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb" dependencies = [ "console 0.16.3", "portable-atomic", - "unicode-width", + "unicode-width 0.2.2", "unit-prefix", "vt100", "web-time", @@ -11337,7 +11914,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-eth 2.0.5", "alloy-signer-local 2.0.5", @@ -11787,7 +12364,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2da3f8ab5ce1bb124b6d082e62dffe997578ceaf0aeb9f3174a214589dc00f07" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro-crate 3.5.0", "proc-macro2", "quote", @@ -11989,6 +12566,34 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f" +[[package]] +name = "lambdaworks-crypto" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b1a1c1102a5a7fbbda117b79fb3a01e033459c738a3c1642269603484fd1c1" +dependencies = [ + "lambdaworks-math", + "rand 0.8.6", + "rand_chacha 0.3.1", + "serde", + "sha2 0.10.9", + "sha3 0.10.9", +] + +[[package]] +name = "lambdaworks-math" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "018a95aa873eb49896a858dee0d925c33f3978d073c64b08dd4f2c9b35a017c6" +dependencies = [ + "getrandom 0.2.17", + "num-bigint 0.4.6", + "num-traits", + "rand 0.8.6", + "serde", + "serde_json", +] + [[package]] name = "lazy-regex" version = "3.6.0" @@ -12100,7 +12705,7 @@ checksum = "ce71348bf5838e46449ae240631117b487073d5f347c06d434caddcb91dceb5a" dependencies = [ "bytes", "either", - "futures", + "futures 0.3.32", "futures-timer", "getrandom 0.2.17", "libp2p-allow-block-list", @@ -12155,7 +12760,7 @@ checksum = "249128cd37a2199aff30a7675dffa51caf073b51aa612d2f544b19932b9aebca" dependencies = [ "either", "fnv", - "futures", + "futures 0.3.32", "futures-timer", "libp2p-identity", "multiaddr", @@ -12179,7 +12784,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b770c1c8476736ca98c578cba4b505104ff8e842c2876b528925f9766379f9a" dependencies = [ "async-trait", - "futures", + "futures 0.3.32", "hickory-resolver 0.25.2", "libp2p-core", "libp2p-identity", @@ -12201,7 +12806,7 @@ dependencies = [ "bytes", "either", "fnv", - "futures", + "futures 0.3.32", "futures-timer", "getrandom 0.2.17", "hashlink 0.9.1", @@ -12226,7 +12831,7 @@ checksum = "8ab792a8b68fdef443a62155b01970c81c3aadab5e659621b063ef252a8e65e8" dependencies = [ "asynchronous-codec", "either", - "futures", + "futures 0.3.32", "futures-bounded", "futures-timer", "libp2p-core", @@ -12265,7 +12870,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c66872d0f1ffcded2788683f76931be1c52e27f343edb93bc6d0bcd8887be443" dependencies = [ - "futures", + "futures 0.3.32", "hickory-proto 0.25.2", "if-watch", "libp2p-core", @@ -12284,7 +12889,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "805a555148522cb3414493a5153451910cb1a146c53ffbf4385708349baf62b7" dependencies = [ - "futures", + "futures 0.3.32", "libp2p-core", "libp2p-gossipsub", "libp2p-identify", @@ -12304,7 +12909,7 @@ checksum = "bc73eacbe6462a0eb92a6527cac6e63f02026e5407f8831bde8293f19217bfbf" dependencies = [ "asynchronous-codec", "bytes", - "futures", + "futures 0.3.32", "libp2p-core", "libp2p-identity", "multiaddr", @@ -12325,7 +12930,7 @@ version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74bb7fcdfd9fead4144a3859da0b49576f171a8c8c7c0bfc7c541921d25e60d3" dependencies = [ - "futures", + "futures 0.3.32", "futures-timer", "libp2p-core", "libp2p-identity", @@ -12341,7 +12946,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dc448b2de9f4745784e3751fe8bc6c473d01b8317edd5ababcb0dec803d843f" dependencies = [ - "futures", + "futures 0.3.32", "futures-timer", "if-watch", "libp2p-core", @@ -12363,7 +12968,7 @@ version = "0.4.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d6bd8025c80205ec2810cfb28b02f362ab48a01bee32c50ab5f12761e033464" dependencies = [ - "futures", + "futures 0.3.32", "libp2p-core", "libp2p-identity", "libp2p-swarm", @@ -12379,7 +12984,7 @@ checksum = "ce88c6c4bf746c8482480345ea3edfd08301f49e026889d1cbccfa1808a9ed9e" dependencies = [ "either", "fnv", - "futures", + "futures 0.3.32", "futures-timer", "hashlink 0.10.0", "libp2p-core", @@ -12399,7 +13004,7 @@ version = "0.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd297cf53f0cb3dee4d2620bb319ae47ef27c702684309f682bdb7e55a18ae9c" dependencies = [ - "heck", + "heck 0.5.0", "quote", "syn 2.0.117", ] @@ -12410,7 +13015,7 @@ version = "0.44.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb6585b9309699f58704ec9ab0bb102eca7a3777170fa91a8678d73ca9cafa93" dependencies = [ - "futures", + "futures 0.3.32", "futures-timer", "if-watch", "libc", @@ -12426,7 +13031,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96ff65a82e35375cbc31ebb99cacbbf28cb6c4fefe26bf13756ddcf708d40080" dependencies = [ - "futures", + "futures 0.3.32", "futures-rustls", "libp2p-core", "libp2p-identity", @@ -12445,7 +13050,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4757e65fe69399c1a243bbb90ec1ae5a2114b907467bf09f3575e899815bb8d3" dependencies = [ - "futures", + "futures 0.3.32", "futures-timer", "igd-next", "libp2p-core", @@ -12461,7 +13066,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f15df094914eb4af272acf9adaa9e287baa269943f32ea348ba29cfb9bfc60d8" dependencies = [ "either", - "futures", + "futures 0.3.32", "libp2p-core", "thiserror 2.0.18", "tracing", @@ -12508,44 +13113,102 @@ dependencies = [ ] [[package]] -name = "libsqlite3-sys" -version = "0.30.1" +name = "libsecp256k1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" dependencies = [ - "pkg-config", - "vcpkg", + "arrayref", + "base64 0.22.1", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.6", + "serde", + "sha2 0.9.9", ] [[package]] -name = "libz-sys" -version = "1.1.29" +name = "libsecp256k1-core" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bc9657773828b90eeb625adff10eeac83cc21bbfd8e23a03eaa8a33c9e28d9" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", + "crunchy", + "digest 0.9.0", + "subtle", ] [[package]] -name = "line-clipping" -version = "0.3.7" +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" dependencies = [ - "bitflags 2.13.0", + "libsecp256k1-core", ] [[package]] -name = "linked-hash-map" -version = "0.5.6" +name = "libsecp256k1-gen-genmult" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] [[package]] -name = "linked_hash_set" +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libusb1-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da050ade7ac4ff1ba5379af847a10a10a8e284181e060105bf8d86960ce9ce0f" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bc9657773828b90eeb625adff10eeac83cc21bbfd8e23a03eaa8a33c9e28d9" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "line-clipping" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8" +dependencies = [ + "bitflags 2.13.0", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linked_hash_set" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "984fb35d06508d1e69fc91050cceba9c0b748f983e6739fa2c7a9237154c52c8" @@ -12554,6 +13217,12 @@ dependencies = [ "serde_core", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -12870,7 +13539,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227" dependencies = [ - "rustix", + "rustix 1.1.4", ] [[package]] @@ -13197,6 +13866,12 @@ dependencies = [ "unsigned-varint 0.8.0", ] +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + [[package]] name = "multimap" version = "0.10.1" @@ -13210,7 +13885,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19" dependencies = [ "bytes", - "futures", + "futures 0.3.32", "log", "pin-project", "smallvec", @@ -13313,7 +13988,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b65d130ee111430e47eed7896ea43ca693c387f097dd97376bffafbf25812128" dependencies = [ "bytes", - "futures", + "futures 0.3.32", "log", "netlink-packet-core", "netlink-sys", @@ -13652,7 +14327,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ - "proc-macro-crate 3.5.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 2.0.117", @@ -14412,6 +15087,15 @@ dependencies = [ "sha2 0.10.9", ] +[[package]] +name = "pad" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ad9b889f1b12e0b9ee24db044b5129150d5eada288edc800f789928dc8c0e3" +dependencies = [ + "unicode-width 0.1.14", +] + [[package]] name = "page_size" version = "0.6.0" @@ -14431,7 +15115,7 @@ dependencies = [ "byteorder", "bytes", "delegate", - "futures", + "futures 0.3.32", "log", "rand 0.8.6", "thiserror 1.0.69", @@ -14688,6 +15372,16 @@ dependencies = [ "sha2 0.10.9", ] +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset 0.4.2", + "indexmap 2.14.0", +] + [[package]] name = "petgraph" version = "0.7.1" @@ -14704,7 +15398,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" dependencies = [ - "futures", + "futures 0.3.32", "rustc_version 0.4.1", ] @@ -14716,6 +15410,7 @@ checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros 0.11.3", "phf_shared 0.11.3", + "serde", ] [[package]] @@ -14945,7 +15640,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -15085,6 +15780,16 @@ dependencies = [ "yansi", ] +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2", + "syn 1.0.109", +] + [[package]] name = "prettyplease" version = "0.2.37" @@ -15104,14 +15809,29 @@ dependencies = [ "elliptic-curve", ] +[[package]] +name = "primitive-types" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a" +dependencies = [ + "fixed-hash 0.7.0", + "impl-codec", + "impl-rlp", + "impl-serde 0.3.2", + "uint 0.9.5", +] + [[package]] name = "primitive-types" version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ - "fixed-hash", + "fixed-hash 0.8.0", "impl-codec", + "impl-rlp", + "impl-serde 0.4.0", "uint 0.9.5", ] @@ -15134,6 +15854,30 @@ dependencies = [ "toml_edit 0.25.12+spec-1.1.0", ] +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro-error-attr2" version = "2.0.0" @@ -15188,7 +15932,7 @@ dependencies = [ "chrono", "flate2", "procfs-core", - "rustix", + "rustix 1.1.4", ] [[package]] @@ -15276,6 +16020,16 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive 0.11.9", +] + [[package]] name = "prost" version = "0.12.6" @@ -15306,19 +16060,41 @@ dependencies = [ "prost-derive 0.14.4", ] +[[package]] +name = "prost-build" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +dependencies = [ + "bytes", + "heck 0.4.1", + "itertools 0.10.5", + "lazy_static", + "log", + "multimap 0.8.3", + "petgraph 0.6.5", + "prettyplease 0.1.25", + "prost 0.11.9", + "prost-types 0.11.9", + "regex", + "syn 1.0.109", + "tempfile", + "which", +] + [[package]] name = "prost-build" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ - "heck", - "itertools 0.14.0", + "heck 0.5.0", + "itertools 0.11.0", "log", - "multimap", + "multimap 0.10.1", "once_cell", - "petgraph", - "prettyplease", + "petgraph 0.7.1", + "prettyplease 0.2.37", "prost 0.13.5", "prost-types 0.13.5", "regex", @@ -15326,6 +16102,19 @@ dependencies = [ "tempfile", ] +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "prost-derive" version = "0.12.6" @@ -15333,7 +16122,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ "anyhow", - "itertools 0.12.1", + "itertools 0.11.0", "proc-macro2", "quote", "syn 2.0.117", @@ -15346,7 +16135,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.14.0", + "itertools 0.11.0", "proc-macro2", "quote", "syn 2.0.117", @@ -15359,12 +16148,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" dependencies = [ "anyhow", - "itertools 0.14.0", + "itertools 0.11.0", "proc-macro2", "quote", "syn 2.0.117", ] +[[package]] +name = "prost-types" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +dependencies = [ + "prost 0.11.9", +] + +[[package]] +name = "prost-types" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +dependencies = [ + "prost 0.12.6", +] + [[package]] name = "prost-types" version = "0.13.5" @@ -15719,7 +16526,7 @@ dependencies = [ "thiserror 2.0.18", "unicode-segmentation", "unicode-truncate", - "unicode-width", + "unicode-width 0.2.2", ] [[package]] @@ -15771,7 +16578,7 @@ dependencies = [ "strum 0.28.0", "time", "unicode-segmentation", - "unicode-width", + "unicode-width 0.2.2", ] [[package]] @@ -16110,7 +16917,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "futures-core", "futures-util", "metrics", @@ -16137,7 +16944,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 2.0.5", "alloy-signer-local 2.0.5", "derive_more 2.1.1", @@ -16155,8 +16962,8 @@ dependencies = [ "reth-storage-api", "reth-tasks", "reth-trie", - "revm-database", - "revm-state", + "revm-database 15.0.2", + "revm-state 12.0.1", "serde", "tokio", "tokio-stream", @@ -16173,7 +16980,7 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-evm", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-trie", "auto_impl", "derive_more 2.1.1", @@ -16204,7 +17011,7 @@ dependencies = [ "alloy-chains", "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "backon", @@ -16214,7 +17021,7 @@ dependencies = [ "crossterm", "eyre", "fdlimit", - "futures", + "futures 0.3.32", "human_bytes", "humantime", "itertools 0.14.0", @@ -16300,7 +17107,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "cfg-if", "eyre", "libc", @@ -16322,7 +17129,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-trie", "arbitrary", "bytes", @@ -16368,7 +17175,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eip7928 0.4.2", - "alloy-primitives", + "alloy-primitives 1.6.0", "auto_impl", "reth-execution-types", "reth-primitives-traits", @@ -16382,7 +17189,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "reth-chainspec", "reth-consensus", "reth-primitives-traits", @@ -16396,14 +17203,14 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-json-rpc 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types-engine", "alloy-transport 2.0.5", "auto_impl", "derive_more 2.1.1", "eyre", - "futures", + "futures 0.3.32", "reqwest 0.13.4", "reth-node-api", "reth-tracing", @@ -16418,7 +17225,7 @@ name = "reth-db" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "derive_more 2.1.1", "eyre", "libc", @@ -16448,7 +17255,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "arbitrary", "arrayvec", "bytes", @@ -16475,7 +17282,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "boyer-moore-magiclen", "eyre", "reth-chainspec", @@ -16504,7 +17311,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "arbitrary", "bytes", "modular-bitfield", @@ -16518,7 +17325,7 @@ name = "reth-discv4" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "discv5 0.10.4 (git+https://github.com/sigp/discv5?rev=7663c00)", "enr", @@ -16543,12 +17350,12 @@ name = "reth-discv5" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "derive_more 2.1.1", "discv5 0.10.4 (git+https://github.com/sigp/discv5?rev=7663c00)", "enr", - "futures", + "futures 0.3.32", "itertools 0.14.0", "metrics", "rand 0.9.4", @@ -16567,7 +17374,7 @@ name = "reth-dns-discovery" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "dashmap", "data-encoding", "enr", @@ -16593,10 +17400,10 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "async-compression", - "futures", + "futures 0.3.32", "futures-util", "itertools 0.14.0", "metrics", @@ -16629,7 +17436,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rlp", "alloy-rpc-types-engine", @@ -16669,7 +17476,7 @@ dependencies = [ "reth-tasks", "reth-tokio-util", "reth-tracing", - "revm", + "revm 40.0.3", "serde_json", "tempfile", "tokio", @@ -16684,7 +17491,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "aes", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "block-padding", "byteorder", @@ -16692,7 +17499,7 @@ dependencies = [ "concat-kdf", "ctr", "digest 0.10.7", - "futures", + "futures 0.3.32", "hmac 0.12.1", "pin-project", "rand 0.8.6", @@ -16712,7 +17519,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "eyre", "futures-util", @@ -16736,10 +17543,10 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "auto_impl", - "futures", + "futures 0.3.32", "reth-chain-state", "reth-errors", "reth-ethereum-primitives", @@ -16763,12 +17570,12 @@ dependencies = [ "alloy-eip7928 0.4.2", "alloy-eips 2.0.5", "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "crossbeam-channel", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "indexmap 2.14.0", "metrics", "moka", @@ -16803,9 +17610,9 @@ dependencies = [ "reth-trie-db", "reth-trie-parallel", "reth-trie-sparse", - "revm", - "revm-primitives", - "revm-state", + "revm 40.0.3", + "revm-primitives 24.0.1", + "revm-state 12.0.1", "schnellru", "thiserror 2.0.18", "tokio", @@ -16818,11 +17625,11 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "eyre", - "futures", + "futures 0.3.32", "itertools 0.14.0", "pin-project", "reth-chainspec", @@ -16849,7 +17656,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "ethereum_ssz", "ethereum_ssz_derive", @@ -16863,7 +17670,7 @@ name = "reth-era-downloader" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "bytes", "eyre", "futures-util", @@ -16880,7 +17687,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "eyre", "futures-util", "reth-db-api", @@ -16913,12 +17720,12 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-chains", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "bytes", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "pin-project", "reth-codecs", "reth-ecies", @@ -16946,7 +17753,7 @@ dependencies = [ "alloy-eip7928 0.4.2", "alloy-eips 2.0.5", "alloy-hardforks 0.4.7", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "bytes", @@ -16968,7 +17775,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "reth-chainspec", "reth-consensus", "reth-consensus-common", @@ -16983,7 +17790,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "reth-engine-primitives", "reth-ethereum-primitives", @@ -17000,7 +17807,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-eip2124", "alloy-hardforks 0.4.7", - "alloy-primitives", + "alloy-primitives 1.6.0", "arbitrary", "auto_impl", "once_cell", @@ -17014,7 +17821,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "reth-basic-payload-builder", @@ -17033,7 +17840,7 @@ dependencies = [ "reth-revm", "reth-storage-api", "reth-transaction-pool", - "revm", + "revm 40.0.3", "tracing", ] @@ -17044,7 +17851,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "reth-codecs", "reth-primitives-traits", @@ -17070,7 +17877,7 @@ dependencies = [ "alloy-eip7928 0.4.2", "alloy-eips 2.0.5", "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "auto_impl", "derive_more 2.1.1", "futures-util", @@ -17083,7 +17890,7 @@ dependencies = [ "reth-storage-api", "reth-storage-errors", "reth-trie-common", - "revm", + "revm 40.0.3", ] [[package]] @@ -17094,7 +17901,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "reth-chainspec", "reth-ethereum-forks", @@ -17103,7 +17910,7 @@ dependencies = [ "reth-execution-types", "reth-primitives-traits", "reth-storage-errors", - "revm", + "revm 40.0.3", ] [[package]] @@ -17111,7 +17918,7 @@ name = "reth-execution-cache" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "fixed-cache", "metrics", "parking_lot", @@ -17130,7 +17937,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "nybbles", "reth-storage-errors", @@ -17145,13 +17952,13 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "derive_more 2.1.1", "reth-ethereum-primitives", "reth-primitives-traits", "reth-trie-common", - "revm", + "revm 40.0.3", "serde", "serde_with", ] @@ -17163,9 +17970,9 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "eyre", - "futures", + "futures 0.3.32", "itertools 0.14.0", "metrics", "parking_lot", @@ -17232,7 +18039,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "reth-chain-state", "reth-execution-types", "reth-primitives-traits", @@ -17256,11 +18063,11 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", - "alloy-rpc-types-debug", + "alloy-rpc-types-debug 2.0.5", "eyre", - "futures", + "futures 0.3.32", "jsonrpsee", "pretty_assertions", "reth-engine-primitives", @@ -17271,9 +18078,9 @@ dependencies = [ "reth-rpc-api", "reth-tracing", "reth-trie", - "revm", - "revm-bytecode", - "revm-database", + "revm 40.0.3", + "revm-bytecode 11.0.1", + "revm-database 15.0.2", "serde", "serde_json", ] @@ -17284,7 +18091,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "bytes", - "futures", + "futures 0.3.32", "futures-util", "interprocess", "jsonrpsee", @@ -17329,7 +18136,7 @@ name = "reth-metrics" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "futures", + "futures 0.3.32", "metrics", "metrics-derive", "reth-primitives-traits", @@ -17342,7 +18149,7 @@ name = "reth-net-banlist" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "ipnet", ] @@ -17367,14 +18174,14 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "aquamarine", "auto_impl", "derive_more 2.1.1", "discv5 0.10.4 (git+https://github.com/sigp/discv5?rev=7663c00)", "enr", - "futures", + "futures 0.3.32", "itertools 0.14.0", "metrics", "parking_lot", @@ -17424,13 +18231,13 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-admin", "alloy-rpc-types-eth 2.0.5", "auto_impl", "derive_more 2.1.1", "enr", - "futures", + "futures 0.3.32", "reth-eth-wire-types", "reth-ethereum-forks", "reth-network-p2p", @@ -17450,10 +18257,10 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "auto_impl", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "parking_lot", "reth-consensus", "reth-eth-wire-types", @@ -17471,7 +18278,7 @@ name = "reth-network-peers" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "enr", "secp256k1 0.30.0", @@ -17543,14 +18350,14 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-provider 2.0.5", "alloy-rpc-types 2.0.5", "alloy-rpc-types-engine", "aquamarine", "eyre", "fdlimit", - "futures", + "futures 0.3.32", "jsonrpsee", "parking_lot", "rayon", @@ -17611,13 +18418,13 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "clap", "derive_more 2.1.1", "dirs-next", "eyre", - "futures", + "futures 0.3.32", "humantime", "ipnet", "rand 0.9.4", @@ -17667,7 +18474,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", "ethereum_ssz", @@ -17699,7 +18506,7 @@ dependencies = [ "reth-rpc-server-types", "reth-tracing", "reth-transaction-pool", - "revm", + "revm 40.0.3", "serde", "serde_json", "tokio", @@ -17712,7 +18519,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "chrono", "futures-util", "reth-chain-state", @@ -17737,10 +18544,10 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "humantime", "pin-project", "reth-engine-primitives", @@ -17801,7 +18608,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types 2.0.5", "derive_more 2.1.1", "futures-util", @@ -17838,7 +18645,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "auto_impl", @@ -17860,7 +18667,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "reth-transaction-pool", ] @@ -17883,7 +18690,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-eth 2.0.5", "alloy-trie", @@ -17899,9 +18706,9 @@ dependencies = [ "quanta", "rayon", "reth-codecs", - "revm-bytecode", - "revm-primitives", - "revm-state", + "revm-bytecode 11.0.1", + "revm-primitives 24.0.1", + "revm-state 12.0.1", "secp256k1 0.30.0", "serde", "thiserror 2.0.18", @@ -17916,7 +18723,7 @@ dependencies = [ "alloy-eip7928 0.4.2", "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "eyre", "itertools 0.14.0", @@ -17947,8 +18754,8 @@ dependencies = [ "reth-tokio-util", "reth-trie", "reth-trie-db", - "revm-database", - "revm-state", + "revm-database 15.0.2", + "revm-state 12.0.1", "rocksdb", "smallvec", "strum 0.27.2", @@ -17962,7 +18769,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "itertools 0.14.0", "metrics", "rayon", @@ -17989,7 +18796,7 @@ name = "reth-prune-types" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "arbitrary", "derive_more 2.1.1", "modular-bitfield", @@ -18005,14 +18812,14 @@ name = "reth-revm" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", - "alloy-rpc-types-debug", + "alloy-rpc-types-debug 2.0.5", "reth-primitives-traits", "reth-storage-api", "reth-storage-errors", "reth-trie", - "revm", + "revm 40.0.3", ] [[package]] @@ -18026,17 +18833,17 @@ dependencies = [ "alloy-evm", "alloy-genesis 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-client 2.0.5", "alloy-rpc-types 2.0.5", "alloy-rpc-types-admin", "alloy-rpc-types-beacon", - "alloy-rpc-types-debug", + "alloy-rpc-types-debug 2.0.5", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", "alloy-rpc-types-mev", - "alloy-rpc-types-trace", + "alloy-rpc-types-trace 2.0.5", "alloy-rpc-types-txpool", "alloy-serde 2.0.5", "alloy-signer 2.0.5", @@ -18044,7 +18851,7 @@ dependencies = [ "async-trait", "derive_more 2.1.1", "dyn-clone", - "futures", + "futures 0.3.32", "itertools 0.14.0", "jsonrpsee", "jsonrpsee-types", @@ -18078,9 +18885,9 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "reth-trie-common", - "revm", - "revm-inspectors", - "revm-primitives", + "revm 40.0.3", + "revm-inspectors 0.40.1", + "revm-primitives 24.0.1", "serde", "serde_json", "sha2 0.10.9", @@ -18099,16 +18906,16 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-genesis 2.0.5", "alloy-json-rpc 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types 2.0.5", "alloy-rpc-types-admin", "alloy-rpc-types-anvil 2.0.5", "alloy-rpc-types-beacon", - "alloy-rpc-types-debug", + "alloy-rpc-types-debug 2.0.5", "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.0.5", "alloy-rpc-types-mev", - "alloy-rpc-types-trace", + "alloy-rpc-types-trace 2.0.5", "alloy-rpc-types-txpool", "alloy-serde 2.0.5", "jsonrpsee", @@ -18173,7 +18980,7 @@ dependencies = [ "alloy-evm", "alloy-json-rpc 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "auto_impl", "dyn-clone", @@ -18190,7 +18997,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "async-trait", @@ -18227,7 +19034,7 @@ dependencies = [ "alloy-evm", "alloy-json-rpc 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-eth 2.0.5", "alloy-rpc-types-mev", @@ -18235,7 +19042,7 @@ dependencies = [ "async-trait", "auto_impl", "dyn-clone", - "futures", + "futures 0.3.32", "jsonrpsee", "jsonrpsee-types", "parking_lot", @@ -18255,8 +19062,8 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "reth-trie-common", - "revm", - "revm-inspectors", + "revm 40.0.3", + "revm-inspectors 0.40.1", "serde_json", "tokio", "tracing", @@ -18273,14 +19080,14 @@ dependencies = [ "alloy-eips 2.0.5", "alloy-evm", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-client 2.0.5", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", "alloy-sol-types", "alloy-transport 2.0.5", "derive_more 2.1.1", - "futures", + "futures 0.3.32", "itertools 0.14.0", "jsonrpsee-core", "jsonrpsee-types", @@ -18302,8 +19109,8 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "reth-trie", - "revm", - "revm-inspectors", + "revm 40.0.3", + "revm-inspectors 0.40.1", "schnellru", "serde", "thiserror 2.0.18", @@ -18333,7 +19140,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "jsonrpsee-core", "jsonrpsee-types", @@ -18351,7 +19158,7 @@ checksum = "9fa03a2c9681c385ae1c72b169ac9c3525163b71db0b3362f16e8929e19e45fd" dependencies = [ "alloy-consensus 2.0.5", "alloy-network 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth 2.0.5", "alloy-signer 2.0.5", "reth-primitives-traits", @@ -18364,7 +19171,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "eyre", "futures-util", @@ -18415,7 +19222,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "aquamarine", "auto_impl", "futures-util", @@ -18442,7 +19249,7 @@ name = "reth-stages-types" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "arbitrary", "bytes", "modular-bitfield", @@ -18456,7 +19263,7 @@ name = "reth-static-file" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "parking_lot", "rayon", "reth-codecs", @@ -18476,7 +19283,7 @@ name = "reth-static-file-types" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "clap", "derive_more 2.1.1", "fixed-map", @@ -18494,7 +19301,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eip7928 0.4.2", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "auto_impl", "reth-chainspec", @@ -18508,7 +19315,7 @@ dependencies = [ "reth-storage-errors", "reth-tokio-util", "reth-trie-common", - "revm-database", + "revm-database 15.0.2", "serde_json", ] @@ -18518,15 +19325,15 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "derive_more 2.1.1", "reth-codecs", "reth-primitives-traits", "reth-prune-types", "reth-static-file-types", - "revm-database-interface", - "revm-state", + "revm-database-interface 12.1.1", + "revm-state 12.0.1", "thiserror 2.0.18", ] @@ -18559,7 +19366,7 @@ dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", "alloy-genesis 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "rand 0.8.6", "rand 0.9.4", "reth-ethereum-primitives", @@ -18623,7 +19430,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "aquamarine", "auto_impl", @@ -18647,9 +19454,9 @@ dependencies = [ "reth-primitives-traits", "reth-storage-api", "reth-tasks", - "revm", - "revm-interpreter", - "revm-primitives", + "revm 40.0.3", + "revm-interpreter 37.0.3", + "revm-primitives 24.0.1", "rustc-hash 2.1.2", "schnellru", "serde", @@ -18668,7 +19475,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-consensus 2.0.5", "alloy-eips 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-trie", "auto_impl", @@ -18682,7 +19489,7 @@ dependencies = [ "reth-storage-errors", "reth-trie-common", "reth-trie-sparse", - "revm-database", + "revm-database 15.0.2", "tracing", "triehash", ] @@ -18693,7 +19500,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ "alloy-consensus 2.0.5", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-eth 2.0.5", "alloy-serde 2.0.5", @@ -18709,7 +19516,7 @@ dependencies = [ "rayon", "reth-codecs", "reth-primitives-traits", - "revm-database", + "revm-database 15.0.2", "serde", "serde_with", ] @@ -18719,7 +19526,7 @@ name = "reth-trie-db" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "metrics", "parking_lot", "reth-db-api", @@ -18741,7 +19548,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59c dependencies = [ "alloy-eip7928 0.4.2", "alloy-evm", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "crossbeam-channel", "crossbeam-utils", @@ -18757,7 +19564,7 @@ dependencies = [ "reth-tasks", "reth-trie", "reth-trie-sparse", - "revm-state", + "revm-state 12.0.1", "thiserror 2.0.18", "tracing", ] @@ -18767,7 +19574,7 @@ name = "reth-trie-sparse" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.3.0#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-trie", "either", @@ -18793,23 +19600,54 @@ dependencies = [ "zstd", ] +[[package]] +name = "revm" +version = "29.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718d90dce5f07e115d0e66450b1b8aa29694c1cf3f89ebddaddccc2ccbd2f13e" +dependencies = [ + "revm-bytecode 6.2.2", + "revm-context 9.1.0", + "revm-context-interface 10.2.0", + "revm-database 7.0.5", + "revm-database-interface 7.0.5", + "revm-handler 10.0.1", + "revm-inspector 10.0.1", + "revm-interpreter 25.0.3", + "revm-precompile 27.0.0", + "revm-primitives 20.2.1", + "revm-state 7.0.5", +] + [[package]] name = "revm" version = "40.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "823da6e5509bb8e5dcd91295870e494917a030ad506fc83301f3f08ad8b15b17" dependencies = [ - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database", - "revm-database-interface", - "revm-handler", - "revm-inspector", - "revm-interpreter", - "revm-precompile", - "revm-primitives", - "revm-state", + "revm-bytecode 11.0.1", + "revm-context 18.0.3", + "revm-context-interface 19.0.3", + "revm-database 15.0.2", + "revm-database-interface 12.1.1", + "revm-handler 20.0.3", + "revm-inspector 21.0.3", + "revm-interpreter 37.0.3", + "revm-precompile 36.0.3", + "revm-primitives 24.0.1", + "revm-state 12.0.1", +] + +[[package]] +name = "revm-bytecode" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66c52031b73cae95d84cd1b07725808b5fd1500da3e5e24574a3b2dc13d9f16d" +dependencies = [ + "bitvec", + "phf 0.11.3", + "revm-primitives 20.2.1", + "serde", ] [[package]] @@ -18820,7 +19658,24 @@ checksum = "d8b378c2653331fe60969d9745e802cd773d82a20d8aaced914dfcf26ab8f0d9" dependencies = [ "bitvec", "phf 0.13.1", - "revm-primitives", + "revm-primitives 24.0.1", + "serde", +] + +[[package]] +name = "revm-context" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a20c98e7008591a6f012550c2a00aa36cba8c14cc88eb88dec32eb9102554b4" +dependencies = [ + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode 6.2.2", + "revm-context-interface 10.2.0", + "revm-database-interface 7.0.5", + "revm-primitives 20.2.1", + "revm-state 7.0.5", "serde", ] @@ -18833,11 +19688,27 @@ dependencies = [ "bitvec", "cfg-if", "derive-where", - "revm-bytecode", - "revm-context-interface", - "revm-database-interface", - "revm-primitives", - "revm-state", + "revm-bytecode 11.0.1", + "revm-context-interface 19.0.3", + "revm-database-interface 12.1.1", + "revm-primitives 24.0.1", + "revm-state 12.0.1", + "serde", +] + +[[package]] +name = "revm-context-interface" +version = "10.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50d241ed1ce647b94caf174fcd0239b7651318b2c4c06b825b59b973dfb8495" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface 7.0.5", + "revm-primitives 20.2.1", + "revm-state 7.0.5", "serde", ] @@ -18851,10 +19722,27 @@ dependencies = [ "alloy-eip7702", "auto_impl", "either", - "revm-database-interface", - "revm-primitives", - "revm-state", + "revm-database-interface 12.1.1", + "revm-primitives 24.0.1", + "revm-state 12.0.1", + "serde", +] + +[[package]] +name = "revm-database" +version = "7.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a276ed142b4718dcf64bc9624f474373ed82ef20611025045c3fb23edbef9c" +dependencies = [ + "alloy-eips 1.8.3", + "alloy-provider 1.8.3", + "alloy-transport 1.8.3", + "revm-bytecode 6.2.2", + "revm-database-interface 7.0.5", + "revm-primitives 20.2.1", + "revm-state 7.0.5", "serde", + "tokio", ] [[package]] @@ -18865,11 +19753,25 @@ checksum = "a69c3ce73454a09ef89a66177239d7c4f5f697227ae27254c99451866603b19d" dependencies = [ "alloy-eips 2.0.5", "derive_more 2.1.1", - "revm-bytecode", - "revm-database-interface", - "revm-primitives", - "revm-state", + "revm-bytecode 11.0.1", + "revm-database-interface 12.1.1", + "revm-primitives 24.0.1", + "revm-state 12.0.1", + "serde", +] + +[[package]] +name = "revm-database-interface" +version = "7.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c523c77e74eeedbac5d6f7c092e3851dbe9c7fec6f418b85992bd79229db361" +dependencies = [ + "auto_impl", + "either", + "revm-primitives 20.2.1", + "revm-state 7.0.5", "serde", + "tokio", ] [[package]] @@ -18880,12 +19782,31 @@ checksum = "4a2656187f9f9c22ef9dd9300ed71aeaeca3506a6a0a229a07f264649b960d68" dependencies = [ "auto_impl", "either", - "revm-primitives", - "revm-state", + "revm-primitives 24.0.1", + "revm-state 12.0.1", "serde", "thiserror 2.0.18", ] +[[package]] +name = "revm-handler" +version = "10.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "550331ea85c1d257686e672081576172fe3d5a10526248b663bbf54f1bef226a" +dependencies = [ + "auto_impl", + "derive-where", + "revm-bytecode 6.2.2", + "revm-context 9.1.0", + "revm-context-interface 10.2.0", + "revm-database-interface 7.0.5", + "revm-interpreter 25.0.3", + "revm-precompile 27.0.0", + "revm-primitives 20.2.1", + "revm-state 7.0.5", + "serde", +] + [[package]] name = "revm-handler" version = "20.0.3" @@ -18894,15 +19815,33 @@ checksum = "3ce1d66037ca1394128313bb995fa9f50d834927a389386bb34f8f0ef914648f" dependencies = [ "auto_impl", "derive-where", - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database-interface", - "revm-interpreter", - "revm-precompile", - "revm-primitives", - "revm-state", + "revm-bytecode 11.0.1", + "revm-context 18.0.3", + "revm-context-interface 19.0.3", + "revm-database-interface 12.1.1", + "revm-interpreter 37.0.3", + "revm-precompile 36.0.3", + "revm-primitives 24.0.1", + "revm-state 12.0.1", + "serde", +] + +[[package]] +name = "revm-inspector" +version = "10.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c0a6e9ccc2ae006f5bed8bd80cd6f8d3832cd55c5e861b9402fdd556098512f" +dependencies = [ + "auto_impl", + "either", + "revm-context 9.1.0", + "revm-database-interface 7.0.5", + "revm-handler 10.0.1", + "revm-interpreter 25.0.3", + "revm-primitives 20.2.1", + "revm-state 7.0.5", "serde", + "serde_json", ] [[package]] @@ -18913,49 +19852,105 @@ checksum = "9fe3635d3411e8318849546570ca0220e783443319e28f5397c9f80b05bf4344" dependencies = [ "auto_impl", "either", - "revm-context", - "revm-database-interface", - "revm-handler", - "revm-interpreter", - "revm-primitives", - "revm-state", + "revm-context 18.0.3", + "revm-database-interface 12.1.1", + "revm-handler 20.0.3", + "revm-interpreter 37.0.3", + "revm-primitives 24.0.1", + "revm-state 12.0.1", "serde", "serde_json", ] [[package]] name = "revm-inspectors" -version = "0.40.1" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e0cdc845c8dbf41255c9add80923b45df7bf1dd0473e41483ac398005dba12" +checksum = "de23199c4b6181a6539e4131cf7e31cde4df05e1192bcdce491c34a511241588" dependencies = [ - "alloy-primitives", - "alloy-rpc-types-eth 2.0.5", - "alloy-rpc-types-trace", + "alloy-primitives 1.6.0", + "alloy-rpc-types-eth 1.8.3", + "alloy-rpc-types-trace 1.8.3", "alloy-sol-types", "anstyle", - "boa_engine", - "boa_gc", "colorchoice", - "revm", + "revm 29.0.1", "serde", "serde_json", "thiserror 2.0.18", ] [[package]] -name = "revm-interpreter" -version = "37.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "revm-inspectors" +version = "0.40.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e0cdc845c8dbf41255c9add80923b45df7bf1dd0473e41483ac398005dba12" +dependencies = [ + "alloy-primitives 1.6.0", + "alloy-rpc-types-eth 2.0.5", + "alloy-rpc-types-trace 2.0.5", + "alloy-sol-types", + "anstyle", + "boa_engine", + "boa_gc", + "colorchoice", + "revm 40.0.3", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "revm-interpreter" +version = "25.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06575dc51b1d8f5091daa12a435733a90b4a132dca7ccee0666c7db3851bc30c" +dependencies = [ + "revm-bytecode 6.2.2", + "revm-context-interface 10.2.0", + "revm-primitives 20.2.1", + "serde", +] + +[[package]] +name = "revm-interpreter" +version = "37.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bae56c57ddca1f5c4abd443f826f1b3e49a86a528e7e1ea0fc207cdc4671a37e" dependencies = [ - "revm-bytecode", - "revm-context-interface", - "revm-primitives", - "revm-state", + "revm-bytecode 11.0.1", + "revm-context-interface 19.0.3", + "revm-primitives 24.0.1", + "revm-state 12.0.1", "serde", ] +[[package]] +name = "revm-precompile" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b57d4bd9e6b5fe469da5452a8a137bc2d030a3cd47c46908efc615bbc699da" +dependencies = [ + "ark-bls12-381", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "arrayref", + "aurora-engine-modexp", + "blst", + "c-kzg", + "cfg-if", + "k256", + "libsecp256k1", + "p256", + "revm-primitives 20.2.1", + "ripemd", + "rug", + "secp256k1 0.31.1", + "sha2 0.10.9", +] + [[package]] name = "revm-precompile" version = "36.0.3" @@ -18975,25 +19970,49 @@ dependencies = [ "cfg-if", "k256", "p256", - "revm-context-interface", - "revm-primitives", + "revm-context-interface 19.0.3", + "revm-primitives 24.0.1", "ripemd", "secp256k1 0.31.1", "sha2 0.10.9", "substrate-bn", ] +[[package]] +name = "revm-primitives" +version = "20.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa29d9da06fe03b249b6419b33968ecdf92ad6428e2f012dc57bcd619b5d94e" +dependencies = [ + "alloy-primitives 1.6.0", + "num_enum 0.7.6", + "once_cell", + "serde", +] + [[package]] name = "revm-primitives" version = "24.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe5102d804892908d4ebf68da29b8562895922dffa26c230ff2c4dadcf93916f" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "once_cell", "serde", ] +[[package]] +name = "revm-state" +version = "7.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f64fbacb86008394aaebd3454f9643b7d5a782bd251135e17c5b33da592d84d" +dependencies = [ + "bitflags 2.13.0", + "revm-bytecode 6.2.2", + "revm-primitives 20.2.1", + "serde", +] + [[package]] name = "revm-state" version = "12.0.1" @@ -19003,8 +20022,8 @@ dependencies = [ "alloy-eip7928 0.4.2", "bitflags 2.13.0", "nonmax", - "revm-bytecode", - "revm-primitives", + "revm-bytecode 11.0.1", + "revm-primitives 24.0.1", "serde", ] @@ -19059,7 +20078,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b37f9050c74d66eb953591e88a60f2d347e99b121e7330eabb0f29c4053d2a36" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "bytemuck", "hex", @@ -19270,7 +20289,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a604f09f459f456fd9ef4919c6efcaa6a787a6f9ffcd76cfc81eae1860584a1" dependencies = [ "alloy", - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-sol-types", "anyhow", "cfg-if", @@ -19618,6 +20637,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "rug" +version = "1.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07a8857882aec59d27254b02481c709327c13de6fad1da60bfc4f9783eaaa61e" +dependencies = [ + "az", + "gmp-mpfr-sys", + "libc", + "libm", +] + [[package]] name = "ruint" version = "1.18.0" @@ -19637,7 +20668,7 @@ dependencies = [ "num-integer", "num-traits", "parity-scale-codec", - "primitive-types", + "primitive-types 0.12.2", "proptest", "rand 0.8.6", "rand 0.9.4", @@ -19654,6 +20685,16 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" +[[package]] +name = "rusb" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab9f9ff05b63a786553a4c02943b74b34a988448671001e9a27e2f0565cc05a4" +dependencies = [ + "libc", + "libusb1-sys", +] + [[package]] name = "russh" version = "0.54.5" @@ -19677,7 +20718,7 @@ dependencies = [ "ed25519-dalek", "elliptic-curve", "enum_dispatch", - "futures", + "futures 0.3.32", "generic-array 0.14.7", "getrandom 0.2.17", "hex-literal 0.4.1", @@ -19802,6 +20843,19 @@ dependencies = [ "nom", ] +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.13.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + [[package]] name = "rustix" version = "1.1.4" @@ -19811,7 +20865,7 @@ dependencies = [ "bitflags 2.13.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.12.1", "windows-sys 0.61.2", ] @@ -19986,7 +21040,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" dependencies = [ - "futures", + "futures 0.3.32", "pin-project", "static_assertions", ] @@ -20206,6 +21260,17 @@ dependencies = [ "cc", ] +[[package]] +name = "secret-vault-value" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471de2a3d4b361569b862e04491696237381641ae5808f8e69ea08de991cd306" +dependencies = [ + "serde", + "serde_json", + "zeroize", +] + [[package]] name = "security-framework" version = "3.7.0" @@ -20521,6 +21586,19 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.9.0", + "opaque-debug", +] + [[package]] name = "sha2" version = "0.10.9" @@ -20841,7 +21919,7 @@ version = "6.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33b33f1eaadcd4159157758b0edcf1c14f470915f85c648e660e4740ff83e921" dependencies = [ - "futures", + "futures 0.3.32", "p3-challenger", "serde", "slop-algebra", @@ -20889,7 +21967,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04717ab01c1202613436caf70948f3e7157bb4c35084817879787c98d62c87e9" dependencies = [ "crossbeam", - "futures", + "futures 0.3.32", "pin-project", "rayon", "thiserror 1.0.69", @@ -20904,7 +21982,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aaf578d92dc05de1cd4fa7dc9ffeca918df20cda868326528ec0e81d9c153b1" dependencies = [ "derive-where", - "futures", + "futures 0.3.32", "itertools 0.14.0", "num_cpus", "rand 0.8.6", @@ -21006,7 +22084,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e46a58b8c6c7ab9fbb7dc55c68269b1d1d722beb23af8d6a1091c15877328145" dependencies = [ "derive-where", - "futures", + "futures 0.3.32", "num_cpus", "rand 0.8.6", "rayon", @@ -21045,7 +22123,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e7197d135a012724c2988e2c3a643a54eddbdaa0570b2540b55f39337b437cf" dependencies = [ "derive-where", - "futures", + "futures 0.3.32", "itertools 0.14.0", "serde", "slop-algebra", @@ -21067,7 +22145,7 @@ version = "6.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bcf5bf842f895678f170cc36ac7c4bc6521e7c119d24b2c0793f4bbcbe0d3d4" dependencies = [ - "futures", + "futures 0.3.32", "itertools 0.14.0", "rayon", "serde", @@ -21135,7 +22213,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52f5c2e680078bfcfa0b782ce3512c06b8fcf8e3bc373c6c291e32395580e780" dependencies = [ "derive-where", - "futures", + "futures 0.3.32", "itertools 0.14.0", "rand 0.8.6", "rayon", @@ -21247,7 +22325,7 @@ checksum = "2e859df029d160cb88608f5d7df7fb4753fd20fdfb4de5644f3d8b8440841721" dependencies = [ "base64 0.22.1", "bytes", - "futures", + "futures 0.3.32", "http 1.4.2", "httparse", "log", @@ -21303,7 +22381,7 @@ dependencies = [ "backoff", "chrono", "eyre", - "futures", + "futures 0.3.32", "if-addrs 0.13.4", "lazy_static", "log", @@ -21430,7 +22508,7 @@ dependencies = [ "bincode 1.3.3", "cfg-if", "enum-map", - "futures", + "futures 0.3.32", "generic-array 1.1.0", "hashbrown 0.14.5", "itertools 0.14.0", @@ -21511,7 +22589,7 @@ dependencies = [ "arrayref", "deepsize2", "derive-where", - "futures", + "futures 0.3.32", "hashbrown 0.14.5", "itertools 0.14.0", "num-bigint 0.4.6", @@ -21616,7 +22694,7 @@ dependencies = [ "either", "enum-map", "eyre", - "futures", + "futures 0.3.32", "hashbrown 0.14.5", "hex", "indicatif 0.17.11", @@ -21829,7 +22907,7 @@ version = "6.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "431178dd864d35527a643d03193c36f7f52cccd6b7d3e631849ca71d370dcad5" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "alloy-signer 1.8.3", "alloy-signer-aws", "alloy-signer-local 1.8.3", @@ -21842,7 +22920,7 @@ dependencies = [ "cfg-if", "dirs 5.0.1", "eventsource-stream", - "futures", + "futures 0.3.32", "hex", "indicatif 0.17.11", "itertools 0.14.0", @@ -22016,7 +23094,7 @@ checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" dependencies = [ "dotenvy", "either", - "heck", + "heck 0.5.0", "hex", "once_cell", "proc-macro2", @@ -22187,6 +23265,23 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +[[package]] +name = "starknet-types-core" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a12690813e587969cb4a9e7d8ebdb069d4bb7ec8d03275c5f719310c8e1f07c" +dependencies = [ + "generic-array 0.14.7", + "lambdaworks-crypto", + "lambdaworks-math", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand 0.9.4", + "serde", + "zeroize", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -22265,6 +23360,12 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" + [[package]] name = "strum" version = "0.27.2" @@ -22283,13 +23384,26 @@ dependencies = [ "strum_macros 0.28.0", ] +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.117", +] + [[package]] name = "strum_macros" version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.117", @@ -22301,7 +23415,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.117", @@ -22313,7 +23427,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5eee3fb942ed39f3971438fcc7e05e20717e599e14c5c7cb50edd0df2a44b274" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.117", @@ -22348,6 +23462,104 @@ dependencies = [ "rustc-hex", ] +[[package]] +name = "substreams" +version = "0.5.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e47e531af83a3cbb78c627ee8232a0ac86604f11c89e34bd4b721ec41e03e5" +dependencies = [ + "anyhow", + "bigdecimal", + "hex", + "hex-literal 0.3.4", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "pad", + "pest", + "pest_derive", + "prost 0.11.9", + "prost-build 0.11.9", + "prost-types 0.11.9", + "substreams-macro", + "thiserror 1.0.69", +] + +[[package]] +name = "substreams-ethereum" +version = "0.9.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d033738be190ad9c9a63712cf121e4f33ae9c57845c64021e421c45aac688b5" +dependencies = [ + "getrandom 0.2.17", + "num-bigint 0.4.6", + "substreams", + "substreams-ethereum-abigen", + "substreams-ethereum-core", + "substreams-ethereum-derive", +] + +[[package]] +name = "substreams-ethereum-abigen" +version = "0.9.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27ef0adda971fbbd085545e73ccd7efbc12e31139cd301252f478e6b9743ff65" +dependencies = [ + "anyhow", + "ethabi 17.2.0", + "heck 0.4.1", + "hex", + "prettyplease 0.1.25", + "proc-macro2", + "quote", + "substreams-ethereum-core", + "syn 1.0.109", +] + +[[package]] +name = "substreams-ethereum-core" +version = "0.9.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a38e740018de8c2453f08621bab84ac55b0f1bfd42d56cf8b43ad340e670862" +dependencies = [ + "bigdecimal", + "ethabi 17.2.0", + "getrandom 0.2.17", + "num-bigint 0.4.6", + "prost 0.11.9", + "prost-build 0.11.9", + "prost-types 0.11.9", + "substreams", +] + +[[package]] +name = "substreams-ethereum-derive" +version = "0.9.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55c934c70e6ab1fe11a89f401f36e7d9be3fe087687395767a4c13ab3d6bd055" +dependencies = [ + "ethabi 17.2.0", + "heck 0.4.1", + "hex", + "num-bigint 0.4.6", + "proc-macro2", + "quote", + "substreams-ethereum-abigen", + "syn 1.0.109", +] + +[[package]] +name = "substreams-macro" +version = "0.5.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4ac77f08d723dace35739d65df8ed122f6d04e2a3e47929831d4021e3339240" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "thiserror 1.0.69", +] + [[package]] name = "subtle" version = "2.6.1" @@ -22476,7 +23688,7 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fce91f2f0ec87dff7e6bcbbeb267439aa1188703003c6055193c821487400432" dependencies = [ - "unicode-width", + "unicode-width 0.2.2", ] [[package]] @@ -22517,7 +23729,7 @@ dependencies = [ "fastrand", "getrandom 0.4.2", "once_cell", - "rustix", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -22636,7 +23848,7 @@ dependencies = [ "docker_credential", "either", "etcetera 0.10.0", - "futures", + "futures 0.3.32", "log", "memchr", "parse-display", @@ -22961,6 +24173,20 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "native-tls", + "tokio", + "tokio-native-tls", + "tungstenite 0.20.1", +] + [[package]] name = "tokio-tungstenite" version = "0.24.0" @@ -23028,7 +24254,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b319ef9394889dab2e1b4f0085b45ba11d0c79dc9d1a9d1afc057d009d0f1c7" dependencies = [ "bytes", - "futures", + "futures 0.3.32", "libc", "tokio", "vsock", @@ -23242,11 +24468,13 @@ dependencies = [ "socket2 0.6.4", "sync_wrapper 1.0.2", "tokio", + "tokio-rustls 0.26.4", "tokio-stream", "tower 0.5.3", "tower-layer", "tower-service", "tracing", + "webpki-roots 1.0.7", ] [[package]] @@ -23255,9 +24483,9 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" dependencies = [ - "prettyplease", + "prettyplease 0.2.37", "proc-macro2", - "prost-build", + "prost-build 0.13.5", "prost-types 0.13.5", "quote", "syn 2.0.117", @@ -23603,7 +24831,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5f7c95348f20c1c913d72157b3c6dee6ea3e30b3d19502c5a7f6d3f160dacbf" dependencies = [ "cc", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -23622,7 +24850,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7fd51aa83d2eb83b04570808430808b5d24fdbf479a4d5ac5dee4a2e2dd2be4" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.6.0", "ethereum_hashing", "ethereum_ssz", "smallvec", @@ -23657,6 +24885,26 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 0.2.12", + "httparse", + "log", + "native-tls", + "rand 0.8.6", + "sha1 0.10.6", + "thiserror 1.0.69", + "url", + "utf-8", +] + [[package]] name = "tungstenite" version = "0.24.0" @@ -23712,6 +24960,40 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "turnkey_api_key_stamper" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34f72e05a07cb04163efff0c766521ebacbb268a851db83d419b7c56df90d046" +dependencies = [ + "base64 0.22.1", + "hex", + "k256", + "p256", + "rand_core 0.6.4", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "turnkey_client" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f216ea270ec4a37daa491679b716962cda7819cac982b49088979b2edf6067df" +dependencies = [ + "mime", + "prost 0.12.6", + "prost-types 0.12.6", + "reqwest 0.12.28", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.18", + "tokio", + "turnkey_api_key_stamper", +] + [[package]] name = "twirp-rs" version = "0.13.0-succinct" @@ -23720,7 +25002,7 @@ checksum = "27dfcc06b8d9262bc2d4b8d1847c56af9971a52dd8a0076876de9db763227d0d" dependencies = [ "async-trait", "axum 0.7.9", - "futures", + "futures 0.3.32", "http 1.4.2", "http-body-util", "hyper 1.10.1", @@ -23750,6 +25032,167 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" +[[package]] +name = "tycho-client" +version = "0.305.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911bd487a6c1eb485d8b06b1181ee007bf30dc337378562159e7d6b675aace4a" +dependencies = [ + "async-trait", + "backoff", + "chrono", + "clap", + "futures 0.3.32", + "hex", + "hyper 0.14.32", + "lru 0.16.4", + "reqwest 0.12.28", + "serde", + "serde_json", + "thiserror 1.0.69", + "time", + "tokio", + "tokio-tungstenite 0.20.1", + "toml 0.8.23", + "tracing", + "tracing-appender", + "tracing-subscriber 0.3.23", + "tycho-common", + "uuid", + "zstd", +] + +[[package]] +name = "tycho-common" +version = "0.305.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19338a335c5f8fdc3dff746877973102e651259054a7c80d9341274adff7c9c" +dependencies = [ + "anyhow", + "async-trait", + "bytes", + "chrono", + "deepsize", + "hex", + "itertools 0.10.5", + "num-bigint 0.4.6", + "rand 0.8.6", + "serde", + "serde_json", + "strum 0.25.0", + "strum_macros 0.25.3", + "thiserror 1.0.69", + "tiny-keccak", + "tracing", + "typetag", + "utoipa 4.2.3", + "uuid", +] + +[[package]] +name = "tycho-ethereum" +version = "0.305.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd280ae760a49c5804feab81398c7a63bf183c3c153265538a0da5155280df0d" +dependencies = [ + "alloy", + "async-trait", + "backoff", + "chrono", + "futures 0.3.32", + "num-bigint 0.4.6", + "serde", + "serde_json", + "serde_with", + "thiserror 1.0.69", + "tokio", + "tracing", + "tycho-common", + "unicode-segmentation", +] + +[[package]] +name = "tycho-execution" +version = "0.305.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a308eaecf8b976c887ee833ea65e535a9d14a2d0566e7981c90e9b1b371ff89d" +dependencies = [ + "alloy", + "chrono", + "clap", + "dotenvy", + "hex", + "num-bigint 0.4.6", + "once_cell", + "reqwest 0.12.28", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tycho-common", +] + +[[package]] +name = "tycho-simulation" +version = "0.305.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d84900644ba230802ef1f9ff121fed5e6fb31c6ae396bfd6924e4f3a7709b0e3" +dependencies = [ + "alloy", + "alloy-chains", + "async-stream", + "async-trait", + "chrono", + "dotenv", + "ekubo_sdk", + "enum_delegate", + "evm_ekubo_sdk", + "foundry-block-explorers", + "futures 0.3.32", + "hex", + "hex-literal 0.4.1", + "http 1.4.2", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "prost 0.13.5", + "reqwest 0.12.28", + "revm 29.0.1", + "revm-inspectors 0.30.1", + "ruint", + "serde", + "serde_json", + "strum_macros 0.25.3", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tokio-tungstenite 0.28.0", + "toml 0.8.23", + "tracing", + "tycho-client", + "tycho-common", + "tycho-ethereum", + "typetag", + "uuid", +] + +[[package]] +name = "tycho-substreams" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12c39162e44705f28402e2f114da2694e01a466a80dc6f7dca9af0b49f92c76" +dependencies = [ + "ethabi 18.0.0", + "hex", + "itertools 0.12.1", + "num-bigint 0.4.6", + "prost 0.11.9", + "serde", + "serde_json", + "substreams", + "substreams-ethereum", +] + [[package]] name = "typed-arena" version = "2.0.2" @@ -23909,9 +25352,15 @@ checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5" dependencies = [ "itertools 0.14.0", "unicode-segmentation", - "unicode-width", + "unicode-width 0.2.2", ] +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + [[package]] name = "unicode-width" version = "0.2.2" @@ -23924,6 +25373,57 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "uniswap-v2-core" +version = "0.1.0" +source = "git+ssh://git@github.com/propeller-heads/builder-integration.git?rev=6029f1b4739c753383c0ce5ef03a70ad1bd007e5#6029f1b4739c753383c0ce5ef03a70ad1bd007e5" +dependencies = [ + "anyhow", + "ethabi 18.0.0", + "getrandom 0.2.17", + "hex", + "num-bigint 0.4.6", + "num-traits", + "substreams", + "substreams-ethereum", + "tycho-common", + "tycho-substreams", +] + +[[package]] +name = "uniswap-v3-core" +version = "0.1.0" +source = "git+ssh://git@github.com/propeller-heads/builder-integration.git?rev=6029f1b4739c753383c0ce5ef03a70ad1bd007e5#6029f1b4739c753383c0ce5ef03a70ad1bd007e5" +dependencies = [ + "anyhow", + "ethabi 18.0.0", + "getrandom 0.2.17", + "hex", + "num-bigint 0.4.6", + "num-traits", + "substreams", + "substreams-ethereum", + "tycho-common", + "tycho-substreams", +] + +[[package]] +name = "uniswap-v4-core" +version = "0.1.0" +source = "git+ssh://git@github.com/propeller-heads/builder-integration.git?rev=6029f1b4739c753383c0ce5ef03a70ad1bd007e5#6029f1b4739c753383c0ce5ef03a70ad1bd007e5" +dependencies = [ + "anyhow", + "ethabi 18.0.0", + "getrandom 0.2.17", + "hex", + "num-bigint 0.4.6", + "num-traits", + "substreams", + "substreams-ethereum", + "tycho-common", + "tycho-substreams", +] + [[package]] name = "unit-prefix" version = "0.5.2" @@ -24052,6 +25552,18 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "utoipa" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23" +dependencies = [ + "indexmap 2.14.0", + "serde", + "serde_json", + "utoipa-gen 4.3.1", +] + [[package]] name = "utoipa" version = "5.5.0" @@ -24061,7 +25573,19 @@ dependencies = [ "indexmap 2.14.0", "serde", "serde_json", - "utoipa-gen", + "utoipa-gen 5.5.0", +] + +[[package]] +name = "utoipa-gen" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20c24e8ab68ff9ee746aad22d39b5535601e6416d1b0feeabf78be986a5c4392" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -24085,6 +25609,7 @@ dependencies = [ "getrandom 0.4.2", "js-sys", "md-5 0.10.6", + "rand 0.10.1", "serde_core", "sha1_smol", "wasm-bindgen", @@ -24198,7 +25723,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "054ff75fb8fa83e609e685106df4faeffdf3a735d3c74ebce97ec557d5d36fd9" dependencies = [ "itoa", - "unicode-width", + "unicode-width 0.2.2", "vte", ] @@ -24400,7 +25925,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" dependencies = [ - "futures", + "futures 0.3.32", "js-sys", "parking_lot", "pin-utils", @@ -24472,7 +25997,7 @@ dependencies = [ "backoff", "base-metrics", "brotli", - "futures", + "futures 0.3.32", "http 1.4.2", "ipnet", "metrics", @@ -24496,7 +26021,7 @@ dependencies = [ "brotli", "clap", "dotenvy", - "futures", + "futures 0.3.32", "hostname", "ipnet", "metrics-exporter-prometheus", @@ -24585,6 +26110,18 @@ dependencies = [ "wezterm-dynamic", ] +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.44", +] + [[package]] name = "whoami" version = "1.6.1" @@ -24633,7 +26170,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.48.0", ] [[package]] @@ -25247,7 +26784,7 @@ dependencies = [ "assert-json-diff", "base64 0.22.1", "deadpool", - "futures", + "futures 0.3.32", "http 1.4.2", "http-body-util", "hyper 1.10.1", @@ -25283,7 +26820,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ "anyhow", - "heck", + "heck 0.5.0", "wit-parser", ] @@ -25294,9 +26831,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", - "heck", + "heck 0.5.0", "indexmap 2.14.0", - "prettyplease", + "prettyplease 0.2.37", "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", @@ -25310,7 +26847,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" dependencies = [ "anyhow", - "prettyplease", + "prettyplease 0.2.37", "proc-macro2", "quote", "syn 2.0.117", @@ -25374,7 +26911,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" dependencies = [ "async_io_stream", - "futures", + "futures 0.3.32", "js-sys", "log", "pharos", @@ -25402,7 +26939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" dependencies = [ "gethostname", - "rustix", + "rustix 1.1.4", "x11rb-protocol", ] @@ -25448,7 +26985,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix", + "rustix 1.1.4", ] [[package]] @@ -25495,7 +27032,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed0164ae619f2dc144909a9f082187ebb5893693d8c0196e8085283ccd4b776" dependencies = [ - "futures", + "futures 0.3.32", "log", "nohash-hasher", "parking_lot", @@ -25510,7 +27047,7 @@ version = "0.13.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1991f6690292030e31b0144d73f5e8368936c58e45e7068254f7138b23b00672" dependencies = [ - "futures", + "futures 0.3.32", "log", "nohash-hasher", "parking_lot", diff --git a/Cargo.toml b/Cargo.toml index 78c31ffcf1..ef77487a0b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -175,6 +175,7 @@ base-builder-cli = { path = "crates/builder/cli" } base-builder-core = { path = "crates/builder/core" } base-builder-publish = { path = "crates/builder/publish" } base-builder-metering = { path = "crates/builder/metering" } +base-intent-swap = { path = "crates/builder/intent-swap" } # Consensus base-consensus-cli = { path = "crates/consensus/cli" } @@ -289,6 +290,10 @@ base-balance-monitor = { path = "crates/utilities/balance-monitor" } base-metrics = { path = "crates/utilities/metrics", default-features = false } base-runtime = { path = "crates/utilities/runtime", default-features = false } +# Intent-swap engine (Propellerheads) +backrunner = { git = "ssh://git@github.com/propeller-heads/builder-integration.git", rev = "6029f1b4739c753383c0ce5ef03a70ad1bd007e5" } +builder-types = { git = "ssh://git@github.com/propeller-heads/builder-integration.git", rev = "6029f1b4739c753383c0ce5ef03a70ad1bd007e5" } + # revm revm = { version = "40.0.3", default-features = false } revm-bytecode = { version = "11.0.0", default-features = false } diff --git a/crates/builder/intent-swap/Cargo.toml b/crates/builder/intent-swap/Cargo.toml new file mode 100644 index 0000000000..128ff0e15d --- /dev/null +++ b/crates/builder/intent-swap/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "base-intent-swap" +description = "Intent-swap extension: solve signed Fusion orders against pending state and include settlements in the current block" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true + +[lints] +workspace = true + +[dependencies] +# base +backrunner.workspace = true +builder-types.workspace = true +base-node-runner.workspace = true +base-builder-core.workspace = true +base-execution-txpool.workspace = true +base-common-consensus = { workspace = true, features = ["reth", "k256"] } + +# reth +reth-provider.workspace = true +reth-payload-builder.workspace = true +reth-transaction-pool.workspace = true + +# alloy +alloy-eips.workspace = true +alloy-signer.workspace = true +alloy-consensus.workspace = true +alloy-primitives.workspace = true +alloy-signer-local.workspace = true + +# misc +eyre.workspace = true +uuid.workspace = true +serde.workspace = true +tracing.workspace = true +async-trait.workspace = true +jsonrpsee = { workspace = true, features = ["server", "macros"] } +tokio = { workspace = true, features = ["sync", "macros", "rt"] } + +[dev-dependencies] +serde_json.workspace = true diff --git a/crates/builder/intent-swap/src/config.rs b/crates/builder/intent-swap/src/config.rs new file mode 100644 index 0000000000..aa07498ec7 --- /dev/null +++ b/crates/builder/intent-swap/src/config.rs @@ -0,0 +1,95 @@ +//! Configuration for the intent-swap extension. + +use std::time::Duration; + +use alloy_primitives::Address; + +/// Configuration for the intent-swap engine and RPC. +#[derive(Clone)] +pub struct IntentSwapConfig { + /// Tycho WebSocket host (e.g. `"tycho-beta.propellerheads.xyz"`). + pub tycho_url: String, + /// Tycho API key. + pub tycho_api_key: Option, + /// JSON-RPC URL of the chain, used by the engine for on-chain order queries. + pub rpc_url: String, + /// Tycho protocol slugs to subscribe to. + pub protocols: Vec, + /// Fusion resolver contract address settlements are routed through. + pub resolver_address: Address, + /// Chain slug for Tycho market data (e.g. `"base"`). + pub chain: String, + /// 1inch Fusion chain id (Base = 8453). + pub chain_id: u64, + /// Minimum pool TVL filter for Tycho subscriptions. + pub min_tvl: f64, + /// Route slippage tolerance (e.g. 0.005 = 0.5%). + pub slippage: f64, + /// EOA private key (0x-hex) used to sign settlement transactions. + pub eoa_private_key: String, + /// Capacity of the submitted-order queue. + pub order_queue_capacity: usize, + /// How long to wait for the initial Tycho market snapshot. + pub ready_timeout: Duration, + /// Interval for the engine's background orderbook poll (kept high; unused for solving). + pub orderbook_interval: Duration, + /// Enables the LOP on-chain preflight (`getTakingAmount` via `eth_call`) that rejects + /// unfillable or unauthentic orders before the operator signs and pays gas to submit a + /// settlement. `intent_submitOrder` performs no maker-signature authentication itself + /// (deferred to the on-chain LOP by design), so this is the only check that runs before + /// spending operator funds. Costs one extra RPC call per candidate; off by default to + /// preserve existing behavior. + pub verify_onchain_taking: bool, +} + +impl std::fmt::Debug for IntentSwapConfig { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("IntentSwapConfig") + .field("tycho_url", &self.tycho_url) + .field("tycho_api_key", &self.tycho_api_key) + .field("rpc_url", &self.rpc_url) + .field("protocols", &self.protocols) + .field("resolver_address", &self.resolver_address) + .field("chain", &self.chain) + .field("chain_id", &self.chain_id) + .field("min_tvl", &self.min_tvl) + .field("slippage", &self.slippage) + .field("eoa_private_key", &"") + .field("order_queue_capacity", &self.order_queue_capacity) + .field("ready_timeout", &self.ready_timeout) + .field("orderbook_interval", &self.orderbook_interval) + .field("verify_onchain_taking", &self.verify_onchain_taking) + .finish() + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn debug_redacts_eoa_private_key() { + let config = IntentSwapConfig { + tycho_url: "tycho-beta.propellerheads.xyz".to_string(), + tycho_api_key: None, + rpc_url: "http://localhost:8545".to_string(), + protocols: vec!["uniswap_v2".to_string()], + resolver_address: Address::ZERO, + chain: "base".to_string(), + chain_id: 8453, + min_tvl: 10.0, + slippage: 0.005, + eoa_private_key: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" + .to_string(), + order_queue_capacity: 64, + ready_timeout: Duration::from_secs(30), + orderbook_interval: Duration::from_secs(60), + verify_onchain_taking: false, + }; + + let debug_output = format!("{config:?}"); + + assert!(!debug_output.contains("deadbeef")); + assert!(debug_output.contains("redacted")); + } +} diff --git a/crates/builder/intent-swap/src/lib.rs b/crates/builder/intent-swap/src/lib.rs new file mode 100644 index 0000000000..a2bda2d3f8 --- /dev/null +++ b/crates/builder/intent-swap/src/lib.rs @@ -0,0 +1,13 @@ +#![doc = include_str!("../README.md")] +#![doc(issue_tracker_base_url = "https://github.com/base/base/issues/")] +#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(not(test), warn(unused_crate_dependencies))] + +mod config; +pub use config::IntentSwapConfig; + +mod rpc; +pub use rpc::{ + ENGINE_UNAVAILABLE_CODE, INVALID_ORDER_CODE, INVALID_SIGNATURE_CODE, IntentApiImpl, + IntentApiServer, ORDER_EXPIRED_CODE, QUEUE_FULL_CODE, SubmitOrderResponse, +}; diff --git a/crates/builder/intent-swap/src/rpc.rs b/crates/builder/intent-swap/src/rpc.rs new file mode 100644 index 0000000000..dd2fbb1634 --- /dev/null +++ b/crates/builder/intent-swap/src/rpc.rs @@ -0,0 +1,197 @@ +//! `intent_` RPC namespace: signed Fusion order ingress. + +use std::time::{SystemTime, UNIX_EPOCH}; + +use backrunner::FusionOrder; +use jsonrpsee::{ + core::RpcResult, + proc_macros::rpc, + types::{ErrorObject, ErrorObjectOwned}, +}; +use serde::{Deserialize, Serialize}; +use tokio::sync::{mpsc, mpsc::error::TrySendError}; +use tracing::info; + +/// JSON-RPC error code: signature is not a 65-byte 0x-hex string. +pub const INVALID_SIGNATURE_CODE: i32 = -33001; +/// JSON-RPC error code: the order's Dutch auction window has ended. +pub const ORDER_EXPIRED_CODE: i32 = -33002; +/// JSON-RPC error code: structurally invalid order (zero amount, empty id). +pub const INVALID_ORDER_CODE: i32 = -33003; +/// JSON-RPC error code: intake queue is full; retry later. +pub const QUEUE_FULL_CODE: i32 = -33004; +/// JSON-RPC error code: the engine's order channel has been dropped. +pub const ENGINE_UNAVAILABLE_CODE: i32 = -33005; + +/// Response to a successful order submission. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct SubmitOrderResponse { + /// Hash/id of the accepted order. + pub order_hash: String, + /// Always `"accepted"`; solving happens asynchronously. + pub status: String, +} + +/// RPC interface for submitting signed Fusion orders to the intent-swap engine. +#[rpc(server, namespace = "intent")] +pub trait IntentApi { + /// Validates and enqueues a signed Fusion order for immediate solving. + #[method(name = "submitOrder")] + async fn submit_order(&self, order: FusionOrder) -> RpcResult; +} + +/// Implementation of [`IntentApiServer`] that forwards accepted orders to the engine. +#[derive(Debug)] +pub struct IntentApiImpl { + orders: mpsc::Sender, +} + +impl IntentApiImpl { + /// Creates a new API handing accepted orders to `orders`. + pub const fn new(orders: mpsc::Sender) -> Self { + Self { orders } + } +} + +/// Validates order shape and auction window; returns a structured RPC error on failure. +fn validate(order: &FusionOrder) -> Result<(), ErrorObjectOwned> { + let sig = order.signature.strip_prefix("0x").unwrap_or(&order.signature); + if sig.len() != 130 || alloy_primitives::hex::decode(sig).is_err() { + return Err(ErrorObject::owned( + INVALID_SIGNATURE_CODE, + "signature must be 65 bytes of 0x-hex", + None::<()>, + )); + } + if order.order_id.is_empty() || order.making_amount.is_zero() { + return Err(ErrorObject::owned( + INVALID_ORDER_CODE, + "order_id empty or making_amount zero", + None::<()>, + )); + } + let now = SystemTime::now().duration_since(UNIX_EPOCH).unwrap_or_default().as_secs(); + if order.auction_start_time.saturating_add(order.auction_duration_secs) < now { + return Err(ErrorObject::owned(ORDER_EXPIRED_CODE, "auction window has ended", None::<()>)); + } + Ok(()) +} + +#[async_trait::async_trait] +impl IntentApiServer for IntentApiImpl { + async fn submit_order(&self, order: FusionOrder) -> RpcResult { + validate(&order)?; + let order_hash = order.order_id.clone(); + self.orders.try_send(order).map_err(|e| match e { + TrySendError::Full(_) => { + ErrorObject::owned(QUEUE_FULL_CODE, "order queue full, retry later", None::<()>) + } + TrySendError::Closed(_) => { + ErrorObject::owned(ENGINE_UNAVAILABLE_CODE, "engine unavailable", None::<()>) + } + })?; + info!(order_hash = %order_hash, "fusion order accepted"); + Ok(SubmitOrderResponse { order_hash, status: "accepted".to_owned() }) + } +} + +#[cfg(test)] +mod tests { + use tokio::sync::mpsc; + + use super::*; + + fn valid_order() -> backrunner::FusionOrder { + // Minimal structurally-valid order: 65-byte signature, active auction, non-zero amount. + let now = std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .expect("clock") + .as_secs(); + serde_json::from_value(serde_json::json!({ + "order_id": "0xabc123", + "from_token": "0x4200000000000000000000000000000000000006", + "to_token": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "making_amount": "0x0de0b6b3a7640000", + "auction_start_amount": "0x0f4240", + "auction_end_amount": "0x0e4e1c", + "auction_duration_secs": 180, + "auction_start_time": now, + "points": [], + "from_token_symbol": null, + "to_token_symbol": null, + "from_token_decimals": 18, + "to_token_decimals": 6, + "from_token_usd_rate": 0.0, + "to_token_usd_rate": 0.0, + "gas_bump_estimate": 0, + "gas_price_estimate_mwei": 0, + "init_rate_bump": 0, + "total_fees_1e5": 0, + "signature": format!("0x{}", "11".repeat(65)), + "extension": "0x", + "salt": "1", + "maker_address": "0x0000000000000000000000000000000000000001", + "receiver_address": "0x0000000000000000000000000000000000000001", + "maker_traits": "0" + })) + .expect("valid order json") + } + + #[tokio::test] + async fn accepts_valid_order() { + let (tx, mut rx) = mpsc::channel(4); + let api = IntentApiImpl::new(tx); + let resp = api.submit_order(valid_order()).await.expect("accepted"); + assert_eq!(resp.status, "accepted"); + assert_eq!(resp.order_hash, "0xabc123"); + assert!(rx.try_recv().is_ok()); + } + + #[tokio::test] + async fn rejects_malformed_signature() { + let (tx, _rx) = mpsc::channel(4); + let api = IntentApiImpl::new(tx); + let mut order = valid_order(); + order.signature = "0xdead".to_owned(); + let err = api.submit_order(order).await.expect_err("must reject"); + assert_eq!(err.code(), INVALID_SIGNATURE_CODE); + } + + #[tokio::test] + async fn rejects_expired_auction() { + let (tx, _rx) = mpsc::channel(4); + let api = IntentApiImpl::new(tx); + let mut order = valid_order(); + order.auction_start_time = 1_000_000; // long past + let err = api.submit_order(order).await.expect_err("must reject"); + assert_eq!(err.code(), ORDER_EXPIRED_CODE); + } + + #[tokio::test] + async fn rejects_zero_making_amount() { + let (tx, _rx) = mpsc::channel(4); + let api = IntentApiImpl::new(tx); + let mut order = valid_order(); + order.making_amount = alloy_primitives::U256::ZERO; + let err = api.submit_order(order).await.expect_err("must reject"); + assert_eq!(err.code(), INVALID_ORDER_CODE); + } + + #[tokio::test] + async fn rejects_when_queue_full() { + let (tx, _rx) = mpsc::channel(1); + let api = IntentApiImpl::new(tx); + api.submit_order(valid_order()).await.expect("first accepted"); + let err = api.submit_order(valid_order()).await.expect_err("queue full"); + assert_eq!(err.code(), QUEUE_FULL_CODE); + } + + #[tokio::test] + async fn rejects_when_engine_unavailable() { + let (tx, rx) = mpsc::channel(4); + drop(rx); + let api = IntentApiImpl::new(tx); + let err = api.submit_order(valid_order()).await.expect_err("engine gone"); + assert_eq!(err.code(), ENGINE_UNAVAILABLE_CODE); + } +} From 6db5b9973b84948f25d5d6a72a28c846b5adcd3f Mon Sep 17 00:00:00 2001 From: kayibal Date: Wed, 22 Jul 2026 12:51:06 +0100 Subject: [PATCH 3/6] feat(intent-swap): solve submitted orders against pending state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the engine task: it consumes the build-event stream to track the in-progress block and, on each submitted order, solves it against committed state overlaid with that block's executed transactions, signs the resulting settlement, and inserts it into the txpool for same-block inclusion. The iteration state machine attributes TxExecuted events by payload id, so a stale event from a superseded payload job cannot pollute the current overlay. At block seal or abort the accumulated transactions are cleared: the sealed block's transactions become committed state and must not be double-counted, and an aborted job's transactions never landed — so orders arriving between blocks solve against last committed state. The settlement nonce is read from the pool's highest transaction for the signer per candidate (chaining locally within a candidate) rather than a counter that could permanently desync from pool state. The settlement stays a typed Recovered from signing through insertion, recovering the signer from the transaction itself instead of trusting a separately-threaded address. Inclusion is reported by observing the builder's own settlement transactions in the event stream, distinct from pool acceptance. Co-Authored-By: Claude Opus 4.8 --- crates/builder/intent-swap/src/convert.rs | 103 ++++++++ crates/builder/intent-swap/src/engine.rs | 308 ++++++++++++++++++++++ crates/builder/intent-swap/src/lib.rs | 6 + 3 files changed, 417 insertions(+) create mode 100644 crates/builder/intent-swap/src/convert.rs create mode 100644 crates/builder/intent-swap/src/engine.rs diff --git a/crates/builder/intent-swap/src/convert.rs b/crates/builder/intent-swap/src/convert.rs new file mode 100644 index 0000000000..ac446bc439 --- /dev/null +++ b/crates/builder/intent-swap/src/convert.rs @@ -0,0 +1,103 @@ +//! Conversions between base-builder-core events, builder-types, and signed transactions. + +use alloy_consensus::{ + SignableTransaction, TxEip1559, TxEnvelope, + transaction::{Recovered, SignerRecoverable}, +}; +use alloy_primitives::TxKind; +use alloy_signer::SignerSync; +use alloy_signer_local::PrivateKeySigner; +use base_builder_core::BuildEvent; +use base_common_consensus::BaseTransactionSigned; +use builder_types::{BlockEnv, ExecutedTx, RawTx}; +use reth_payload_builder::PayloadId; +use uuid::Uuid; + +/// Derives a stable UUID from a payload id (payload ids are 8 bytes; zero-padded to 16). +pub fn payload_uuid(payload_id: PayloadId) -> Uuid { + let mut bytes = [0u8; 16]; + bytes[..8].copy_from_slice(payload_id.0.as_slice()); + Uuid::from_bytes(bytes) +} + +/// Converts an `IterationStart` event's fields into a builder-types [`BlockEnv`]. +pub const fn to_block_env(block_number: u64, timestamp: u64, base_fee: u64) -> BlockEnv { + BlockEnv { block_number, block_timestamp: timestamp, base_fee_per_gas: base_fee } +} + +/// Converts a `TxExecuted` build event into a builder-types [`ExecutedTx`]. +/// +/// Returns `None` for non-`TxExecuted` variants. +pub fn to_executed_tx(event: &BuildEvent) -> Option { + let BuildEvent::TxExecuted { tx_hash, from, to, logs, gas_used, success, .. } = event else { + return None; + }; + Some(ExecutedTx { + tx_hash: *tx_hash, + from: *from, + to: *to, + logs: logs.clone(), + gas_used: *gas_used, + status: *success, + }) +} + +/// Builds and signs an EIP-1559 transaction from a settlement [`RawTx`], returning it as +/// a base-chain [`BaseTransactionSigned`] with the recovered signer attached. +pub fn raw_tx_to_signed( + raw: &RawTx, + chain_id: u64, + nonce: u64, + signer: &PrivateKeySigner, +) -> eyre::Result> { + let tx = TxEip1559 { + chain_id, + nonce, + gas_limit: raw.gas_limit, + max_fee_per_gas: raw.max_fee_per_gas, + max_priority_fee_per_gas: raw.max_priority_fee_per_gas, + to: raw.to.map_or(TxKind::Create, TxKind::Call), + value: raw.value, + access_list: Default::default(), + input: raw.data.clone(), + }; + let signature = signer.sign_hash_sync(&tx.signature_hash())?; + let envelope = TxEnvelope::Eip1559(tx.into_signed(signature)); + let base_tx = BaseTransactionSigned::try_from(envelope) + .map_err(|_| eyre::eyre!("EIP-1559 settlement rejected by base envelope conversion"))?; + base_tx + .try_into_recovered() + .map_err(|e| eyre::eyre!("failed to recover settlement signer: {e}")) +} + +#[cfg(test)] +mod tests { + use alloy_primitives::{Bytes, U256}; + use alloy_signer_local::PrivateKeySigner; + use reth_payload_builder::PayloadId; + + use super::*; + + #[test] + fn payload_uuid_is_deterministic_and_distinct() { + let a = PayloadId::new([1, 2, 3, 4, 5, 6, 7, 8]); + let b = PayloadId::new([1, 2, 3, 4, 5, 6, 7, 9]); + assert_eq!(payload_uuid(a), payload_uuid(a)); + assert_ne!(payload_uuid(a), payload_uuid(b)); + } + + #[test] + fn signed_raw_tx_roundtrips_with_correct_sender() { + let signer = PrivateKeySigner::random(); + let raw = builder_types::RawTx { + to: Some(alloy_primitives::Address::repeat_byte(0x42)), + value: U256::ZERO, + data: Bytes::from(vec![0xca, 0xfe]), + gas_limit: 500_000, + max_fee_per_gas: 2_000_000_000, + max_priority_fee_per_gas: 100_000_000, + }; + let recovered = raw_tx_to_signed(&raw, 8453, 7, &signer).expect("sign"); + assert_eq!(recovered.signer(), signer.address()); + } +} diff --git a/crates/builder/intent-swap/src/engine.rs b/crates/builder/intent-swap/src/engine.rs new file mode 100644 index 0000000000..3beffd94df --- /dev/null +++ b/crates/builder/intent-swap/src/engine.rs @@ -0,0 +1,308 @@ +//! Intent-swap engine: consumes build events + submitted orders, solves, signs, inserts. + +use alloy_consensus::transaction::Recovered; +use alloy_eips::Encodable2718; +use alloy_primitives::B256; +use alloy_signer_local::PrivateKeySigner; +use backrunner::{Backrunner, BackrunnerConfig, FusionOrder}; +use base_builder_core::BuildEvent; +use base_common_consensus::BaseTransactionSigned; +use base_execution_txpool::BasePooledTransaction; +use builder_types::{BlockEnv, ExecutedTx}; +use reth_transaction_pool::TransactionPool; +use tokio::sync::mpsc; +use tracing::{debug, error, info, warn}; +use uuid::Uuid; + +use crate::{ + IntentSwapConfig, + convert::{payload_uuid, raw_tx_to_signed, to_block_env, to_executed_tx}, +}; + +/// State of the in-progress block build, accumulated from build events. +#[derive(Debug, Default)] +struct Iteration { + uuid: Option, + block: Option, + txs: Vec, +} + +impl Iteration { + /// Applies one build event to the iteration state. + fn apply(&mut self, event: BuildEvent) { + match event { + BuildEvent::IterationStart { payload_id, block_number, timestamp, base_fee } => { + debug!(block = block_number, "iteration started"); + *self = Self { + uuid: Some(payload_uuid(payload_id)), + block: Some(to_block_env(block_number, timestamp, base_fee)), + txs: Vec::new(), + }; + } + BuildEvent::TxExecuted { payload_id, .. } => { + if self.uuid == Some(payload_uuid(payload_id)) + && let Some(tx) = to_executed_tx(&event) + { + self.txs.push(tx); + } + } + BuildEvent::IterationComplete { .. } | BuildEvent::IterationAborted { .. } => { + // cleared so committed/aborted txs don't overlay the next solve + self.txs.clear(); + } + } + } +} + +/// The intent-swap engine: one long-running task owning the backrunner solver. +pub struct IntentSwapEngine { + backrunner: Backrunner, + signer: PrivateKeySigner, + chain_id: u64, +} + +impl std::fmt::Debug for IntentSwapEngine { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("IntentSwapEngine").field("chain_id", &self.chain_id).finish_non_exhaustive() + } +} + +impl IntentSwapEngine { + /// Builds the engine: parses the signer key and waits for the initial Tycho snapshot. + pub async fn build(config: IntentSwapConfig) -> eyre::Result { + let signer: PrivateKeySigner = config + .eoa_private_key + .parse() + .map_err(|e| eyre::eyre!("invalid intent-swap EOA key: {e}"))?; + let backrunner_config = BackrunnerConfig { + chain: config.chain.clone(), + tycho_url: config.tycho_url.clone(), + rpc_url: config.rpc_url.clone(), + tycho_api_key: config.tycho_api_key.clone(), + protocols: config.protocols.clone(), + min_tvl: config.min_tvl, + ready_timeout: config.ready_timeout, + chain_id: config.chain_id, + resolver_address: config.resolver_address, + slippage: config.slippage, + orderbook_interval: config.orderbook_interval, + verify_onchain_taking: config.verify_onchain_taking, + }; + let backrunner = Backrunner::build(backrunner_config).await?; + info!("intent-swap engine ready"); + Ok(Self { backrunner, signer, chain_id: config.chain_id }) + } + + /// Runs the engine loop until both channels close. + pub async fn run

( + self, + mut events: mpsc::Receiver, + mut orders: mpsc::Receiver, + pool: P, + initial_nonce: u64, + ) where + P: TransactionPool + Send + Sync + 'static, + { + let mut iteration = Iteration::default(); + let mut events_closed = false; + let mut orders_closed = false; + while !(events_closed && orders_closed) { + tokio::select! { + event = events.recv(), if !events_closed => { + match event { + Some(event) => { + self.log_settlement_inclusion(&iteration, &event); + iteration.apply(event); + } + None => { + debug!(channel = "events", "channel closed"); + events_closed = true; + } + } + } + order = orders.recv(), if !orders_closed => { + match order { + Some(order) => { + self.solve_and_insert(&iteration, order, &pool, initial_nonce).await; + } + None => { + debug!(channel = "orders", "channel closed"); + orders_closed = true; + } + } + } + } + } + info!("intent-swap engine shutting down"); + } + + /// Logs a `TxExecuted` event whose sender is this engine's signer: a settlement + /// this engine submitted has been included in the in-progress block. + fn log_settlement_inclusion(&self, iteration: &Iteration, event: &BuildEvent) { + let BuildEvent::TxExecuted { from, tx_hash, .. } = event else { + return; + }; + if *from != self.signer.address() { + return; + } + let block = iteration.block.as_ref().map(|b| b.block_number); + info!(tx_hash = %tx_hash, block = ?block, "settlement included"); + } + + /// Solves one order against the current iteration state and inserts settlements. + async fn solve_and_insert

( + &self, + iteration: &Iteration, + order: FusionOrder, + pool: &P, + initial_nonce: u64, + ) where + P: TransactionPool + Send + Sync + 'static, + { + let order_hash = order.order_id.clone(); + let (Some(uuid), Some(block)) = (iteration.uuid, iteration.block.clone()) else { + warn!(order_hash = %order_hash, "no build iteration observed yet, dropping order"); + return; + }; + let candidate = self + .backrunner + .solve_orders(uuid, block, iteration.txs.clone(), std::slice::from_ref(&order)) + .await; + let Some(candidate) = candidate else { + info!(order_hash = %order_hash, "unfillable: no profitable route"); + return; + }; + // pool holds this signer's next nonce; chain locally within the candidate + let mut nonce = pool + .get_highest_transaction_by_sender(self.signer.address()) + .map_or(initial_nonce, |tx| tx.nonce() + 1); + for backrun_tx in &candidate.txs { + let signed = raw_tx_to_signed(&backrun_tx.tx, self.chain_id, nonce, &self.signer); + let signed = match signed { + Ok(signed) => signed, + Err(e) => { + error!(order_hash = %order_hash, error = %e, "failed to sign settlement"); + continue; + } + }; + match Self::insert(pool, signed).await { + Ok(tx_hash) => { + nonce += 1; + info!( + order_hash = %order_hash, + tx_hash = %tx_hash, + profit_wei = %backrun_tx.expected_profit_wei, + block = candidate.block_number, + "settlement queued", + ); + } + Err(e) => { + error!(order_hash = %order_hash, error = %e, "pool rejected settlement"); + } + } + } + } + + /// Inserts a signed settlement into the pool (same path as + /// `base_insertValidatedTransaction`). + async fn insert

(pool: &P, tx: Recovered) -> eyre::Result + where + P: TransactionPool + Send + Sync + 'static, + { + let tx_hash = *tx.hash(); + let encoded_length = tx.encoded_2718().len(); + let pool_tx = BasePooledTransaction::new(tx, encoded_length); + pool.add_external_transaction(pool_tx) + .await + .map_err(|e| eyre::eyre!("pool insert failed: {e}"))?; + Ok(tx_hash) + } +} + +#[cfg(test)] +mod tests { + use alloy_primitives::Address; + use reth_payload_builder::PayloadId; + + use super::*; + + fn start_event(payload_id: [u8; 8], block_number: u64) -> BuildEvent { + BuildEvent::IterationStart { + payload_id: PayloadId::new(payload_id), + block_number, + timestamp: 1_000, + base_fee: 7, + } + } + + fn tx_event(payload_id: [u8; 8]) -> BuildEvent { + BuildEvent::TxExecuted { + payload_id: PayloadId::new(payload_id), + tx_hash: B256::repeat_byte(0xaa), + from: Address::repeat_byte(0x11), + to: Some(Address::repeat_byte(0x22)), + logs: Vec::new(), + gas_used: 21_000, + success: true, + } + } + + #[test] + fn iteration_start_replaces_state() { + let mut iteration = Iteration::default(); + iteration.txs.push(to_executed_tx(&tx_event([1; 8])).expect("tx event")); + + iteration.apply(start_event([2; 8], 42)); + + assert_eq!(iteration.uuid, Some(payload_uuid(PayloadId::new([2; 8])))); + assert_eq!(iteration.block.as_ref().map(|b| b.block_number), Some(42)); + assert!(iteration.txs.is_empty()); + } + + #[test] + fn tx_executed_accumulates_for_matching_payload_id() { + let mut iteration = Iteration::default(); + iteration.apply(start_event([3; 8], 1)); + + iteration.apply(tx_event([3; 8])); + iteration.apply(tx_event([3; 8])); + + assert_eq!(iteration.txs.len(), 2); + } + + #[test] + fn tx_executed_with_stale_payload_id_is_dropped() { + let mut iteration = Iteration::default(); + iteration.apply(start_event([4; 8], 1)); + + iteration.apply(tx_event([5; 8])); + + assert!(iteration.txs.is_empty()); + } + + #[test] + fn iteration_complete_clears_txs_but_keeps_uuid_and_block() { + let mut iteration = Iteration::default(); + iteration.apply(start_event([6; 8], 9)); + iteration.apply(tx_event([6; 8])); + + iteration.apply(BuildEvent::IterationComplete { payload_id: PayloadId::new([6; 8]) }); + + assert!(iteration.txs.is_empty()); + assert_eq!(iteration.uuid, Some(payload_uuid(PayloadId::new([6; 8])))); + assert_eq!(iteration.block.as_ref().map(|b| b.block_number), Some(9)); + } + + #[test] + fn iteration_aborted_clears_txs_but_keeps_uuid_and_block() { + let mut iteration = Iteration::default(); + iteration.apply(start_event([7; 8], 3)); + iteration.apply(tx_event([7; 8])); + + iteration.apply(BuildEvent::IterationAborted { payload_id: PayloadId::new([7; 8]) }); + + assert!(iteration.txs.is_empty()); + assert_eq!(iteration.uuid, Some(payload_uuid(PayloadId::new([7; 8])))); + assert_eq!(iteration.block.as_ref().map(|b| b.block_number), Some(3)); + } +} diff --git a/crates/builder/intent-swap/src/lib.rs b/crates/builder/intent-swap/src/lib.rs index a2bda2d3f8..0dc65f4602 100644 --- a/crates/builder/intent-swap/src/lib.rs +++ b/crates/builder/intent-swap/src/lib.rs @@ -11,3 +11,9 @@ pub use rpc::{ ENGINE_UNAVAILABLE_CODE, INVALID_ORDER_CODE, INVALID_SIGNATURE_CODE, IntentApiImpl, IntentApiServer, ORDER_EXPIRED_CODE, QUEUE_FULL_CODE, SubmitOrderResponse, }; + +mod convert; +pub use convert::{payload_uuid, raw_tx_to_signed, to_block_env, to_executed_tx}; + +mod engine; +pub use engine::IntentSwapEngine; From f5fb7a472c76d4e168a1d3a4be39b4fa3428c382 Mon Sep 17 00:00:00 2001 From: kayibal Date: Wed, 22 Jul 2026 12:51:26 +0100 Subject: [PATCH 4/6] feat(intent-swap): node extension, CLI flags, and builder wiring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wire the intent-swap service into the builder. IntentSwapExtension registers the intent_ RPC namespace and, on node start, spawns the engine task with a handle to the txpool. If the engine fails to start it panics rather than returning: reth's critical-task fail-fast only triggers on panic, and a silently dead engine behind a running builder is worse than a restart. A --builder.intent-swap.* CLI group (disabled by default) configures the service; the flag parsing lives in the builder binary so the cli crate gains no new dependencies. With the extension disabled the builder behaves exactly as before — no channel is created and no events are emitted. Co-Authored-By: Claude Opus 4.8 --- bin/builder/Cargo.toml | 5 + bin/builder/src/main.rs | 49 +++++++- crates/builder/cli/src/args.rs | 131 ++++++++++++++++++++ crates/builder/cli/src/lib.rs | 2 +- crates/builder/intent-swap/src/extension.rs | 60 +++++++++ crates/builder/intent-swap/src/lib.rs | 3 + 6 files changed, 248 insertions(+), 2 deletions(-) create mode 100644 crates/builder/intent-swap/src/extension.rs diff --git a/bin/builder/Cargo.toml b/bin/builder/Cargo.toml index c9d775b515..6c984c0eff 100644 --- a/bin/builder/Cargo.toml +++ b/bin/builder/Cargo.toml @@ -22,6 +22,7 @@ base-txpool-rpc.workspace = true base-node-runner.workspace = true base-builder-cli.workspace = true base-builder-core.workspace = true +base-intent-swap.workspace = true base-builder-metering.workspace = true base-observability-events.workspace = true @@ -33,6 +34,10 @@ base-execution-cli = { workspace = true, features = ["otlp"] } # cli clap.workspace = true +# misc +eyre.workspace = true +tokio = { workspace = true, features = ["sync"] } + [features] default = [ "jemalloc" ] jemalloc = [ "base-builder-core/jemalloc", "base-execution-cli/jemalloc" ] diff --git a/bin/builder/src/main.rs b/bin/builder/src/main.rs index f29deaa6ee..a36ba9d08c 100644 --- a/bin/builder/src/main.rs +++ b/bin/builder/src/main.rs @@ -40,12 +40,23 @@ fn main() { transaction_events_enabled.then(|| builder_args.transaction_events.writer_config()), )?; - let builder_config = builder_args + let intent_swap_args = builder_args.intent_swap.clone(); + let mut builder_config = builder_args .into_builder_config(Arc::clone(&metering_provider)) .expect("Failed to convert rollup args to builder config"); let da_config = builder_config.da_config.clone(); let gas_limit_config = builder_config.gas_limit_config.clone(); + let intent_swap = if intent_swap_args.enabled { + let (event_tx, event_rx) = + tokio::sync::mpsc::channel(intent_swap_args.event_channel_capacity); + builder_config.build_event_tx = Some(event_tx); + let config = intent_swap_config(&intent_swap_args)?; + Some((config, event_rx)) + } else { + None + }; + let mut runner = BaseNodeRunner::new(rollup_args.clone()) .with_da_config(da_config) .with_gas_limit_config(gas_limit_config) @@ -54,6 +65,9 @@ fn main() { runner.install_ext::(TxPoolRpcConfig::default()); runner.install_ext::(()); StandardBaseRethNode::install_upgrade_signal_runtime_extension(&mut runner, &rollup_args)?; + if let Some(config_and_rx) = intent_swap { + runner.install_ext::(config_and_rx); + } runner.add_started_callback(|| { base_cli_utils::register_version_metrics!(); Ok(()) @@ -63,3 +77,36 @@ fn main() { }) .unwrap(); } + +/// Builds the intent-swap config from CLI args; errors on missing required values. +fn intent_swap_config( + args: &base_builder_cli::IntentSwapArgs, +) -> eyre::Result { + Ok(base_intent_swap::IntentSwapConfig { + tycho_url: args.tycho_url.clone(), + tycho_api_key: args.tycho_api_key.clone(), + rpc_url: args + .rpc_url + .clone() + .ok_or_else(|| eyre::eyre!("--builder.intent-swap.rpc-url is required"))?, + protocols: args.protocols.clone(), + resolver_address: args + .resolver_address + .as_deref() + .ok_or_else(|| eyre::eyre!("--builder.intent-swap.resolver-address is required"))? + .parse() + .map_err(|e| eyre::eyre!("invalid resolver address: {e}"))?, + chain: args.chain.clone(), + chain_id: args.chain_id, + min_tvl: args.min_tvl, + slippage: args.slippage, + eoa_private_key: args + .eoa_key + .clone() + .ok_or_else(|| eyre::eyre!("INTENT_SWAP_EOA_KEY is required"))?, + order_queue_capacity: args.order_queue_capacity, + ready_timeout: std::time::Duration::from_secs(600), + orderbook_interval: std::time::Duration::from_secs(60), + verify_onchain_taking: args.verify_onchain_taking, + }) +} diff --git a/crates/builder/cli/src/args.rs b/crates/builder/cli/src/args.rs index d350a5869e..9d254864d7 100644 --- a/crates/builder/cli/src/args.rs +++ b/crates/builder/cli/src/args.rs @@ -118,6 +118,132 @@ impl TransactionEventsArgs { } } +/// CLI options for the intent-swap extension. +#[derive(Debug, Clone, PartialEq, clap::Args)] +pub struct IntentSwapArgs { + /// Enables the intent-swap extension. + #[arg( + id = "intent_swap_enabled", + long = "builder.intent-swap.enabled", + env = "INTENT_SWAP_ENABLED", + default_value = "false" + )] + pub enabled: bool, + /// Tycho WebSocket host. + #[arg( + long = "builder.intent-swap.tycho-url", + env = "INTENT_SWAP_TYCHO_URL", + default_value = "tycho-beta.propellerheads.xyz" + )] + pub tycho_url: String, + /// Tycho API key. + #[arg( + long = "builder.intent-swap.tycho-api-key", + env = "INTENT_SWAP_TYCHO_API_KEY", + hide_env_values = true + )] + pub tycho_api_key: Option, + /// Chain JSON-RPC URL for on-chain order queries. + #[arg(long = "builder.intent-swap.rpc-url", env = "INTENT_SWAP_RPC_URL")] + pub rpc_url: Option, + /// Fusion resolver contract address. + #[arg(long = "builder.intent-swap.resolver-address", env = "INTENT_SWAP_RESOLVER_ADDRESS")] + pub resolver_address: Option, + /// EOA private key for signing settlements (env only in practice). + #[arg( + long = "builder.intent-swap.eoa-key", + env = "INTENT_SWAP_EOA_KEY", + hide_env_values = true + )] + pub eoa_key: Option, + /// Chain slug for Tycho market data. + #[arg( + id = "intent_swap_chain", + long = "builder.intent-swap.chain", + env = "INTENT_SWAP_CHAIN", + default_value = "base", + value_name = "CHAIN" + )] + pub chain: String, + /// 1inch Fusion chain id. + #[arg( + long = "builder.intent-swap.chain-id", + env = "INTENT_SWAP_CHAIN_ID", + default_value = "8453" + )] + pub chain_id: u64, + /// Comma-separated Tycho protocol slugs. + #[arg( + long = "builder.intent-swap.protocols", + env = "INTENT_SWAP_PROTOCOLS", + default_value = "uniswap_v2,uniswap_v3,uniswap_v4", + value_delimiter = ',' + )] + pub protocols: Vec, + /// Minimum pool TVL filter. + #[arg( + long = "builder.intent-swap.min-tvl", + env = "INTENT_SWAP_MIN_TVL", + default_value = "10.0" + )] + pub min_tvl: f64, + /// Route slippage tolerance. + #[arg( + long = "builder.intent-swap.slippage", + env = "INTENT_SWAP_SLIPPAGE", + default_value = "0.005" + )] + pub slippage: f64, + /// Submitted-order queue capacity. + #[arg( + long = "builder.intent-swap.order-queue-capacity", + env = "INTENT_SWAP_ORDER_QUEUE_CAPACITY", + default_value = "64" + )] + pub order_queue_capacity: usize, + /// Build-event channel capacity. + #[arg( + long = "builder.intent-swap.event-channel-capacity", + env = "INTENT_SWAP_EVENT_CHANNEL_CAPACITY", + default_value = "4096" + )] + pub event_channel_capacity: usize, + /// Enables the LOP on-chain preflight that rejects unfillable or unauthentic orders + /// before signing and submitting a settlement. + #[arg( + id = "intent_swap_verify_onchain_taking", + long = "builder.intent-swap.verify-onchain-taking", + env = "INTENT_SWAP_VERIFY_ONCHAIN_TAKING", + default_value = "false" + )] + pub verify_onchain_taking: bool, +} + +impl Default for IntentSwapArgs { + fn default() -> Self { + Self { + enabled: false, + tycho_url: "tycho-beta.propellerheads.xyz".to_string(), + tycho_api_key: None, + rpc_url: None, + resolver_address: None, + eoa_key: None, + chain: "base".to_string(), + chain_id: 8453, + protocols: vec![ + "uniswap_v2".to_string(), + "uniswap_v3".to_string(), + "uniswap_v4".to_string(), + ], + min_tvl: 10.0, + slippage: 0.005, + order_queue_capacity: 64, + event_channel_capacity: 4096, + verify_onchain_taking: false, + } + } +} + /// Parameters for rollup configuration #[derive(Debug, Clone, clap::Args)] #[command(next_help_heading = "Rollup")] @@ -219,6 +345,10 @@ pub struct Args { /// Transaction event journal configuration #[command(flatten)] pub transaction_events: TransactionEventsArgs, + + /// Intent-swap extension configuration + #[command(flatten)] + pub intent_swap: IntentSwapArgs, } impl Args { @@ -258,6 +388,7 @@ impl Default for Args { sampling_ratio: 100, flashblocks: FlashblocksArgs::default(), transaction_events: TransactionEventsArgs::default(), + intent_swap: IntentSwapArgs::default(), } } } diff --git a/crates/builder/cli/src/lib.rs b/crates/builder/cli/src/lib.rs index e23f178810..82f5471335 100644 --- a/crates/builder/cli/src/lib.rs +++ b/crates/builder/cli/src/lib.rs @@ -4,4 +4,4 @@ #![cfg_attr(not(test), warn(unused_crate_dependencies))] mod args; -pub use args::{Args, FlashblocksArgs, TransactionEventsArgs}; +pub use args::{Args, FlashblocksArgs, IntentSwapArgs, TransactionEventsArgs}; diff --git a/crates/builder/intent-swap/src/extension.rs b/crates/builder/intent-swap/src/extension.rs new file mode 100644 index 0000000000..28545290ba --- /dev/null +++ b/crates/builder/intent-swap/src/extension.rs @@ -0,0 +1,60 @@ +//! Node extension registering the intent RPC and spawning the engine task. + +use base_builder_core::BuildEvent; +use base_node_runner::{BaseNodeExtension, BaseRpcContext, FromExtensionConfig, NodeHooks}; +use reth_provider::StateProviderFactory; +use tokio::sync::mpsc; +use tracing::{error, info}; + +use crate::{IntentApiImpl, IntentApiServer, IntentSwapConfig, IntentSwapEngine}; + +/// Extension that registers the `intent_` RPC namespace and spawns the intent-swap engine. +#[derive(Debug)] +pub struct IntentSwapExtension { + config: IntentSwapConfig, + event_rx: mpsc::Receiver, +} + +impl FromExtensionConfig for IntentSwapExtension { + type Config = (IntentSwapConfig, mpsc::Receiver); + + fn from_config((config, event_rx): Self::Config) -> Self { + Self { config, event_rx } + } +} + +impl BaseNodeExtension for IntentSwapExtension { + fn apply(self: Box, hooks: NodeHooks) -> NodeHooks { + let Self { config, event_rx } = *self; + let (order_tx, order_rx) = mpsc::channel(config.order_queue_capacity); + + let hooks = hooks.add_rpc_module(move |ctx: &mut BaseRpcContext<'_>| { + let api = IntentApiImpl::new(order_tx); + ctx.modules.merge_configured(api.into_rpc())?; + info!("intent_submitOrder RPC enabled"); + Ok(()) + }); + + hooks.add_node_started_hook(move |ctx| { + let pool = ctx.pool().clone(); + let signer_address = config + .eoa_private_key + .parse::() + .map(|s| s.address()) + .map_err(|e| eyre::eyre!("invalid intent-swap EOA key: {e}"))?; + let initial_nonce = + ctx.provider().latest()?.account_nonce(&signer_address)?.unwrap_or(0); + ctx.task_executor.spawn_critical_task("intent-swap-engine", async move { + match IntentSwapEngine::build(config).await { + Ok(engine) => engine.run(event_rx, order_rx, pool, initial_nonce).await, + Err(e) => { + error!(error = %e, "intent-swap engine failed to start"); + panic!("intent-swap engine failed to start: {e}"); + } + } + }); + info!("intent-swap engine task spawned"); + Ok(()) + }) + } +} diff --git a/crates/builder/intent-swap/src/lib.rs b/crates/builder/intent-swap/src/lib.rs index 0dc65f4602..d92f7a94c2 100644 --- a/crates/builder/intent-swap/src/lib.rs +++ b/crates/builder/intent-swap/src/lib.rs @@ -17,3 +17,6 @@ pub use convert::{payload_uuid, raw_tx_to_signed, to_block_env, to_executed_tx}; mod engine; pub use engine::IntentSwapEngine; + +mod extension; +pub use extension::IntentSwapExtension; From 2c18f8d95499bd5e29b30612c0000016e1940be3 Mon Sep 17 00:00:00 2001 From: kayibal Date: Wed, 22 Jul 2026 12:51:42 +0100 Subject: [PATCH 5/6] docs(intent-swap): usage and Base-shadow runbook MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Document running the service against Base in non-proposing (shadow) mode — the builder has no built-in shadow flag, so the runbook covers driving it via op-node / forkchoice replay — and record the load-bearing Cargo.lock pins (fynd-core 0.81.1's open tycho ranges do not build against 0.339.x). Co-Authored-By: Claude Opus 4.8 --- crates/builder/intent-swap/README.md | 59 ++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 crates/builder/intent-swap/README.md diff --git a/crates/builder/intent-swap/README.md b/crates/builder/intent-swap/README.md new file mode 100644 index 0000000000..fe37554753 --- /dev/null +++ b/crates/builder/intent-swap/README.md @@ -0,0 +1,59 @@ +# `base-intent-swap` + +Intent-swap extension for the Base builder. Registers an `intent_submitOrder` RPC that +accepts signed 1inch Fusion orders, solves each order on arrival against committed AMM +state overlaid with the in-progress block's executed transactions (via the +`base-builder-core` build-event stream), and inserts the signed settlement transaction +into the builder's txpool for same-block inclusion. + +`PoC` scope: no metrics, no order-status RPC (outcomes are logged), shadow-mode validation. + +## Running (Base mainnet shadow) + +The base repo has **no built-in shadow/non-proposing mode**: the builder builds blocks +only when driven by engine-API forkchoice updates with payload attributes. For shadow +validation you need an op-node (sequencer-mode, `--sequencer.stopped=false` variant +pointed ONLY at this builder, never publishing) or an FCU-replay harness driving the +engine API against a Base-mainnet-synced datadir. Set that up per your infra; the +builder side needs: + +```sh +INTENT_SWAP_EOA_KEY=0x... \ +INTENT_SWAP_TYCHO_API_KEY=... \ +base-builder node \ + --builder.intent-swap.enabled \ + --builder.intent-swap.rpc-url https://mainnet.base.org \ + --builder.intent-swap.resolver-address 0x... \ + +``` + +Submit an order: + +```sh +curl -s -X POST -H 'Content-Type: application/json' localhost:8545 \ + -d '{"jsonrpc":"2.0","id":1,"method":"intent_submitOrder","params":[{...FusionOrder json...}]}' +``` + +Watch for `fusion order accepted` → `solved: settlement inserted` (with tx hash and +profit) or `unfillable: ...` in the logs. Verify settlement success independently via +`eth_call` against the parent block (see `pending_sim`'s `validate_settle` in the +builder-integration repo). Notes: 1inch LOP v4 is at the same address on Base; the +resolver contract + EOA whitelisting must exist on Base before fills can land. + +## Build notes + +- `Cargo.lock` deliberately pins `tycho-common`, `tycho-simulation`, and + `tycho-execution` at `0.305.1`. `fynd-core` `0.81.1` declares open `tycho` + ranges (`>=0.304`), but does not actually compile against the latest + `0.339.x`, so regenerating the lockfile (e.g. `cargo generate-lockfile`) + will still break the build. Use `cargo check --workspace` to update the + lockfile in-place instead. +- The `backrunner`/`builder-types` git dependencies use `ssh://` URLs, so building + requires `GitHub` SSH access. If Cargo's built-in (libssh) transport can't reach + your `ssh-agent`, add this to `.cargo/config.toml` (not committed) to shell out + to the system `git` CLI instead: + + ```toml + [net] + git-fetch-with-cli = true + ``` From f3863360015ab3b14a6b3a7f31d13324da7feb71 Mon Sep 17 00:00:00 2001 From: kayibal Date: Thu, 23 Jul 2026 12:47:55 +0100 Subject: [PATCH 6/6] feat(intent-swap): require order_id to be a 32-byte hex order hash The order_id was accepted as any non-empty string even though it claims to be the order's EIP-712 digest, so spoofed or garbage ids flowed into logs and RPC responses unchecked. Reject anything that is not 0x plus 64 hex chars with INVALID_ORDER. This is a format check only. Deriving the digest server-side and ignoring the client-supplied value entirely belongs to the maker-sig verification follow-up, which already computes it. Co-Authored-By: Claude Fable 5 --- crates/builder/intent-swap/src/rpc.rs | 32 ++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/crates/builder/intent-swap/src/rpc.rs b/crates/builder/intent-swap/src/rpc.rs index dd2fbb1634..fccf0716e8 100644 --- a/crates/builder/intent-swap/src/rpc.rs +++ b/crates/builder/intent-swap/src/rpc.rs @@ -16,7 +16,7 @@ use tracing::info; pub const INVALID_SIGNATURE_CODE: i32 = -33001; /// JSON-RPC error code: the order's Dutch auction window has ended. pub const ORDER_EXPIRED_CODE: i32 = -33002; -/// JSON-RPC error code: structurally invalid order (zero amount, empty id). +/// JSON-RPC error code: structurally invalid order (malformed order id, zero amount). pub const INVALID_ORDER_CODE: i32 = -33003; /// JSON-RPC error code: intake queue is full; retry later. pub const QUEUE_FULL_CODE: i32 = -33004; @@ -63,13 +63,17 @@ fn validate(order: &FusionOrder) -> Result<(), ErrorObjectOwned> { None::<()>, )); } - if order.order_id.is_empty() || order.making_amount.is_zero() { + let id = order.order_id.strip_prefix("0x").unwrap_or(""); + if id.len() != 64 || !id.bytes().all(|b| b.is_ascii_hexdigit()) { return Err(ErrorObject::owned( INVALID_ORDER_CODE, - "order_id empty or making_amount zero", + "order_id must be a 32-byte 0x-hex order hash", None::<()>, )); } + if order.making_amount.is_zero() { + return Err(ErrorObject::owned(INVALID_ORDER_CODE, "making_amount is zero", None::<()>)); + } let now = SystemTime::now().duration_since(UNIX_EPOCH).unwrap_or_default().as_secs(); if order.auction_start_time.saturating_add(order.auction_duration_secs) < now { return Err(ErrorObject::owned(ORDER_EXPIRED_CODE, "auction window has ended", None::<()>)); @@ -108,7 +112,7 @@ mod tests { .expect("clock") .as_secs(); serde_json::from_value(serde_json::json!({ - "order_id": "0xabc123", + "order_id": format!("0x{}", "ab".repeat(32)), "from_token": "0x4200000000000000000000000000000000000006", "to_token": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "making_amount": "0x0de0b6b3a7640000", @@ -143,10 +147,28 @@ mod tests { let api = IntentApiImpl::new(tx); let resp = api.submit_order(valid_order()).await.expect("accepted"); assert_eq!(resp.status, "accepted"); - assert_eq!(resp.order_hash, "0xabc123"); + assert_eq!(resp.order_hash, format!("0x{}", "ab".repeat(32))); assert!(rx.try_recv().is_ok()); } + #[tokio::test] + async fn rejects_order_id_that_is_not_a_32_byte_hash() { + let (tx, _rx) = mpsc::channel(4); + let api = IntentApiImpl::new(tx); + for order_id in [ + "", + "0xabc123", + &format!("0x{}", "ab".repeat(33)), + "0xdemo000000000000000000000000000000000000000000000000000000face", + &format!("0x{}", "ab".repeat(32))[2..], + ] { + let mut order = valid_order(); + order.order_id = order_id.to_owned(); + let err = api.submit_order(order).await.expect_err("must reject"); + assert_eq!(err.code(), INVALID_ORDER_CODE, "order_id: {order_id}"); + } + } + #[tokio::test] async fn rejects_malformed_signature() { let (tx, _rx) = mpsc::channel(4);