Skip to content

Commit 54ed75f

Browse files
yiweichifrisitano
andauthored
fix: eth66 serve signature (#331)
* fix: eth66 serve signature * update dependency * update on_block_headers_response * build database on build_network * build database on build_network * fix ScrollHeaderTransform * add ScrollRequestHeaderTransform * fix: save signature for devnet * fix: tokio block * add more logs * add more logs * update dependency * make signature persistence async * perfect signature validation * address comments * cargo update * enable signer to be set * update dep * remove scroll_rollup_node_signer::Signature * fix lints * support set signer via flag * fmt * fix test * fix ci deny * update dep * fix: skip sig check if authorized_signer is none * fix: update SignatureAsBytes * fix: ci * disable deny duplicates check * fix ci * add comment * add comment * add comment * address comments * deny add MPL-2.0 * refactor scroll network build * export SignatureProvider * remove unused code * refactor move ScrollHeaderTransform to rollup node * remove unused code --------- Co-authored-by: frisitano <[email protected]>
1 parent 260f87e commit 54ed75f

File tree

14 files changed

+605
-559
lines changed

14 files changed

+605
-559
lines changed

Cargo.lock

Lines changed: 569 additions & 504 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/chainspec/src/spec.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2530,13 +2530,15 @@ Post-merge hard forks (timestamp based):
25302530
update_fraction: 3338477,
25312531
min_blob_fee: BLOB_TX_MIN_BLOB_GASPRICE,
25322532
max_blobs_per_tx: 6,
2533+
blob_base_cost: 0,
25332534
},
25342535
prague: BlobParams {
25352536
target_blob_count: 3,
25362537
max_blob_count: 6,
25372538
update_fraction: 3338477,
25382539
min_blob_fee: BLOB_TX_MIN_BLOB_GASPRICE,
25392540
max_blobs_per_tx: 6,
2541+
blob_base_cost: 0,
25402542
},
25412543
..Default::default()
25422544
};

crates/ethereum/node/src/node.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ where
510510
pool: Pool,
511511
) -> eyre::Result<Self::Network> {
512512
let network = ctx.network_builder().await?;
513-
let handle = ctx.start_network(network, pool);
513+
let handle = ctx.start_network(network, pool, None);
514514
info!(target: "reth::cli", enode=%handle.local_node_record(), "P2P networking initialized");
515515
Ok(handle)
516516
}

crates/net/network/src/builder.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use crate::{
99
policy::NetworkPolicies,
1010
TransactionPropagationPolicy, TransactionsManager, TransactionsManagerConfig,
1111
},
12+
transform::header::HeaderTransform,
1213
NetworkHandle, NetworkManager,
1314
};
1415
use reth_eth_wire::{EthNetworkPrimitives, NetworkPrimitives};
@@ -63,12 +64,13 @@ impl<Tx, Eth, N: NetworkPrimitives> NetworkBuilder<Tx, Eth, N> {
6364
pub fn request_handler<Client>(
6465
self,
6566
client: Client,
67+
request_header_transform: Option<Box<dyn HeaderTransform<N::BlockHeader>>>,
6668
) -> NetworkBuilder<Tx, EthRequestHandler<Client, N>, N> {
6769
let Self { mut network, transactions, .. } = self;
6870
let (tx, rx) = mpsc::channel(ETH_REQUEST_CHANNEL_CAPACITY);
6971
network.set_eth_request_handler(tx);
7072
let peers = network.handle().peers_handle().clone();
71-
let request_handler = EthRequestHandler::new(client, peers, rx);
73+
let request_handler = EthRequestHandler::new(client, peers, rx, request_header_transform);
7274
NetworkBuilder { network, request_handler, transactions }
7375
}
7476

crates/net/network/src/config.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ where
169169
let client = self.client.clone();
170170
let (handle, network, _txpool, eth) = NetworkManager::builder::<C>(self)
171171
.await?
172-
.request_handler::<C>(client)
172+
.request_handler::<C>(client, None)
173173
.split_with_handle();
174174

175175
tokio::task::spawn(network);

crates/net/network/src/eth_requests.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
33
use crate::{
44
budget::DEFAULT_BUDGET_TRY_DRAIN_DOWNLOADERS, metered_poll_nested_stream_with_budget,
5-
metrics::EthRequestHandlerMetrics,
5+
metrics::EthRequestHandlerMetrics, transform::header::HeaderTransform,
66
};
77
use alloy_consensus::{BlockHeader, ReceiptWithBloom};
88
use alloy_eips::BlockHashOrNumber;
@@ -61,18 +61,26 @@ pub struct EthRequestHandler<C, N: NetworkPrimitives = EthNetworkPrimitives> {
6161
peers: PeersHandle,
6262
/// Incoming request from the [`NetworkManager`](crate::NetworkManager).
6363
incoming_requests: ReceiverStream<IncomingEthRequest<N>>,
64+
/// The header transform to apply to the headers before sending to peers.
65+
header_transform: Option<Box<dyn HeaderTransform<N::BlockHeader>>>,
6466
/// Metrics for the eth request handler.
6567
metrics: EthRequestHandlerMetrics,
6668
}
6769

6870
// === impl EthRequestHandler ===
6971
impl<C, N: NetworkPrimitives> EthRequestHandler<C, N> {
7072
/// Create a new instance
71-
pub fn new(client: C, peers: PeersHandle, incoming: Receiver<IncomingEthRequest<N>>) -> Self {
73+
pub fn new(
74+
client: C,
75+
peers: PeersHandle,
76+
incoming: Receiver<IncomingEthRequest<N>>,
77+
header_transform: Option<Box<dyn HeaderTransform<N::BlockHeader>>>,
78+
) -> Self {
7279
Self {
7380
client,
7481
peers,
7582
incoming_requests: ReceiverStream::new(incoming),
83+
header_transform,
7684
metrics: Default::default(),
7785
}
7886
}
@@ -81,7 +89,7 @@ impl<C, N: NetworkPrimitives> EthRequestHandler<C, N> {
8189
impl<C, N> EthRequestHandler<C, N>
8290
where
8391
N: NetworkPrimitives,
84-
C: BlockReader,
92+
C: BlockReader<Header = N::BlockHeader>,
8593
{
8694
/// Returns the list of requested headers
8795
fn get_headers_response(&self, request: GetBlockHeaders) -> Vec<C::Header> {
@@ -144,6 +152,11 @@ where
144152
}
145153
}
146154

155+
// TODO: remove this once we deprecated l2geth
156+
if let Some(ref header_transform) = self.header_transform {
157+
headers = headers.into_iter().map(|h| header_transform.map(h)).collect()
158+
}
159+
147160
headers
148161
}
149162

crates/net/network/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898
//! .await
9999
//! .unwrap()
100100
//! .transactions(pool, transactions_manager_config)
101-
//! .request_handler(client)
101+
//! .request_handler(client, None)
102102
//! .split_with_handle();
103103
//! }
104104
//! ```

crates/net/network/src/manager.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ impl<N: NetworkPrimitives> NetworkManager<N> {
380380
/// .await
381381
/// .unwrap()
382382
/// .transactions(pool, transactions_manager_config)
383-
/// .request_handler(client)
383+
/// .request_handler(client, None)
384384
/// .split_with_handle();
385385
/// }
386386
/// ```

crates/net/network/src/test_utils/testnet.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ where
469469
let (tx, rx) = channel(ETH_REQUEST_CHANNEL_CAPACITY);
470470
self.network.set_eth_request_handler(tx);
471471
let peers = self.network.peers_handle();
472-
let request_handler = EthRequestHandler::new(self.client.clone(), peers, rx);
472+
let request_handler = EthRequestHandler::new(self.client.clone(), peers, rx, None);
473473
self.request_handler = Some(request_handler);
474474
}
475475

crates/net/network/tests/it/connect.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ async fn test_connect_with_builder() {
234234
.await
235235
.unwrap()
236236
.into_builder()
237-
.request_handler(client)
237+
.request_handler(client, None)
238238
.split_with_handle();
239239

240240
let mut events = handle.event_listener();
@@ -271,7 +271,7 @@ async fn test_connect_to_trusted_peer() {
271271
.await
272272
.unwrap()
273273
.into_builder()
274-
.request_handler(client)
274+
.request_handler(client, None)
275275
.transactions(testing_pool(), transactions_manager_config)
276276
.split_with_handle();
277277

0 commit comments

Comments
 (0)