Skip to content

Commit 338a41a

Browse files
committed
Attempt
1 parent 1e3d34e commit 338a41a

File tree

3 files changed

+9
-11
lines changed

3 files changed

+9
-11
lines changed

vm/rust/src/execution.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use starknet_api::transaction::{DeclareTransaction, DeployAccountTransaction, In
1717

1818
pub fn process_transaction(
1919
txn: &mut Transaction,
20-
txn_state: &mut TransactionalState<'_, CachedState<JunoStateReader>>,
20+
txn_state: &mut TransactionalState<'_, JunoStateReader>,
2121
block_context: &BlockContext,
2222
error_on_revert: bool,
2323
) -> Result<TransactionExecutionInfo, ExecutionError> {
@@ -71,7 +71,7 @@ where
7171
/// This function checks whether the sender contract meets this requirement.
7272
pub fn is_l2_gas_accounting_enabled(
7373
transaction: &Transaction,
74-
state: &mut TransactionalState<'_, CachedState<JunoStateReader>>,
74+
state: &mut TransactionalState<'_, JunoStateReader>,
7575
block_context: &BlockContext,
7676
gas_computation_mode: &GasVectorComputationMode,
7777
) -> StateResult<bool> {

vm/rust/src/jsonrpc.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use blockifier;
22
use blockifier::execution::call_info::OrderedL2ToL1Message;
33
use blockifier::execution::entry_point::CallType;
4-
use blockifier::state::cached_state::CachedState;
54
use blockifier::state::cached_state::{CommitmentStateDiff, TransactionalState};
65
use blockifier::state::errors::StateError;
76
use blockifier::state::state_api::StateReader;
@@ -105,7 +104,7 @@ type BlockifierTxInfo = blockifier::transaction::objects::TransactionExecutionIn
105104
pub fn new_transaction_trace(
106105
tx: &StarknetApiTransaction,
107106
info: BlockifierTxInfo,
108-
state: &mut TransactionalState<CachedState<JunoStateReader>>,
107+
state: &mut TransactionalState<JunoStateReader>,
109108
) -> Result<TransactionTrace, StateError> {
110109
let mut trace = TransactionTrace::default();
111110
let mut deprecated_declared_class_hash: Option<ClassHash> = None;
@@ -327,7 +326,7 @@ impl From<OrderedL2ToL1Message> for OrderedMessage {
327326
pub struct Retdata(pub Vec<StarkFelt>);
328327

329328
fn make_state_diff(
330-
state: &mut TransactionalState<CachedState<JunoStateReader>>,
329+
state: &mut TransactionalState<JunoStateReader>,
331330
deprecated_declared_class_hash: Option<ClassHash>,
332331
) -> Result<StateDiff, StateError> {
333332
let diff: CommitmentStateDiff = state.to_state_diff()?.state_maps.into();

vm/rust/src/lib.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ pub extern "C" fn cairoVMExecute(
247247
err_stack: c_uchar,
248248
) {
249249
let block_info = unsafe { *block_info_ptr };
250-
let reader = JunoStateReader::new(reader_handle, block_info.block_number);
250+
let mut reader = JunoStateReader::new(reader_handle, block_info.block_number);
251251
let chain_id_str = unsafe { CStr::from_ptr(chain_id) }.to_str().unwrap();
252252
let txn_json_str = unsafe { CStr::from_ptr(txns_json) }.to_str().unwrap();
253253
let txns_and_query_bits: Result<Vec<TxnAndQueryBit>, serde_json::Error> =
@@ -278,7 +278,7 @@ pub extern "C" fn cairoVMExecute(
278278
}
279279
};
280280

281-
let mut state = CachedState::new(reader);
281+
let mut state = CachedState::create_transactional(&mut reader);
282282
let txns_and_query_bits = txns_and_query_bits.unwrap();
283283
let mut classes = classes.unwrap();
284284
let concurrency_mode = concurrency_mode == 1;
@@ -350,7 +350,6 @@ pub extern "C" fn cairoVMExecute(
350350
return;
351351
}
352352

353-
let mut txn_state = CachedState::create_transactional(&mut state);
354353
let mut txn = txn.unwrap();
355354
let gas_vector_computation_mode = determine_gas_vector_mode(&txn);
356355

@@ -366,7 +365,7 @@ pub extern "C" fn cairoVMExecute(
366365
Transaction::L1Handler(t) => (None, t.fee_type()),
367366
};
368367

369-
match process_transaction(&mut txn, &mut txn_state, &block_context, err_on_revert) {
368+
match process_transaction(&mut txn, &mut state, &block_context, err_on_revert) {
370369
Err(e) => match e {
371370
ExecutionError::ExecutionError { error, error_stack } => {
372371
let err_string = if err_stack {
@@ -434,7 +433,7 @@ pub extern "C" fn cairoVMExecute(
434433
let trace = jsonrpc::new_transaction_trace(
435434
&txn_and_query_bit.txn,
436435
tx_execution_info,
437-
&mut txn_state,
436+
&mut state,
438437
);
439438
if let Err(e) = trace {
440439
report_error(
@@ -464,8 +463,8 @@ pub extern "C" fn cairoVMExecute(
464463
append_trace(reader_handle, trace.as_ref().unwrap(), &mut trace_buffer);
465464
}
466465
}
467-
txn_state.commit();
468466
}
467+
state.abort();
469468
}
470469

471470
fn determine_gas_vector_mode(transaction: &Transaction) -> GasVectorComputationMode {

0 commit comments

Comments
 (0)