diff --git a/nimbus/transaction/call_evm.nim b/nimbus/transaction/call_evm.nim index 4ca061ec0..19e54801d 100644 --- a/nimbus/transaction/call_evm.nim +++ b/nimbus/transaction/call_evm.nim @@ -266,17 +266,21 @@ proc txCallEvm*(tx: Transaction, sender: EthAddress, vmState: BaseVMState, fork: proc asmSetupComputation(tx: Transaction, sender: EthAddress, vmState: BaseVMState, data: seq[byte], forkOverride = none(Fork)): Computation = - doAssert tx.isContractCreation - let gasUsed = 0 #tx.payload.intrinsicGas.GasInt + gasFees[fork][GasTXCreate] + # For these tests, create the new contract like `CREATE`, + # but then execute it like it's `CALL`. + doAssert tx.isContractCreation + let contractAddress = generateAddress(sender, vmState.readOnlyStateDB.getNonce(sender)) + vmState.mutateStateDB: + db.setCode(contractAddress, tx.payload) + vmState.setupTxContext( origin = sender, gasPrice = tx.gasPrice, forkOverride = forkOverride, ) - let contractAddress = generateAddress(sender, tx.nonce) let msg = Message( kind: evmcCall, depth: 0, @@ -288,9 +292,6 @@ proc asmSetupComputation(tx: Transaction, sender: EthAddress, vmState: BaseVMSta data: data ) - vmState.mutateStateDb: - db.setCode(contractAddress, tx.payload) - return newComputation(vmState, msg) proc asmSetupComputation(blockNumber: Uint256, chainDB: BaseChainDB, code,