Skip to content

Commit 6a565a3

Browse files
committed
feat: bump alloy
1 parent 3e3f332 commit 6a565a3

File tree

37 files changed

+316
-289
lines changed

37 files changed

+316
-289
lines changed

Cargo.lock

+46-77
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+53-21
Original file line numberDiff line numberDiff line change
@@ -400,31 +400,31 @@ alloy-rlp = "0.3.4"
400400
alloy-sol-types = "0.7.2"
401401
alloy-trie = { version = "0.4", default-features = false }
402402

403-
alloy-consensus = { version = "0.2.1", default-features = false }
404-
alloy-eips = { version = "0.2.1", default-features = false }
405-
alloy-genesis = { version = "0.2.1", default-features = false }
406-
alloy-json-rpc = { version = "0.2.1", default-features = false }
407-
alloy-network = { version = "0.2.1", default-features = false }
408-
alloy-node-bindings = { version = "0.2.1", default-features = false }
403+
alloy-consensus = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
404+
alloy-eips = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
405+
alloy-genesis = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
406+
alloy-json-rpc = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
407+
alloy-network = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
408+
alloy-node-bindings = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
409409
alloy-provider = { version = "0.2.1", features = ["reqwest"], default-features = false }
410-
alloy-pubsub = { version = "0.2.1", default-features = false }
411-
alloy-rpc-client = { version = "0.2.1", default-features = false }
410+
alloy-pubsub = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
411+
alloy-rpc-client = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
412412
alloy-rpc-types = { version = "0.2.1", features = ["eth"], default-features = false }
413-
alloy-rpc-types-admin = { version = "0.2.1", default-features = false }
414-
alloy-rpc-types-anvil = { version = "0.2.1", default-features = false }
415-
alloy-rpc-types-beacon = { version = "0.2.1", default-features = false }
416-
alloy-rpc-types-engine = { version = "0.2.1", default-features = false }
417-
alloy-rpc-types-eth = { version = "0.2.1", default-features = false }
418-
alloy-rpc-types-mev = { version = "0.2.1", default-features = false }
419-
alloy-rpc-types-trace = { version = "0.2.1", default-features = false }
420-
alloy-rpc-types-txpool = { version = "0.2.1", default-features = false }
421-
alloy-serde = { version = "0.2.1", default-features = false }
422-
alloy-signer = { version = "0.2.1", default-features = false }
423-
alloy-signer-local = { version = "0.2.1", default-features = false }
413+
alloy-rpc-types-admin = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
414+
alloy-rpc-types-anvil = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
415+
alloy-rpc-types-beacon = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
416+
alloy-rpc-types-engine = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
417+
alloy-rpc-types-eth = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
418+
alloy-rpc-types-mev = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
419+
alloy-rpc-types-trace = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
420+
alloy-rpc-types-txpool = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
421+
alloy-serde = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
422+
alloy-signer = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
423+
alloy-signer-local = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
424424
alloy-transport = { version = "0.2.1" }
425425
alloy-transport-http = { version = "0.2.1", features = ["reqwest-rustls-tls"], default-features = false }
426-
alloy-transport-ipc = { version = "0.2.1", default-features = false }
427-
alloy-transport-ws = { version = "0.2.1", default-features = false }
426+
alloy-transport-ipc = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
427+
alloy-transport-ws = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
428428

429429
# op
430430
op-alloy-rpc-types = "0.1"
@@ -542,3 +542,35 @@ serial_test = "3"
542542
similar-asserts = "1.5.0"
543543
tempfile = "3.8"
544544
test-fuzz = "5"
545+
546+
[patch.crates-io]
547+
alloy-consensus = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
548+
alloy-eips = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
549+
alloy-genesis = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
550+
alloy-json-rpc = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
551+
alloy-network = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
552+
alloy-node-bindings = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
553+
alloy-provider = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
554+
alloy-pubsub = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
555+
alloy-rpc-client = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
556+
alloy-rpc-types = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
557+
alloy-rpc-types-admin = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
558+
alloy-rpc-types-anvil = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
559+
alloy-rpc-types-beacon = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
560+
alloy-rpc-types-engine = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
561+
alloy-rpc-types-eth = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
562+
alloy-rpc-types-mev = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
563+
alloy-rpc-types-trace = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
564+
alloy-rpc-types-txpool = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
565+
alloy-serde = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
566+
alloy-signer = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
567+
alloy-signer-local = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
568+
alloy-transport = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
569+
alloy-transport-http = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
570+
alloy-transport-ipc = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
571+
alloy-transport-ws = { git = "https://github.com/alloy-rs/alloy", rev = "e2cc14f7" }
572+
revm = { git = "https://github.com/bluealloy/revm", rev = "caadc71" }
573+
revm-primitives = { git = "https://github.com/bluealloy/revm", rev = "caadc71" }
574+
revm-inspectors = { git = "https://github.com/klkvr/evm-inspectors", rev = "b51baec" }
575+
op-alloy-rpc-types = { git = "https://github.com/alloy-rs/op-alloy", rev = "d784eb5" }
576+
op-alloy-network = { git = "https://github.com/alloy-rs/op-alloy", rev = "d784eb5" }

bin/reth-bench/src/bench/context.rs

+5-17
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
44
use crate::{authenticated_transport::AuthenticatedTransportConnect, bench_mode::BenchMode};
55
use alloy_eips::BlockNumberOrTag;
6-
use alloy_provider::{
7-
network::{AnyNetwork, Ethereum},
8-
Provider, ProviderBuilder, RootProvider,
9-
};
6+
use alloy_provider::{network::AnyNetwork, Provider, ProviderBuilder, RootProvider};
107
use alloy_rpc_client::ClientBuilder;
118
use alloy_rpc_types_engine::JwtSecret;
129
use alloy_transport::BoxTransport;
@@ -24,7 +21,7 @@ pub(crate) struct BenchContext {
2421
/// The auth provider used for engine API queries.
2522
pub(crate) auth_provider: RootProvider<BoxTransport, AnyNetwork>,
2623
/// The block provider used for block queries.
27-
pub(crate) block_provider: RootProvider<Http<Client>, Ethereum>,
24+
pub(crate) block_provider: RootProvider<Http<Client>, AnyNetwork>,
2825
/// The benchmark mode, which defines whether the benchmark should run for a closed or open
2926
/// range of blocks.
3027
pub(crate) benchmark_mode: BenchMode,
@@ -46,7 +43,8 @@ impl BenchContext {
4643
}
4744

4845
// set up alloy client for blocks
49-
let block_provider = ProviderBuilder::new().on_http(rpc_url.parse()?);
46+
let block_provider =
47+
ProviderBuilder::new().network::<AnyNetwork>().on_http(rpc_url.parse()?);
5048

5149
// If neither `--from` nor `--to` are provided, we will run the benchmark continuously,
5250
// starting at the latest block.
@@ -95,17 +93,7 @@ impl BenchContext {
9593
}
9694
};
9795

98-
let next_block = match first_block.header.number {
99-
Some(number) => {
100-
// fetch next block
101-
number + 1
102-
}
103-
None => {
104-
// this should never happen
105-
return Err(eyre::eyre!("First block number is None"));
106-
}
107-
};
108-
96+
let next_block = first_block.header.number + 1;
10997
Ok(Self { auth_provider, block_provider, benchmark_mode, next_block })
11098
}
11199
}

bin/reth-bench/src/bench/new_payload_fcu.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ impl Command {
4848
let block = match block.header.hash {
4949
Some(block_hash) => {
5050
// we can reuse the hash in the response
51-
Block::try_from(block).unwrap().seal(block_hash)
51+
Block::try_from(block.inner).unwrap().seal(block_hash)
5252
}
5353
None => {
5454
// we don't have the hash, so let's just hash it
55-
Block::try_from(block).unwrap().seal_slow()
55+
Block::try_from(block.inner).unwrap().seal_slow()
5656
}
5757
};
5858

bin/reth-bench/src/bench/new_payload_only.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ impl Command {
4848
let block = match block.header.hash {
4949
Some(block_hash) => {
5050
// we can reuse the hash in the response
51-
Block::try_from(block).unwrap().seal(block_hash)
51+
Block::try_from(block.inner).unwrap().seal(block_hash)
5252
}
5353
None => {
5454
// we don't have the hash, so let's just hash it
55-
Block::try_from(block).unwrap().seal_slow()
55+
Block::try_from(block.inner).unwrap().seal_slow()
5656
}
5757
};
5858

crates/consensus/debug-client/src/client.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ pub fn rich_block_to_execution_payload_v3(block: RichBlock) -> ExecutionNewPaylo
198198
receipts_root: block.header.receipts_root,
199199
logs_bloom: block.header.logs_bloom,
200200
prev_randao: block.header.mix_hash.unwrap(),
201-
block_number: block.header.number.unwrap(),
201+
block_number: block.header.number,
202202
gas_limit: block.header.gas_limit.try_into().unwrap(),
203203
gas_used: block.header.gas_used.try_into().unwrap(),
204204
timestamp: block.header.timestamp,

crates/consensus/debug-client/src/providers/etherscan.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ impl BlockProvider for EtherscanBlockProvider {
6666
continue
6767
}
6868
};
69-
let block_number = block.header.number.unwrap();
69+
let block_number = block.header.number;
7070
if Some(block_number) == last_block_number {
7171
continue;
7272
}

crates/e2e-test-utils/src/lib.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ where
5959
N::AddOns: NodeAddOns<
6060
Adapter<N>,
6161
EthApi: FullEthApiServer<
62-
NetworkTypes: Network<TransactionResponse = reth_rpc_types::Transaction>,
62+
NetworkTypes: Network<
63+
TransactionResponse = reth_rpc_types::WithOtherFields<reth_rpc_types::Transaction>,
64+
>,
6365
> + AddDevSigners
6466
+ EthApiBuilderProvider<Adapter<N>>,
6567
>,

crates/e2e-test-utils/src/node.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use reth::{
1717
};
1818
use reth_node_builder::{EthApiTypes, NodeAddOns, NodeTypes};
1919
use reth_primitives::{BlockHash, BlockNumber, Bytes, B256};
20+
use reth_rpc_types::WithOtherFields;
2021
use reth_stages_types::StageId;
2122
use tokio_stream::StreamExt;
2223

@@ -94,7 +95,7 @@ where
9495
From<<Node::Engine as PayloadTypes>::BuiltPayload> + PayloadEnvelopeExt,
9596
AddOns::EthApi: EthApiSpec + EthTransactions + TraceExt,
9697
<AddOns::EthApi as EthApiTypes>::NetworkTypes:
97-
Network<TransactionResponse = alloy_rpc_types::Transaction>,
98+
Network<TransactionResponse = WithOtherFields<alloy_rpc_types::Transaction>>,
9899
{
99100
let mut chain = Vec::with_capacity(length as usize);
100101
for i in 0..length {

crates/e2e-test-utils/src/rpc.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use reth::{
99
};
1010
use reth_node_builder::EthApiTypes;
1111
use reth_primitives::{Bytes, B256};
12+
use reth_rpc_types::WithOtherFields;
1213

1314
#[allow(missing_debug_implementations)]
1415
pub struct RpcTestContext<Node: FullNodeComponents, EthApi: EthApiTypes> {
@@ -19,8 +20,11 @@ impl<Node, EthApi> RpcTestContext<Node, EthApi>
1920
where
2021
Node: FullNodeComponents,
2122
EthApi: EthApiSpec
22-
+ EthTransactions<NetworkTypes: Network<TransactionResponse = alloy_rpc_types::Transaction>>
23-
+ TraceExt,
23+
+ EthTransactions<
24+
NetworkTypes: Network<
25+
TransactionResponse = WithOtherFields<alloy_rpc_types::Transaction>,
26+
>,
27+
> + TraceExt,
2428
{
2529
/// Injects a raw transaction into the node tx pool via RPC server
2630
pub async fn inject_tx(&self, raw_tx: Bytes) -> Result<B256, EthApi::Error> {

crates/ethereum/evm/src/lib.rs

-6
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,6 @@ mod tests {
203203
// Ensure that the logs database is empty
204204
assert!(evm.context.evm.inner.db.logs.is_empty());
205205

206-
// Ensure that there are no valid authorizations in the EVM context
207-
assert!(evm.context.evm.inner.valid_authorizations.is_empty());
208-
209206
// No Optimism
210207
assert_eq!(evm.handler.cfg, HandlerCfg { spec_id: SpecId::LATEST, ..Default::default() });
211208
}
@@ -357,9 +354,6 @@ mod tests {
357354
// Ensure that the logs database is empty
358355
assert!(evm.context.evm.inner.db.logs.is_empty());
359356

360-
// Ensure that there are no valid authorizations in the EVM context
361-
assert!(evm.context.evm.inner.valid_authorizations.is_empty());
362-
363357
// No Optimism
364358
assert_eq!(evm.handler.cfg, HandlerCfg { spec_id: SpecId::LATEST, ..Default::default() });
365359
}

crates/node/builder/src/builder/mod.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
pub mod add_ons;
66
mod states;
77

8+
use reth_rpc_types::WithOtherFields;
89
pub use states::*;
910

1011
use std::sync::Arc;
@@ -330,7 +331,7 @@ where
330331
>
331332
+ FullEthApiServer<
332333
NetworkTypes: alloy_network::Network<
333-
TransactionResponse = reth_rpc_types::Transaction
334+
TransactionResponse = WithOtherFields<reth_rpc_types::Transaction>,
334335
>,
335336
>
336337
+ AddDevSigners
@@ -479,7 +480,9 @@ where
479480
NodeAdapter<RethFullAdapter<DB, T>, CB::Components>,
480481
EthApi: EthApiBuilderProvider<NodeAdapter<RethFullAdapter<DB, T>, CB::Components>>
481482
+ FullEthApiServer<
482-
NetworkTypes: alloy_network::Network<TransactionResponse = reth_rpc_types::Transaction>,
483+
NetworkTypes: alloy_network::Network<
484+
TransactionResponse = WithOtherFields<reth_rpc_types::Transaction>,
485+
>,
483486
> + AddDevSigners,
484487
>,
485488
{

crates/node/builder/src/launch/engine.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use reth_node_core::{
2727
use reth_node_events::{cl::ConsensusLayerHealthEvents, node};
2828
use reth_provider::providers::BlockchainProvider2;
2929
use reth_rpc_engine_api::{capabilities::EngineCapabilities, EngineApi};
30-
use reth_rpc_types::engine::ClientVersionV1;
30+
use reth_rpc_types::{engine::ClientVersionV1, WithOtherFields};
3131
use reth_tasks::TaskExecutor;
3232
use reth_tokio_util::EventSender;
3333
use reth_tracing::tracing::{debug, error, info};
@@ -67,7 +67,9 @@ where
6767
NodeAdapter<T, CB::Components>,
6868
EthApi: EthApiBuilderProvider<NodeAdapter<T, CB::Components>>
6969
+ FullEthApiServer<
70-
NetworkTypes: alloy_network::Network<TransactionResponse = reth_rpc_types::Transaction>,
70+
NetworkTypes: alloy_network::Network<
71+
TransactionResponse = WithOtherFields<reth_rpc_types::Transaction>,
72+
>,
7173
> + AddDevSigners,
7274
>,
7375
{

crates/node/builder/src/launch/mod.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use reth_node_events::{cl::ConsensusLayerHealthEvents, node};
3232
use reth_primitives::format_ether;
3333
use reth_provider::providers::BlockchainProvider;
3434
use reth_rpc_engine_api::{capabilities::EngineCapabilities, EngineApi};
35-
use reth_rpc_types::engine::ClientVersionV1;
35+
use reth_rpc_types::{engine::ClientVersionV1, WithOtherFields};
3636
use reth_tasks::TaskExecutor;
3737
use reth_tracing::tracing::{debug, info};
3838
use reth_transaction_pool::TransactionPool;
@@ -111,7 +111,9 @@ where
111111
NodeAdapter<T, CB::Components>,
112112
EthApi: EthApiBuilderProvider<NodeAdapter<T, CB::Components>>
113113
+ FullEthApiServer<
114-
NetworkTypes: alloy_network::Network<TransactionResponse = reth_rpc_types::Transaction>,
114+
NetworkTypes: alloy_network::Network<
115+
TransactionResponse = WithOtherFields<reth_rpc_types::Transaction>,
116+
>,
115117
> + AddDevSigners,
116118
>,
117119
{

crates/node/builder/src/rpc.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use reth_rpc_builder::{
2121
RpcModuleBuilder, RpcRegistryInner, RpcServerHandle, TransportRpcModules,
2222
};
2323
use reth_rpc_layer::JwtSecret;
24+
use reth_rpc_types::WithOtherFields;
2425
use reth_tasks::TaskExecutor;
2526
use reth_tracing::tracing::{debug, info};
2627

@@ -300,7 +301,9 @@ where
300301
Engine: EngineApiServer<Node::Engine>,
301302
EthApi: EthApiBuilderProvider<Node>
302303
+ FullEthApiServer<
303-
NetworkTypes: alloy_network::Network<TransactionResponse = reth_rpc_types::Transaction>,
304+
NetworkTypes: alloy_network::Network<
305+
TransactionResponse = WithOtherFields<reth_rpc_types::Transaction>,
306+
>,
304307
>,
305308
{
306309
let auth_config = config.rpc.auth_server_config(jwt_secret)?;

crates/optimism/evm/src/lib.rs

-6
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,6 @@ mod tests {
223223
// Ensure that the logs database is empty
224224
assert!(evm.context.evm.inner.db.logs.is_empty());
225225

226-
// Ensure that there are no valid authorizations in the EVM context
227-
assert!(evm.context.evm.inner.valid_authorizations.is_empty());
228-
229226
// Optimism in handler
230227
assert_eq!(evm.handler.cfg, HandlerCfg { spec_id: SpecId::LATEST, is_optimism: true });
231228

@@ -372,9 +369,6 @@ mod tests {
372369
// Ensure that the logs database is empty
373370
assert!(evm.context.evm.inner.db.logs.is_empty());
374371

375-
// Ensure that there are no valid authorizations in the EVM context
376-
assert!(evm.context.evm.inner.valid_authorizations.is_empty());
377-
378372
// Default spec ID
379373
assert_eq!(evm.handler.spec_id(), SpecId::LATEST);
380374

crates/optimism/rpc/src/eth/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use std::{fmt, sync::Arc};
1111

1212
use alloy_primitives::U256;
1313
use derive_more::Deref;
14-
use op_alloy_network::Optimism;
14+
use op_alloy_network::AnyNetwork;
1515
use reth_chainspec::ChainSpec;
1616
use reth_evm::ConfigureEvm;
1717
use reth_network_api::NetworkInfo;
@@ -95,7 +95,7 @@ where
9595
N: FullNodeComponents,
9696
{
9797
type Error = OpEthApiError;
98-
type NetworkTypes = Optimism;
98+
type NetworkTypes = AnyNetwork;
9999
}
100100

101101
impl<N> EthApiSpec for OpEthApi<N>

0 commit comments

Comments
 (0)