Skip to content
This repository was archived by the owner on Jan 9, 2025. It is now read-only.

dev: remove extra checks in interpreter #1084

Merged
merged 1 commit into from
Apr 9, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 4 additions & 22 deletions src/kakarot/interpreter.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -786,7 +786,6 @@ namespace Interpreter {
let count = count_not_zero(calldata_len, calldata);
let zeroes = calldata_len - count;
let calldata_gas = zeroes * 4 + count * 16;
// TODO no overflow check on calldata operation
let intrinsic_gas = Gas.TX_BASE_COST + calldata_gas;

// If is_deploy_tx is TRUE, then
Expand Down Expand Up @@ -865,27 +864,6 @@ namespace Interpreter {
return (evm, stack, memory, state, 0, 0);
}

// TODO: same as below
let (is_value_le_balance) = uint256_le([value], [sender.balance]);
if (is_value_le_balance == FALSE) {
let evm = EVM.halt_validation_failed(evm);
State.finalize();
return (evm, stack, memory, state, 0, 0);
}
let (balance_post_value_transfer) = uint256_sub([sender.balance], [value]);

// TODO: since we check in EOA execute whether tx.amount + maxFeePerGas *tx.gas_limit <=
// tx.sender.balance this might be superfluous
let effective_gas_fee = gas_limit * env.gas_price;
let (fee_high, fee_low) = split_felt(effective_gas_fee);
let max_fee_u256 = Uint256(low=fee_low, high=fee_high);
let (can_pay_gasfee) = uint256_le(max_fee_u256, balance_post_value_transfer);
if (can_pay_gasfee == FALSE) {
let evm = EVM.halt_validation_failed(evm);
State.finalize();
return (evm, stack, memory, state, 0, 0);
}

tempvar is_initcode_invalid = is_deploy_tx * is_le(
2 * Constants.MAX_CODE_SIZE + 1, bytecode_len
);
Expand All @@ -897,6 +875,10 @@ namespace Interpreter {

// Charge the gas fee to the user without setting up a transfer.
// Transfers with the exact amounts will be performed post-execution.
// Note: balance > effective_fee was verified in AccountContract.execute()
let effective_gas_fee = gas_limit * env.gas_price;
let (fee_high, fee_low) = split_felt(effective_gas_fee);
let max_fee_u256 = Uint256(low=fee_low, high=fee_high);
let (local new_balance) = uint256_sub([sender.balance], max_fee_u256);
let sender = Account.set_balance(sender, &new_balance);
State.update_account(sender);
Expand Down
Loading