core/vm: don't include contract deployer bytecode in AccessWitness or charge witness access costs for it (#54)

This commit is contained in:
jwasinger
2022-01-12 23:08:22 -10:00
committed by GitHub
parent 4428439fdf
commit d761880fd2
3 changed files with 6 additions and 1 deletions

View File

@ -260,6 +260,7 @@ func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas
// The depth-check is already done, and precompiles handled above
contract := NewContract(caller, AccountRef(addrCopy), value, gas)
contract.SetCallCode(&addrCopy, evm.StateDB.GetCodeHash(addrCopy), code)
contract.IsDeployment = true
ret, err = evm.interpreter.Run(contract, input, false)
gas = contract.Gas
}
@ -483,6 +484,7 @@ func (evm *EVM) create(caller ContractRef, codeAndHash *codeAndHash, gas uint64,
// The contract is a scoped environment for this execution context only.
contract := NewContract(caller, AccountRef(address), value, gas)
contract.SetCodeOptionalHash(&address, codeAndHash)
contract.IsDeployment = true
if evm.Config.NoRecursion && evm.depth > 0 {
return nil, address, gas, nil