Skip to content

Commit 191e810

Browse files
committed
feat: Add reth-chainspec and reth-rpc-types-compat as optional dependencies
The code changes include adding "reth-chainspec" and "reth-rpc-types-compat" as optional dependencies in the "taiko" feature of the "payload/builder" crate. This change allows the "taiko" feature to include these dependencies when enabled. Recent user commits: - fix: taiko features - Merge branch 'v1.0.0' of gh_work:taikoxyz/taiko-reth into HEAD - fix(op): configure discv5 properly in op builder (paradigmxyz#9058) - fix: Change Arc<KzgSettings> to EnvKzgSettings (paradigmxyz#9054) - feat(examples): remote exex (paradigmxyz#8890) - chore: tweak profiles, rename debug-fast to profiling (paradigmxyz#9051) - ci: use reth-prod.png for release notes (paradigmxyz#9047) - feat: integrate Node traits into LaunchContextWith (paradigmxyz#8993) - feat(node): derive `Clone` for `FullNode` (paradigmxyz#9046) - feat(rpc): remove ipc future and now using ServerHandle and StopHandle from jsonrpsee (paradigmxyz#9044) Recent repository commits: - fix: taiko features - Merge branch 'v1.0.0' of gh_work:taikoxyz/taiko-reth into HEAD - fix(op): configure discv5 properly in op builder (paradigmxyz#9058) - fix: Change Arc<KzgSettings> to EnvKzgSettings (paradigmxyz#9054) - feat(examples): remote exex (paradigmxyz#8890) - chore: tweak profiles, rename debug-fast to profiling (paradigmxyz#9051) - ci: use reth-prod.png for release notes (paradigmxyz#9047) - feat: integrate Node traits into LaunchContextWith (paradigmxyz#8993) - feat(node): derive `Clone` for `FullNode` (paradigmxyz#9046) - feat(rpc): remove ipc future and now using ServerHandle and StopHandle from jsonrpsee (paradigmxyz#9044)
1 parent eb55ad2 commit 191e810

File tree

16 files changed

+199
-1701
lines changed

16 files changed

+199
-1701
lines changed

Cargo.lock

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

crates/node-taiko/src/engine.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,13 @@ use serde::{Deserialize, Serialize};
1515
#[non_exhaustive]
1616
pub struct TaikoEngineTypes;
1717

18-
impl EngineTypes for TaikoEngineTypes {
18+
impl PayloadTypes for TaikoEngineTypes {
19+
type BuiltPayload = TaikoBuiltPayload;
1920
type PayloadAttributes = TaikoPayloadAttributes;
2021
type PayloadBuilderAttributes = TaikoPayloadBuilderAttributes;
21-
type BuiltPayload = TaikoBuiltPayload;
22+
}
23+
24+
impl EngineTypes for TaikoEngineTypes {
2225
type ExecutionPayloadV1 = ExecutionPayloadV1;
2326
type ExecutionPayloadV2 = ExecutionPayloadEnvelopeV2;
2427
type ExecutionPayloadV3 = TaikoExecutionPayloadEnvelope;

crates/node-taiko/src/evm.rs

+11-7
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,7 @@ use reth_primitives::{
1111
pub struct TaikoEvmConfig;
1212

1313
impl ConfigureEvmEnv for TaikoEvmConfig {
14-
type TxMeta = ();
15-
16-
fn fill_tx_env<T>(tx_env: &mut TxEnv, transaction: T, sender: Address, _meta: ())
17-
where
18-
T: AsRef<Transaction>,
19-
{
14+
fn fill_tx_env(tx_env: &mut TxEnv, transaction: &TransactionSigned, sender: Address) {
2015
fill_tx_env(tx_env, transaction, sender)
2116
}
2217

@@ -44,7 +39,16 @@ impl ConfigureEvmEnv for TaikoEvmConfig {
4439
}
4540
}
4641

47-
impl ConfigureEvm for TaikoEvmConfig {}
42+
impl ConfigureEvm for TaikoEvmConfig {
43+
type DefaultExternalContext<'a> = ();
44+
45+
fn evm<'a, DB: Database + 'a>(
46+
&self,
47+
db: DB,
48+
) -> reth_revm::Evm<'a, Self::DefaultExternalContext<'a>, DB> {
49+
EvmBuilder::default().with_db(db).build()
50+
}
51+
}
4852

4953
#[cfg(test)]
5054
mod tests {

crates/payload/builder/Cargo.toml

+7-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ reth-errors.workspace = true
2020
reth-provider.workspace = true
2121
reth-payload-primitives.workspace = true
2222
reth-ethereum-engine-primitives.workspace = true
23-
23+
reth-chainspec = { workspace = true, optional = true }
24+
reth-rpc-types-compat = { workspace = true, optional = true }
2425
# ethereum
2526
alloy-rlp.workspace = true
2627
revm-primitives.workspace = true
@@ -46,4 +47,8 @@ serde_json.workspace = true
4647

4748
[features]
4849
test-utils = []
49-
taiko = ["reth-primitives/taiko"]
50+
taiko = [
51+
"reth-primitives/taiko",
52+
"dep:reth-chainspec",
53+
"dep:reth-rpc-types-compat",
54+
]

crates/payload/builder/src/taiko.rs

+18-24
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
use crate::EthPayloadBuilderAttributes;
22
use alloy_rlp::Error as DecodeError;
3-
use reth_node_api::{BuiltPayload, PayloadBuilderAttributes};
3+
use reth_chainspec::ChainSpec;
4+
use reth_payload_primitives::{
5+
BuiltPayload, EngineApiMessageVersion, EngineObjectValidationError, PayloadBuilderAttributes,
6+
};
47
use reth_primitives::{
58
revm::config::revm_spec_by_timestamp_after_merge,
69
revm_primitives::{BlobExcessGasAndPrice, BlockEnv, CfgEnv, CfgEnvWithHandlerCfg, SpecId},
7-
Address, BlobTransactionSidecar, Bytes, ChainSpec, Header, L1Origin, SealedBlock,
8-
TaikoBlockMetadata, Withdrawals, B256, U256,
10+
Address, BlobTransactionSidecar, Header, L1Origin, SealedBlock, TaikoBlockMetadata,
11+
Withdrawals, B256, U256,
912
};
1013
use reth_rpc_types::{
1114
engine::{
1215
BlobsBundleV1, ExecutionPayloadEnvelopeV2, ExecutionPayloadEnvelopeV3, ExecutionPayloadV1,
1316
PayloadAttributes, PayloadId,
1417
},
15-
ExecutionPayload, ExecutionPayloadV2, ExecutionPayloadV3,
18+
ExecutionPayload,
1619
};
17-
use reth_rpc_types_compat::engine::{
18-
convert_withdrawal_to_standalone_withdraw,
19-
payload::{block_to_payload_v3, convert_block_to_payload_field_v2, try_block_to_payload_v1},
20+
use reth_rpc_types_compat::engine::payload::{
21+
block_to_payload_v1, block_to_payload_v3, convert_block_to_payload_field_v2,
2022
};
2123
use serde::{Deserialize, Serialize};
2224
// use std::sync::Arc;
@@ -35,7 +37,7 @@ pub struct TaikoPayloadAttributes {
3537
pub l1_origin: L1Origin,
3638
}
3739

38-
impl reth_node_api::PayloadAttributes for TaikoPayloadAttributes {
40+
impl reth_payload_primitives::PayloadAttributes for TaikoPayloadAttributes {
3941
fn timestamp(&self) -> u64 {
4042
self.payload_attributes.timestamp()
4143
}
@@ -51,8 +53,8 @@ impl reth_node_api::PayloadAttributes for TaikoPayloadAttributes {
5153
fn ensure_well_formed_attributes(
5254
&self,
5355
chain_spec: &ChainSpec,
54-
version: reth_node_api::EngineApiMessageVersion,
55-
) -> Result<(), reth_node_api::AttributesValidationError> {
56+
version: EngineApiMessageVersion,
57+
) -> Result<(), EngineObjectValidationError> {
5658
self.payload_attributes.ensure_well_formed_attributes(chain_spec, version)
5759
}
5860
}
@@ -148,7 +150,7 @@ impl PayloadBuilderAttributes for TaikoPayloadBuilderAttributes {
148150
*base_fee_per_gas
149151
} else {
150152
parent
151-
.next_block_base_fee(chain_spec.base_fee_params(self.timestamp()))
153+
.next_block_base_fee(chain_spec.base_fee_params_at_timestamp(self.timestamp()))
152154
.unwrap_or_default()
153155
});
154156

@@ -248,7 +250,7 @@ impl<'a> BuiltPayload for &'a TaikoBuiltPayload {
248250
// V1 engine_getPayloadV1 response
249251
impl From<TaikoBuiltPayload> for ExecutionPayloadV1 {
250252
fn from(value: TaikoBuiltPayload) -> Self {
251-
try_block_to_payload_v1(value.block)
253+
block_to_payload_v1(value.block)
252254
}
253255
}
254256

@@ -268,8 +270,8 @@ impl From<TaikoBuiltPayload> for ExecutionPayloadEnvelopeV3 {
268270
fn from(value: TaikoBuiltPayload) -> Self {
269271
let TaikoBuiltPayload { block, fees, sidecars, .. } = value;
270272

271-
ExecutionPayloadEnvelopeV3 {
272-
execution_payload: block_to_payload_v3(block.clone()),
273+
Self {
274+
execution_payload: block_to_payload_v3(block).0,
273275
block_value: fees,
274276
// From the engine API spec:
275277
//
@@ -343,21 +345,13 @@ impl From<TaikoBuiltPayload> for TaikoExecutionPayloadEnvelope {
343345
fn from(value: TaikoBuiltPayload) -> Self {
344346
let TaikoBuiltPayload { block, fees, sidecars, .. } = value;
345347

346-
let withdrawals: Vec<reth_rpc_types::withdrawal::Withdrawal> = block
347-
.withdrawals
348-
.clone()
349-
.unwrap_or_default()
350-
.into_iter()
351-
.map(convert_withdrawal_to_standalone_withdraw)
352-
.collect();
353-
354348
TaikoExecutionPayloadEnvelope {
355349
execution_payload: TaikoExecutionPayload {
356350
tx_hash: block.header.transactions_root,
357351
withdrawals_hash: block.header.withdrawals_root.unwrap_or_default(),
358352
taiko_block: true,
359353

360-
payload_inner: ExecutionPayload::V3(block_to_payload_v3(block)),
354+
payload_inner: ExecutionPayload::V3(block_to_payload_v3(block).0),
361355
},
362356
block_value: fees,
363357
blobs_bundle: sidecars.into_iter().map(Into::into).collect::<Vec<_>>().into(),
@@ -374,7 +368,7 @@ impl From<TaikoBuiltPayload> for TaikoExecutionPayload {
374368
tx_hash: block.header.transactions_root,
375369
withdrawals_hash: block.header.withdrawals_root.unwrap_or_default(),
376370
taiko_block: true,
377-
payload_inner: ExecutionPayload::V3(block_to_payload_v3(block)),
371+
payload_inner: ExecutionPayload::V3(block_to_payload_v3(block).0),
378372
}
379373
}
380374
}

0 commit comments

Comments
 (0)