Skip to content

Commit abb24dc

Browse files
committed
refactor ClStfRange and integrate derive_l1_range
1 parent 0448519 commit abb24dc

File tree

3 files changed

+23
-35
lines changed

3 files changed

+23
-35
lines changed

bin/prover-client/src/operators/checkpoint.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use tracing::{error, info};
1717
use super::{cl_stf::ClStfOperator, ProvingOp};
1818
use crate::{
1919
checkpoint_runner::submit::submit_checkpoint_proof, errors::ProvingTaskError, hosts,
20-
operators::cl_stf::ClStfRange, task_tracker::TaskTracker,
20+
task_tracker::TaskTracker,
2121
};
2222

2323
/// A struct that implements the [`ProvingOp`] for Checkpoint Proof.
@@ -75,12 +75,8 @@ impl CheckpointOperator {
7575
// Since the EVM EE STF will be the heaviest, the splitting can be done based on that
7676
//
7777
// For now, do everything on a single chunk
78-
let cl_stf_params = ClStfRange {
79-
l1_range: Some(checkpoint_info.l1_range),
80-
l2_range: checkpoint_info.l2_range,
81-
};
8278
self.cl_stf_operator
83-
.create_task(cl_stf_params, task_tracker, db)
79+
.create_task(checkpoint_info.l2_range, task_tracker, db)
8480
.await
8581
}
8682

bin/prover-client/src/operators/cl_stf.rs

+18-19
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use strata_db::traits::ProofDatabase;
55
use strata_primitives::{
66
buf::Buf32,
77
evm_exec::EvmEeBlockCommitment,
8-
l1::L1BlockCommitment,
98
l2::L2BlockCommitment,
109
params::RollupParams,
1110
proof::{ProofContext, ProofKey},
@@ -19,7 +18,9 @@ use tokio::sync::Mutex;
1918
use tracing::error;
2019

2120
use super::{btc::BtcBlockspaceOperator, evm_ee::EvmEeOperator, ProvingOp};
22-
use crate::{errors::ProvingTaskError, hosts, task_tracker::TaskTracker};
21+
use crate::{
22+
errors::ProvingTaskError, hosts, rpc_server::derive_l1_range, task_tracker::TaskTracker,
23+
};
2324

2425
/// A struct that implements the [`ProvingOp`] trait for Consensus Layer (CL) State Transition
2526
/// Function (STF) proof generation.
@@ -116,28 +117,21 @@ impl ClStfOperator {
116117
}
117118
}
118119

119-
pub struct ClStfRange {
120-
pub l2_range: (L2BlockCommitment, L2BlockCommitment),
121-
pub l1_range: Option<(L1BlockCommitment, L1BlockCommitment)>,
122-
}
123-
124120
impl ProvingOp for ClStfOperator {
125121
type Prover = ClStfProver;
126-
type Params = ClStfRange;
122+
type Params = (L2BlockCommitment, L2BlockCommitment);
127123

128124
fn construct_proof_ctx(&self, range: &Self::Params) -> Result<ProofContext, ProvingTaskError> {
129-
let ClStfRange { l2_range, .. } = range;
130-
131-
let (start, end) = l2_range;
125+
let (start_block, end_block) = range;
132126
// Do some sanity checks
133127
assert!(
134-
start.slot() <= end.slot(),
128+
start_block.slot() <= end_block.slot(),
135129
"failed to construct CL STF proof context. start_slot: {} > end_slot {}",
136-
start.slot(),
137-
end.slot()
130+
start_block.slot(),
131+
end_block.slot()
138132
);
139133

140-
Ok(ProofContext::ClStf(*start, *end))
134+
Ok(ProofContext::ClStf(*start.blkid(), *end.blkid()))
141135
}
142136

143137
async fn fetch_input(
@@ -219,10 +213,15 @@ impl ProvingOp for ClStfOperator {
219213
db: &ProofDb,
220214
task_tracker: Arc<Mutex<TaskTracker>>,
221215
) -> Result<Vec<ProofKey>, ProvingTaskError> {
222-
let ClStfRange { l1_range, l2_range } = range;
223-
224-
let el_start_block = self.get_exec_commitment(*l2_range.0.blkid()).await?;
225-
let el_end_block = self.get_exec_commitment(*l2_range.1.blkid()).await?;
216+
let l1_range = derive_l1_range(
217+
&self.cl_client,
218+
&self.btc_blockspace_operator.btc_client,
219+
range,
220+
)
221+
.await;
222+
223+
let el_start_block_id = self.get_exec_id(*l2_range.0.blkid()).await?;
224+
let el_end_block_id = self.get_exec_id(*l2_range.1.blkid()).await?;
226225

227226
let mut tasks = self
228227
.evm_ee_operator

bin/prover-client/src/rpc_server.rs

+3-10
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use tracing::{info, warn};
2121
use zkaleido::ProofReceipt;
2222

2323
use crate::{
24-
operators::{cl_stf::ClStfRange, ProofOperator, ProvingOp},
24+
operators::{ProofOperator, ProvingOp},
2525
status::ProvingTaskStatus,
2626
task_tracker::TaskTracker,
2727
};
@@ -114,16 +114,9 @@ impl StrataProverClientApiServer for ProverClientRpc {
114114
&self,
115115
cl_block_range: (L2BlockCommitment, L2BlockCommitment),
116116
) -> RpcResult<Vec<ProofKey>> {
117-
let cl_client = &self.operator.cl_stf_operator().cl_client;
118-
let btc_client = &self.operator.btc_operator().btc_client;
119-
let l1_range = derive_l1_range(cl_client, btc_client, cl_block_range).await;
120-
let cl_params = ClStfRange {
121-
l2_range: cl_block_range,
122-
l1_range,
123-
};
124117
self.operator
125118
.cl_stf_operator()
126-
.create_task(cl_params, self.task_tracker.clone(), &self.db)
119+
.create_task(cl_block_range, self.task_tracker.clone(), &self.db)
127120
.await
128121
.map_err(to_jsonrpsee_error("failed to create task for cl block"))
129122
}
@@ -213,7 +206,7 @@ impl StrataProverClientApiServer for ProverClientRpc {
213206
}
214207
}
215208

216-
async fn derive_l1_range(
209+
pub async fn derive_l1_range(
217210
cl_client: &HttpClient,
218211
btc_client: &BitcoinClient,
219212
l2_range: (L2BlockCommitment, L2BlockCommitment),

0 commit comments

Comments
 (0)