Skip to content

Commit

Permalink
Problem: CALL opcodes forget to take sub machine's memory gas
Browse files Browse the repository at this point in the history
Fix this bug, and add `total_used_gas` for state.
  • Loading branch information
sorpaas committed Jun 12, 2017
1 parent b758b54 commit c4bf2e1
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions sputnikvm/src/vm/eval/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ impl<M> State<M> {
pub fn available_gas(&self) -> Gas {
self.context.gas_limit - self.memory_gas() - self.used_gas
}

pub fn total_used_gas(&self) -> Gas {
self.memory_gas() + self.used_gas
}
}

/// A VM state with PC.
Expand Down Expand Up @@ -248,10 +252,12 @@ impl<M: Memory + Default> Machine<M> {

match sub.status() {
MachineStatus::ExitedOk => {
let sub_total_used_gas = sub.state.total_used_gas();

self.state.account_state = sub.state.account_state;
self.state.blockhash_state = sub.state.blockhash_state;
self.state.logs = sub.state.logs;
self.state.used_gas = self.state.used_gas + sub.state.used_gas;
self.state.used_gas = self.state.used_gas + sub_total_used_gas;
self.state.refunded_gas = self.state.refunded_gas + sub.state.refunded_gas;
if self.state.available_gas() >= code_deposit_gas(sub.state.out.len()) {
self.state.account_state.decrease_balance(sub.state.context.caller,
Expand Down Expand Up @@ -279,10 +285,12 @@ impl<M: Memory + Default> Machine<M> {

match sub.status() {
MachineStatus::ExitedOk => {
let sub_total_used_gas = sub.state.total_used_gas();

self.state.account_state = sub.state.account_state;
self.state.blockhash_state = sub.state.blockhash_state;
self.state.logs = sub.state.logs;
self.state.used_gas = self.state.used_gas + sub.state.used_gas;
self.state.used_gas = self.state.used_gas + sub_total_used_gas;
self.state.refunded_gas = self.state.refunded_gas + sub.state.refunded_gas;
copy_into_memory(&mut self.state.memory, sub.state.out.as_slice(),
out_start, M256::zero(), out_len);
Expand Down

0 comments on commit c4bf2e1

Please sign in to comment.