|
|
|
@ -111,7 +111,7 @@ type EVM struct { |
|
|
|
|
callGasTemp uint64 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// NewEVM retutrns a new EVM . The returned EVM is not thread safe and should
|
|
|
|
|
// NewEVM returns a new EVM. The returned EVM is not thread safe and should
|
|
|
|
|
// only ever be used *once*.
|
|
|
|
|
func NewEVM(ctx Context, statedb StateDB, chainConfig *params.ChainConfig, vmConfig Config) *EVM { |
|
|
|
|
evm := &EVM{ |
|
|
|
@ -221,7 +221,7 @@ func (evm *EVM) CallCode(caller ContractRef, addr common.Address, input []byte, |
|
|
|
|
to = AccountRef(caller.Address()) |
|
|
|
|
) |
|
|
|
|
// initialise a new contract and set the code that is to be used by the
|
|
|
|
|
// E The contract is a scoped evmironment for this execution context
|
|
|
|
|
// EVM. The contract is a scoped environment for this execution context
|
|
|
|
|
// only.
|
|
|
|
|
contract := NewContract(caller, to, value, gas) |
|
|
|
|
contract.SetCallCode(&addr, evm.StateDB.GetCodeHash(addr), evm.StateDB.GetCode(addr)) |
|
|
|
@ -341,7 +341,7 @@ func (evm *EVM) Create(caller ContractRef, code []byte, gas uint64, value *big.I |
|
|
|
|
evm.Transfer(evm.StateDB, caller.Address(), contractAddr, value) |
|
|
|
|
|
|
|
|
|
// initialise a new contract and set the code that is to be used by the
|
|
|
|
|
// E The contract is a scoped evmironment for this execution context
|
|
|
|
|
// EVM. The contract is a scoped environment for this execution context
|
|
|
|
|
// only.
|
|
|
|
|
contract := NewContract(caller, AccountRef(contractAddr), value, gas) |
|
|
|
|
contract.SetCallCode(&contractAddr, crypto.Keccak256Hash(code), code) |
|
|
|
|