|
|
@ -142,13 +142,16 @@ func Execute(code, input []byte, cfg *Config) ([]byte, *state.StateDB, error) { |
|
|
|
// set the receiver's (the executing contract) code for execution.
|
|
|
|
// set the receiver's (the executing contract) code for execution.
|
|
|
|
cfg.State.SetCode(address, code) |
|
|
|
cfg.State.SetCode(address, code) |
|
|
|
// Call the code with the given configuration.
|
|
|
|
// Call the code with the given configuration.
|
|
|
|
ret, _, err := vmenv.Call( |
|
|
|
ret, leftOverGas, err := vmenv.Call( |
|
|
|
sender, |
|
|
|
sender, |
|
|
|
common.BytesToAddress([]byte("contract")), |
|
|
|
common.BytesToAddress([]byte("contract")), |
|
|
|
input, |
|
|
|
input, |
|
|
|
cfg.GasLimit, |
|
|
|
cfg.GasLimit, |
|
|
|
uint256.MustFromBig(cfg.Value), |
|
|
|
uint256.MustFromBig(cfg.Value), |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
if cfg.EVMConfig.Tracer != nil && cfg.EVMConfig.Tracer.OnTxEnd != nil { |
|
|
|
|
|
|
|
cfg.EVMConfig.Tracer.OnTxEnd(&types.Receipt{GasUsed: cfg.GasLimit - leftOverGas}, err) |
|
|
|
|
|
|
|
} |
|
|
|
return ret, cfg.State, err |
|
|
|
return ret, cfg.State, err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -181,6 +184,9 @@ func Create(input []byte, cfg *Config) ([]byte, common.Address, uint64, error) { |
|
|
|
cfg.GasLimit, |
|
|
|
cfg.GasLimit, |
|
|
|
uint256.MustFromBig(cfg.Value), |
|
|
|
uint256.MustFromBig(cfg.Value), |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
if cfg.EVMConfig.Tracer != nil && cfg.EVMConfig.Tracer.OnTxEnd != nil { |
|
|
|
|
|
|
|
cfg.EVMConfig.Tracer.OnTxEnd(&types.Receipt{GasUsed: cfg.GasLimit - leftOverGas}, err) |
|
|
|
|
|
|
|
} |
|
|
|
return code, address, leftOverGas, err |
|
|
|
return code, address, leftOverGas, err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -214,5 +220,8 @@ func Call(address common.Address, input []byte, cfg *Config) ([]byte, uint64, er |
|
|
|
cfg.GasLimit, |
|
|
|
cfg.GasLimit, |
|
|
|
uint256.MustFromBig(cfg.Value), |
|
|
|
uint256.MustFromBig(cfg.Value), |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
if cfg.EVMConfig.Tracer != nil && cfg.EVMConfig.Tracer.OnTxEnd != nil { |
|
|
|
|
|
|
|
cfg.EVMConfig.Tracer.OnTxEnd(&types.Receipt{GasUsed: cfg.GasLimit - leftOverGas}, err) |
|
|
|
|
|
|
|
} |
|
|
|
return ret, leftOverGas, err |
|
|
|
return ret, leftOverGas, err |
|
|
|
} |
|
|
|
} |
|
|
|