Versions in this module Expand all Collapse all v1 v1.5.3 Sep 12, 2017 v1.5.2 Aug 19, 2017 v1.5.1 Aug 9, 2017 v1.5.0 Jul 31, 2017 Changes in this version + var ErrCodeStoreOutOfGas = errors.New("contract creation code storage out of gas") + var ErrDepth = errors.New("max call depth exceeded") + var ErrInsufficientBalance = errors.New("insufficient balance for transfer") + var ErrOutOfGas = errors.New("out of gas") + var ErrTraceLimitReached = errors.New("the number of logs reached the specified limit") + func NewJumpTable() [256]operation + func NoopCanTransfer(db StateDB, from common.Address, balance *big.Int) bool + func NoopTransfer(db StateDB, from, to common.Address, amount *big.Int) + func RunPrecompiledContract(p PrecompiledContract, input []byte, contract *Contract) (ret []byte, err error) + type CallContext interface + Call func(env *EVM, me ContractRef, addr common.Address, data []byte, ...) ([]byte, error) + CallCode func(env *EVM, me ContractRef, addr common.Address, data []byte, ...) ([]byte, error) + Create func(env *EVM, me ContractRef, data []byte, gas, value *big.Int) ([]byte, common.Address, error) + DelegateCall func(env *EVM, me ContractRef, addr common.Address, data []byte, gas *big.Int) ([]byte, error) + type CanTransferFunc func(StateDB, common.Address, *big.Int) bool type Config + DisableGasMetering bool + EnablePreimageRecording bool + JumpTable [256]operation + NoRecursion bool + Tracer Tracer + type Context struct + BlockNumber *big.Int + CanTransfer CanTransferFunc + Coinbase common.Address + Difficulty *big.Int + GasLimit *big.Int + GasPrice *big.Int + GetHash GetHashFunc + Origin common.Address + Time *big.Int + Transfer TransferFunc type EVM + StateDB StateDB + func NewEVM(ctx Context, statedb StateDB, chainConfig *params.ChainConfig, vmConfig Config) *EVM + func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas, value *big.Int) (ret []byte, err error) + func (evm *EVM) CallCode(caller ContractRef, addr common.Address, input []byte, gas, value *big.Int) (ret []byte, err error) + func (evm *EVM) Cancel() + func (evm *EVM) ChainConfig() *params.ChainConfig + func (evm *EVM) Create(caller ContractRef, code []byte, gas, value *big.Int) (ret []byte, contractAddr common.Address, err error) + func (evm *EVM) DelegateCall(caller ContractRef, addr common.Address, input []byte, gas *big.Int) (ret []byte, err error) + func (evm *EVM) Interpreter() *Interpreter + type GetHashFunc func(uint64) common.Hash + type Interpreter struct + func NewInterpreter(env *EVM, cfg Config) *Interpreter + func (evm *Interpreter) Run(contract *Contract, input []byte) (ret []byte, err error) type LogConfig + Limit int + type NoopEVMCallContext struct + func (NoopEVMCallContext) Call(caller ContractRef, addr common.Address, data []byte, gas, value *big.Int) ([]byte, error) + func (NoopEVMCallContext) CallCode(caller ContractRef, addr common.Address, data []byte, gas, value *big.Int) ([]byte, error) + func (NoopEVMCallContext) Create(caller ContractRef, data []byte, gas, value *big.Int) ([]byte, common.Address, error) + func (NoopEVMCallContext) DelegateCall(me ContractRef, addr common.Address, data []byte, gas *big.Int) ([]byte, error) + type NoopStateDB struct + func (NoopStateDB) AddBalance(common.Address, *big.Int) + func (NoopStateDB) AddLog(*types.Log) + func (NoopStateDB) AddPreimage(common.Hash, []byte) + func (NoopStateDB) AddRefund(*big.Int) + func (NoopStateDB) CreateAccount(common.Address) Account + func (NoopStateDB) Empty(common.Address) bool + func (NoopStateDB) Exist(common.Address) bool + func (NoopStateDB) GetAccount(common.Address) Account + func (NoopStateDB) GetBalance(common.Address) *big.Int + func (NoopStateDB) GetCode(common.Address) []byte + func (NoopStateDB) GetCodeHash(common.Address) common.Hash + func (NoopStateDB) GetCodeSize(common.Address) int + func (NoopStateDB) GetNonce(common.Address) uint64 + func (NoopStateDB) GetRefund() *big.Int + func (NoopStateDB) GetState(common.Address, common.Hash) common.Hash + func (NoopStateDB) HasSuicided(common.Address) bool + func (NoopStateDB) RevertToSnapshot(int) + func (NoopStateDB) SetCode(common.Address, []byte) + func (NoopStateDB) SetNonce(common.Address, uint64) + func (NoopStateDB) SetState(common.Address, common.Hash, common.Hash) + func (NoopStateDB) Snapshot() int + func (NoopStateDB) SubBalance(common.Address, *big.Int) + func (NoopStateDB) Suicide(common.Address) bool + type PrecompiledContract interface + RequiredGas func(inputSize int) *big.Int + Run func(input []byte) []byte + type Stack struct + func (st *Stack) Back(n int) *big.Int + func (st *Stack) Data() []*big.Int + func (st *Stack) Print() + type StateDB interface + AddBalance func(common.Address, *big.Int) + AddLog func(*types.Log) + AddPreimage func(common.Hash, []byte) + AddRefund func(*big.Int) + CreateAccount func(common.Address) Account + Empty func(common.Address) bool + Exist func(common.Address) bool + GetAccount func(common.Address) Account + GetBalance func(common.Address) *big.Int + GetCode func(common.Address) []byte + GetCodeHash func(common.Address) common.Hash + GetCodeSize func(common.Address) int + GetNonce func(common.Address) uint64 + GetRefund func() *big.Int + GetState func(common.Address, common.Hash) common.Hash + HasSuicided func(common.Address) bool + RevertToSnapshot func(int) + SetCode func(common.Address, []byte) + SetNonce func(common.Address, uint64) + SetState func(common.Address, common.Hash, common.Hash) + Snapshot func() int + SubBalance func(common.Address, *big.Int) + Suicide func(common.Address) bool + type StructLogger struct + func NewStructLogger(cfg *LogConfig) *StructLogger + func (l *StructLogger) CaptureState(env *EVM, pc uint64, op OpCode, gas, cost *big.Int, memory *Memory, ...) error + func (l *StructLogger) StructLogs() []StructLog + type Tracer interface + CaptureState func(env *EVM, pc uint64, op OpCode, gas, cost *big.Int, memory *Memory, ...) error + type TransferFunc func(StateDB, common.Address, common.Address, *big.Int) v1.4.9 Mar 28, 2017 Changes in this version + var CodeStoreOutOfGasError = errors.New("Contract creation code storage out of gas") + var DepthError = fmt.Errorf("Max call depth exceeded (%d)", params.CallCreateDepth) + var GasContractByte = big.NewInt(200) + var GasExtStep = big.NewInt(20) + var GasFastStep = big.NewInt(5) + var GasFastestStep = big.NewInt(3) + var GasMidStep = big.NewInt(8) + var GasQuickStep = big.NewInt(2) + var GasReturn = big.NewInt(0) + var GasSlowStep = big.NewInt(10) + var GasStop = big.NewInt(0) + var MaxProgSize int + var One = common.Big1 + var OutOfGasError = errors.New("Out of gas") + var Pow256 = common.BigPow(2, 256) + var Precompiled = PrecompiledContracts() + var S256 = common.S256 + var U256 = common.U256 + var Zero = common.Big0 + func CompileProgram(program *Program) (err error) + func Disasm(code []byte) []string + func Disassemble(script []byte) (asm []string) + func GetProgramStatus(id common.Hash) progStatus + func MatchFn(input, match []OpCode, matcherFn func(int) bool) + func PrecompiledContracts() map[string]*PrecompiledAccount + func RunProgram(program *Program, env Environment, contract *Contract, input []byte) ([]byte, error) + func SetJITCacheSize(size int) + func StdErrFormat(logs []StructLog) + type Account interface + AddBalance func(amount *big.Int) + Address func() common.Address + Balance func() *big.Int + ForEachStorage func(cb func(key, value common.Hash) bool) + ReturnGas func(*big.Int, *big.Int) + SetBalance func(*big.Int) + SetCode func(common.Hash, []byte) + SetNonce func(uint64) + SubBalance func(amount *big.Int) + Value func() *big.Int + type Config struct + Debug bool + EnableJit bool + ForceJit bool + Logger LogConfig + type Contract struct + Args []byte + CallerAddress common.Address + Code []byte + CodeAddr *common.Address + CodeHash common.Hash + DelegateCall bool + Gas *big.Int + Input []byte + Price *big.Int + UsedGas *big.Int + func NewContract(caller ContractRef, object ContractRef, value, gas, price *big.Int) *Contract + func (c *Contract) Address() common.Address + func (c *Contract) AsDelegate() *Contract + func (c *Contract) Caller() common.Address + func (c *Contract) Finalise() + func (c *Contract) GetByte(n uint64) byte + func (c *Contract) GetOp(n uint64) OpCode + func (c *Contract) ReturnGas(gas, price *big.Int) + func (c *Contract) UseGas(gas *big.Int) (ok bool) + func (c *Contract) Value() *big.Int + func (self *Contract) ForEachStorage(cb func(key, value common.Hash) bool) + func (self *Contract) SetCallCode(addr *common.Address, hash common.Hash, code []byte) + func (self *Contract) SetCode(hash common.Hash, code []byte) + type ContractRef interface + Address func() common.Address + ForEachStorage func(callback func(key, value common.Hash) bool) + ReturnGas func(*big.Int, *big.Int) + SetCode func(common.Hash, []byte) + Value func() *big.Int + type Database interface + AddBalance func(common.Address, *big.Int) + AddRefund func(*big.Int) + CreateAccount func(common.Address) Account + Exist func(common.Address) bool + GetAccount func(common.Address) Account + GetBalance func(common.Address) *big.Int + GetCode func(common.Address) []byte + GetCodeHash func(common.Address) common.Hash + GetCodeSize func(common.Address) int + GetNonce func(common.Address) uint64 + GetRefund func() *big.Int + GetState func(common.Address, common.Hash) common.Hash + HasSuicided func(common.Address) bool + SetCode func(common.Address, []byte) + SetNonce func(common.Address, uint64) + SetState func(common.Address, common.Hash, common.Hash) + Suicide func(common.Address) bool + type EVM struct + func New(env Environment, cfg Config) *EVM + func (evm *EVM) Run(contract *Contract, input []byte) (ret []byte, err error) + func (evm *EVM) RunPrecompiled(p *PrecompiledAccount, input []byte, contract *Contract) (ret []byte, err error) + type Environment interface + AddLog func(*Log) + BlockNumber func() *big.Int + Call func(me ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) + CallCode func(me ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) + CanTransfer func(from common.Address, balance *big.Int) bool + Coinbase func() common.Address + Create func(me ContractRef, data []byte, gas, price, value *big.Int) ([]byte, common.Address, error) + Db func() Database + DelegateCall func(me ContractRef, addr common.Address, data []byte, gas, price *big.Int) ([]byte, error) + Depth func() int + Difficulty func() *big.Int + GasLimit func() *big.Int + GetHash func(uint64) common.Hash + Origin func() common.Address + RevertToSnapshot func(int) + RuleSet func() RuleSet + SetDepth func(i int) + SnapshotDatabase func() int + Time func() *big.Int + Transfer func(from, to Account, amount *big.Int) + Vm func() Vm + type Log struct + Address common.Address + BlockHash common.Hash + BlockNumber uint64 + Data []byte + Index uint + Topics []common.Hash + TxHash common.Hash + TxIndex uint + func NewLog(address common.Address, topics []common.Hash, data []byte, number uint64) *Log + func (l *Log) DecodeRLP(s *rlp.Stream) error + func (l *Log) EncodeRLP(w io.Writer) error + func (l *Log) String() string + func (r *Log) MarshalJSON() ([]byte, error) + type LogConfig struct + Collector StructLogCollector + DisableMemory bool + DisableStack bool + DisableStorage bool + FullStorage bool + type LogForStorage Log + type Logger struct + type Logs []*Log + type Memory struct + func NewMemory() *Memory + func (m *Memory) Data() []byte + func (m *Memory) Len() int + func (m *Memory) Print() + func (m *Memory) Resize(size uint64) + func (m *Memory) Set(offset, size uint64, value []byte) + func (self *Memory) Get(offset, size int64) (cpy []byte) + func (self *Memory) GetPtr(offset, size int64) []byte + type OpCode byte + const ADD + const ADDMOD + const ADDRESS + const AND + const BALANCE + const BLOCKHASH + const BYTE + const CALL + const CALLCODE + const CALLDATACOPY + const CALLDATALOAD + const CALLDATASIZE + const CALLER + const CALLVALUE + const CODECOPY + const CODESIZE + const COINBASE + const CREATE + const DELEGATECALL + const DIFFICULTY + const DIV + const DUP + const DUP1 + const DUP10 + const DUP11 + const DUP12 + const DUP13 + const DUP14 + const DUP15 + const DUP16 + const DUP2 + const DUP3 + const DUP4 + const DUP5 + const DUP6 + const DUP7 + const DUP8 + const DUP9 + const EQ + const EXP + const EXTCODECOPY + const EXTCODESIZE + const GAS + const GASLIMIT + const GASPRICE + const GT + const ISZERO + const JUMP + const JUMPDEST + const JUMPI + const LOG0 + const LOG1 + const LOG2 + const LOG3 + const LOG4 + const LT + const MLOAD + const MOD + const MSIZE + const MSTORE + const MSTORE8 + const MUL + const MULMOD + const NOT + const NUMBER + const OR + const ORIGIN + const PC + const POP + const PUSH + const PUSH1 + const PUSH10 + const PUSH11 + const PUSH12 + const PUSH13 + const PUSH14 + const PUSH15 + const PUSH16 + const PUSH17 + const PUSH18 + const PUSH19 + const PUSH2 + const PUSH20 + const PUSH21 + const PUSH22 + const PUSH23 + const PUSH24 + const PUSH25 + const PUSH26 + const PUSH27 + const PUSH28 + const PUSH29 + const PUSH3 + const PUSH30 + const PUSH31 + const PUSH32 + const PUSH4 + const PUSH5 + const PUSH6 + const PUSH7 + const PUSH8 + const PUSH9 + const RETURN + const SDIV + const SGT + const SHA3 + const SIGNEXTEND + const SLOAD + const SLT + const SMOD + const SSTORE + const STOP + const SUB + const SUICIDE + const SWAP + const SWAP1 + const SWAP10 + const SWAP11 + const SWAP12 + const SWAP13 + const SWAP14 + const SWAP15 + const SWAP16 + const SWAP2 + const SWAP3 + const SWAP4 + const SWAP5 + const SWAP6 + const SWAP7 + const SWAP8 + const SWAP9 + const TIMESTAMP + const XOR + func Parse(code []byte) (opcodes []OpCode) + func StringToOp(str string) OpCode + func (o OpCode) String() string + func (op OpCode) IsPush() bool + func (op OpCode) IsStaticJump() bool + type PrecompiledAccount struct + Gas func(l int) *big.Int + func (self PrecompiledAccount) Call(in []byte) []byte + type Program struct + Id common.Hash + func GetProgram(id common.Hash) *Program + func NewProgram(code []byte) *Program + type RuleSet interface + IsHomestead func(*big.Int) bool + type Storage map[common.Hash]common.Hash + func (self Storage) Copy() Storage + type StructLog struct + Depth int + Err error + Gas *big.Int + GasCost *big.Int + Memory []byte + Op OpCode + Pc uint64 + Stack []*big.Int + Storage map[common.Hash]common.Hash + type StructLogCollector interface + AddStructLog func(StructLog) + type Type byte + const JitVmTy + const MaxVmTy + const StdVmTy + type VirtualMachine interface + Run func(*Contract, []byte) ([]byte, error) + func NewJitVm(env Environment) VirtualMachine + type Vm interface + Run func(c *Contract, in []byte) ([]byte, error) v1.4.9-2 May 28, 2017 v1.4.9-1 May 4, 2017