diff --git a/nimbus/transaction.nim b/nimbus/transaction.nim index 699d6e039..423663d38 100644 --- a/nimbus/transaction.nim +++ b/nimbus/transaction.nim @@ -20,11 +20,19 @@ proc initTransaction*(nonce: AccountNonce, gasPrice, gasLimit: GasInt, to: EthAd result.S = S result.isContractCreation = isContractCreation +func intrinsicGas*(data: openarray[byte]): GasInt = + result = 21_000 # GasTransaction + for i in data: + if i == 0: + result += 4 # GasTXDataZero + else: + result += 68 # GasTXDataNonZero + proc intrinsicGas*(t: Transaction): GasInt = # Compute the baseline gas cost for this transaction. This is the amount # of gas needed to send this transaction (but that is not actually used # for computation) - raise newException(ValueError, "not implemented intrinsicGas") + result = t.payload.intrinsicGas proc validate*(t: Transaction) = # Hook called during instantiation to ensure that all transaction diff --git a/nimbus/vm_state_transactions.nim b/nimbus/vm_state_transactions.nim index f809f85b3..7a35d41de 100644 --- a/nimbus/vm_state_transactions.nim +++ b/nimbus/vm_state_transactions.nim @@ -12,14 +12,6 @@ import ./transaction, ./vm_types, ./vm_state, ./block_types, ./db/[db_chain, state_db], ./utils/header, ./vm/interpreter, ./vm/interpreter/gas_costs, ./utils/addresses -func intrinsicGas*(data: openarray[byte]): GasInt = - result = 21_000 - for i in data: - if i == 0: - result += 4 - else: - result += 68 - proc validateTransaction*(vmState: BaseVMState, transaction: Transaction, sender: EthAddress): bool = # XXX: https://github.com/status-im/nimbus/issues/35#issuecomment-391726518 # XXX: lots of avoidable u256 construction