Skip to content

Commit ac6476b

Browse files
committed
feat: return gas used
1 parent 66f5313 commit ac6476b

File tree

1 file changed

+12
-7
lines changed
  • crates/core/src/executor

1 file changed

+12
-7
lines changed

Diff for: crates/core/src/executor/mod.rs

+12-7
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,21 @@ impl<CodeDb: KVDatabase, ZkDb: KVDatabase + Clone + 'static> EvmExecutor<'_, Cod
5454
}
5555

5656
/// Handle a block.
57-
pub fn handle_block<T: Block>(&mut self, l2_trace: &T) -> Result<(), VerificationError> {
58-
measure_duration_millis!(
57+
pub fn handle_block<T: Block>(&mut self, l2_trace: &T) -> Result<u64, VerificationError> {
58+
#[allow(clippy::let_and_return)]
59+
let gas_used = measure_duration_millis!(
5960
handle_block_duration_milliseconds,
6061
self.handle_block_inner(l2_trace)
6162
)?;
6263

6364
#[cfg(feature = "metrics")]
6465
sbv_utils::metrics::REGISTRY.block_counter.inc();
6566

66-
Ok(())
67+
Ok(gas_used)
6768
}
6869

6970
#[inline(always)]
70-
fn handle_block_inner<T: Block>(&mut self, l2_trace: &T) -> Result<(), VerificationError> {
71+
fn handle_block_inner<T: Block>(&mut self, l2_trace: &T) -> Result<u64, VerificationError> {
7172
self.hardfork_config
7273
.migrate(l2_trace.number(), &mut self.db)
7374
.unwrap();
@@ -86,6 +87,8 @@ impl<CodeDb: KVDatabase, ZkDb: KVDatabase + Clone + 'static> EvmExecutor<'_, Cod
8687
blob_excess_gas_and_price: None,
8788
};
8889

90+
let mut gas_used = 0;
91+
8992
for (idx, tx) in l2_trace.transactions().enumerate() {
9093
cycle_tracker_start!("handle tx {}", idx);
9194

@@ -151,7 +154,7 @@ impl<CodeDb: KVDatabase, ZkDb: KVDatabase + Clone + 'static> EvmExecutor<'_, Cod
151154

152155
dev_trace!("handler cfg: {:?}", revm.handler.cfg);
153156

154-
let _result = measure_duration_millis!(
157+
let result = measure_duration_millis!(
155158
transact_commit_duration_milliseconds,
156159
cycle_track!(revm.transact_commit(), "transact_commit").map_err(|e| {
157160
VerificationError::EvmExecution {
@@ -161,14 +164,16 @@ impl<CodeDb: KVDatabase, ZkDb: KVDatabase + Clone + 'static> EvmExecutor<'_, Cod
161164
})?
162165
);
163166

164-
dev_trace!("{_result:#?}");
167+
gas_used += result.gas_used();
168+
169+
dev_trace!("{result:#?}");
165170
}
166171
self.hooks.post_tx_execution(self, idx);
167172

168173
dev_debug!("handle {idx}th tx done");
169174
cycle_tracker_end!("handle tx {}", idx);
170175
}
171-
Ok(())
176+
Ok(gas_used)
172177
}
173178

174179
/// Commit pending changes in cache db to zktrie

0 commit comments

Comments
 (0)