Skip to content

Commit e98cd34

Browse files
committed
basic sync code done, testing wip
1 parent 87f4632 commit e98cd34

File tree

5 files changed

+211
-114
lines changed

5 files changed

+211
-114
lines changed
Lines changed: 29 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,53 @@
11
use crate::{
2-
builders::{
3-
BuilderConfig, OpPayloadBuilderCtx,
4-
flashblocks::{FlashblocksConfig, payload::FlashblocksExtraCtx},
5-
},
2+
builders::{BuilderConfig, OpPayloadBuilderCtx, flashblocks::FlashblocksConfig},
63
gas_limiter::AddressGasLimiter,
74
metrics::OpRBuilderMetrics,
85
traits::ClientBounds,
96
};
10-
use eyre::WrapErr as _;
117
use op_revm::OpSpecId;
128
use reth_basic_payload_builder::PayloadConfig;
13-
use reth_evm::{ConfigureEvm as _, EvmEnv};
14-
use reth_optimism_chainspec::{OpChainSpec, OpHardforks as _};
9+
use reth_evm::EvmEnv;
10+
use reth_optimism_chainspec::OpChainSpec;
1511
use reth_optimism_evm::{OpEvmConfig, OpNextBlockEnvAttributes};
1612
use reth_optimism_payload_builder::{OpPayloadBuilderAttributes, config::OpDAConfig};
1713
use reth_optimism_primitives::OpTransactionSigned;
18-
use reth_payload_primitives::PayloadBuilderAttributes as _;
1914
use std::sync::Arc;
2015
use tokio_util::sync::CancellationToken;
2116

22-
#[derive(Debug)]
17+
#[derive(Debug, Clone)]
2318
pub(super) struct OpPayloadSyncerCtx {
2419
/// The type that knows how to perform system calls and configure the evm.
25-
pub evm_config: OpEvmConfig,
20+
evm_config: OpEvmConfig,
2621
/// The DA config for the payload builder
27-
pub da_config: OpDAConfig,
22+
da_config: OpDAConfig,
2823
/// The chainspec
29-
pub chain_spec: Arc<OpChainSpec>,
30-
// /// How to build the payload.
31-
// pub config: PayloadConfig<OpPayloadBuilderAttributes<OpTransactionSigned>>,
32-
/// Block env attributes for the current block.
33-
//pub block_env_attributes: OpNextBlockEnvAttributes,
34-
/// Marker to check whether the job has been cancelled.
35-
//pub cancel: CancellationToken,
36-
/// Extra context for the payload builder
37-
pub extra_ctx: FlashblocksExtraCtx,
24+
chain_spec: Arc<OpChainSpec>,
3825
/// Max gas that can be used by a transaction.
39-
pub max_gas_per_txn: Option<u64>,
26+
max_gas_per_txn: Option<u64>,
4027
}
4128

4229
impl OpPayloadSyncerCtx {
30+
pub(super) fn new<Client>(
31+
client: &Client,
32+
builder_config: BuilderConfig<FlashblocksConfig>,
33+
evm_config: OpEvmConfig,
34+
) -> eyre::Result<Self>
35+
where
36+
Client: ClientBounds,
37+
{
38+
let chain_spec = client.chain_spec();
39+
Ok(Self {
40+
evm_config,
41+
da_config: builder_config.da_config.clone(),
42+
chain_spec,
43+
max_gas_per_txn: builder_config.max_gas_per_txn,
44+
})
45+
}
46+
47+
pub(super) fn evm_config(&self) -> &OpEvmConfig {
48+
&self.evm_config
49+
}
50+
4351
pub(super) fn into_op_payload_builder_ctx(
4452
self,
4553
payload_config: PayloadConfig<OpPayloadBuilderAttributes<OpTransactionSigned>>,
@@ -65,60 +73,3 @@ impl OpPayloadSyncerCtx {
6573
}
6674
}
6775
}
68-
69-
pub(super) fn get_op_payload_syncer_ctx<Client>(
70-
client: Client,
71-
evm_config: OpEvmConfig,
72-
builder_config: BuilderConfig<FlashblocksConfig>,
73-
// address_gas_limiter: AddressGasLimiter,
74-
// config: reth_basic_payload_builder::PayloadConfig<
75-
// OpPayloadBuilderAttributes<op_alloy_consensus::OpTxEnvelope>,
76-
// >,
77-
extra_ctx: FlashblocksExtraCtx,
78-
) -> OpPayloadSyncerCtx
79-
where
80-
Client: ClientBounds,
81-
{
82-
let chain_spec = client.chain_spec();
83-
// let timestamp = config.attributes.timestamp();
84-
// let block_env_attributes = OpNextBlockEnvAttributes {
85-
// timestamp,
86-
// suggested_fee_recipient: config.attributes.suggested_fee_recipient(),
87-
// prev_randao: config.attributes.prev_randao(),
88-
// gas_limit: config
89-
// .attributes
90-
// .gas_limit
91-
// .unwrap_or(config.parent_header.gas_limit),
92-
// parent_beacon_block_root: config
93-
// .attributes
94-
// .payload_attributes
95-
// .parent_beacon_block_root,
96-
// extra_data: if chain_spec.is_holocene_active_at_timestamp(timestamp) {
97-
// config
98-
// .attributes
99-
// .get_holocene_extra_data(chain_spec.base_fee_params_at_timestamp(timestamp))
100-
// .wrap_err("failed to get holocene extra data for flashblocks payload builder")?
101-
// } else {
102-
// Default::default()
103-
// },
104-
// };
105-
106-
// let evm_env = evm_config
107-
// .next_evm_env(&config.parent_header, &block_env_attributes)
108-
// .wrap_err("failed to create next evm env")?;
109-
110-
OpPayloadSyncerCtx {
111-
evm_config: evm_config.clone(),
112-
da_config: builder_config.da_config.clone(),
113-
chain_spec,
114-
//config,
115-
// evm_env,
116-
// block_env_attributes,
117-
// cancel,
118-
// builder_signer: builder_config.builder_signer,
119-
// metrics: Default::default(),
120-
extra_ctx,
121-
max_gas_per_txn: builder_config.max_gas_per_txn,
122-
//address_gas_limiter,
123-
}
124-
}

crates/op-rbuilder/src/builders/flashblocks/payload.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ pub(super) struct ExtraExecutionInfo {
7373
last_flashblock_index: usize,
7474
}
7575

76-
#[derive(Debug, Default)]
76+
#[derive(Debug, Default, Clone)]
7777
pub struct FlashblocksExtraCtx {
7878
/// Current flashblock index
7979
flashblock_index: u64,

0 commit comments

Comments
 (0)