Skip to content

Commit

Permalink
Move prepare_init_execute into ExecutableTransaction, fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Dentosal committed Feb 26, 2024
1 parent 572d0a5 commit 6a39361
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 17 deletions.
23 changes: 22 additions & 1 deletion fuel-vm/src/interpreter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,20 @@ use fuel_asm::{
PanicReason,
};
use fuel_tx::{
field,
field::{
self,
Inputs,
Outputs,
ReceiptsRoot,
},
output,
Chargeable,
ContractParameters,
Create,
Executable,
FeeParameters,
GasCosts,
Input,
Output,
PredicateParameters,
Receipt,
Expand Down Expand Up @@ -480,6 +486,9 @@ pub trait ExecutableTransaction:
}) if *input_index as usize == input)
})
}

/// Prepares the transaction for execution.
fn prepare_init_execute(&mut self);
}

impl ExecutableTransaction for Create {
Expand All @@ -502,6 +511,8 @@ impl ExecutableTransaction for Create {
fn transaction_type() -> Word {
TransactionRepr::Create as Word
}

fn prepare_init_execute(&mut self) {}
}

impl ExecutableTransaction for Script {
Expand All @@ -524,6 +535,16 @@ impl ExecutableTransaction for Script {
fn transaction_type() -> Word {
TransactionRepr::Script as Word
}

fn prepare_init_execute(&mut self) {
*self.receipts_root_mut() = Default::default();
self.inputs_mut()
.iter_mut()
.for_each(Input::prepare_init_execute);
self.outputs_mut()
.iter_mut()
.for_each(Output::prepare_init_execute);
}
}

/// The initial balances of the transaction.
Expand Down
15 changes: 2 additions & 13 deletions fuel-vm/src/interpreter/initialization.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@ use crate::{
storage::InterpreterStorage,
};
use fuel_asm::RegId;
use fuel_tx::field::{
ReceiptsRoot,
ScriptGasLimit,
};
use fuel_tx::field::ScriptGasLimit;
use fuel_types::Word;

use crate::interpreter::CheckedMetadata;
Expand All @@ -37,15 +34,7 @@ where
runtime_balances: RuntimeBalances,
gas_limit: Word,
) -> Result<(), RuntimeError<S::DataError>> {
if let Some(s) = tx.as_script_mut() {
*s.receipts_root_mut() = Default::default();
}
tx.inputs_mut()
.iter_mut()
.for_each(fuel_tx::Input::prepare_init_execute);
tx.outputs_mut()
.iter_mut()
.for_each(fuel_tx::Output::prepare_init_execute);
tx.prepare_init_execute();
self.tx = tx;

self.initial_balances = initial_balances.clone();
Expand Down
4 changes: 1 addition & 3 deletions fuel-vm/src/tests/validation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,7 @@ fn malleable_fields_do_not_affect_validity() {
123456789,
AssetId::default(),
Default::default(),
Default::default(),
)
.gas_price(0)
.script_gas_limit(1_000_000)
.finalize();

Expand All @@ -133,7 +131,7 @@ fn malleable_fields_do_not_affect_validity() {
let vm = Interpreter::<_, Script>::with_memory_storage();
let mut client = MemoryClient::from_txtor(vm.into());
let receipts =
client.transact(tx.into_checked(0u32.into(), &params).expect("valid tx"));
client.transact(tx.into_checked(0u32.into(), &params, 0).expect("valid tx"));

let start_id = receipts[0].data().unwrap();
let computed_id = receipts[1].data().unwrap();
Expand Down

0 comments on commit 6a39361

Please sign in to comment.