Documentation ¶
Index ¶
- Constants
- Variables
- func Disassemble(script []byte) (asm []string)
- func IsDepthErr(err error) bool
- func IsOOGErr(err error) bool
- func IsStack(err error) bool
- func PrecompiledContracts() map[string]*PrecompiledAccount
- func Transfer(from, to Account, amount *big.Int) error
- func UseGas(gas, amount *big.Int) bool
- type Account
- type Address
- type Context
- func (c *Context) Address() common.Address
- func (c *Context) GetByte(n *big.Int) byte
- func (c *Context) GetOp(n *big.Int) OpCode
- func (c *Context) Return(ret []byte) []byte
- func (c *Context) ReturnGas(gas, price *big.Int)
- func (self *Context) SetCallCode(addr *common.Address, code []byte)
- func (self *Context) SetCode(code []byte)
- func (c *Context) UseGas(gas *big.Int) (ok bool)
- type ContextRef
- type DepthError
- type Environment
- type Log
- type Memory
- type OpCode
- type OutOfGasError
- type PrecompiledAccount
- type StackError
- type Type
- type VirtualMachine
- type Vm
- func (self *Vm) Endl() VirtualMachine
- func (self *Vm) Env() Environment
- func (self *Vm) Printf(format string, v ...interface{}) VirtualMachine
- func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error)
- func (self *Vm) RunPrecompiled(p *PrecompiledAccount, callData []byte, context *Context) (ret []byte, err error)
Constants ¶
View Source
const ( StdVmTy Type = iota JitVmTy MaxVmTy LogTyPretty byte = 0x1 LogTyDiff byte = 0x2 )
Variables ¶
View Source
var ( Pow256 = common.BigPow(2, 256) U256 = common.U256 S256 = common.S256 Zero = common.Big0 One = common.Big1 )
View Source
var ( GasQuickStep = big.NewInt(2) GasFastestStep = big.NewInt(3) GasFastStep = big.NewInt(5) GasMidStep = big.NewInt(8) GasSlowStep = big.NewInt(10) GasExtStep = big.NewInt(20) GasReturn = big.NewInt(0) GasStop = big.NewInt(0) GasContractByte = big.NewInt(200) )
View Source
var Debug bool
Global Debug flag indicating Debug VM (full logging)
View Source
var Precompiled = PrecompiledContracts()
Functions ¶
func Disassemble ¶ added in v0.9.17
func IsDepthErr ¶ added in v0.9.17
func PrecompiledContracts ¶ added in v0.9.17
func PrecompiledContracts() map[string]*PrecompiledAccount
XXX Could set directly. Testing requires resetting and setting of pre compiled contracts.
Types ¶
type Context ¶
type Context struct { Code []byte CodeAddr *common.Address Gas, UsedGas, Price *big.Int Args []byte // contains filtered or unexported fields }
func NewContext ¶ added in v0.9.17
func NewContext(caller ContextRef, object ContextRef, value, gas, price *big.Int) *Context
Create a new context for the given data items
func (*Context) SetCallCode ¶ added in v0.9.17
type ContextRef ¶ added in v0.9.17
type DepthError ¶ added in v0.9.17
type DepthError struct{}
func (DepthError) Error ¶ added in v0.9.17
func (self DepthError) Error() string
type Environment ¶ added in v0.9.17
type Environment interface { State() *state.StateDB Origin() common.Address BlockNumber() *big.Int GetHash(n uint64) common.Hash Coinbase() common.Address Time() int64 Difficulty() *big.Int GasLimit() *big.Int Transfer(from, to Account, amount *big.Int) error AddLog(*state.Log) VmType() Type Depth() int SetDepth(i int) Call(me ContextRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) CallCode(me ContextRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) Create(me ContextRef, data []byte, gas, price, value *big.Int) ([]byte, error, ContextRef) }
type OpCode ¶
type OpCode byte
const ( // 0x0 range - arithmetic ops STOP OpCode = iota ADD MUL SUB DIV SDIV MOD SMOD ADDMOD MULMOD EXP SIGNEXTEND )
Op codes
const ( // 0x60 range PUSH1 OpCode = 0x60 + iota PUSH2 PUSH3 PUSH4 PUSH5 PUSH6 PUSH7 PUSH8 PUSH9 PUSH10 PUSH11 PUSH12 PUSH13 PUSH14 PUSH15 PUSH16 PUSH17 PUSH18 PUSH19 PUSH20 PUSH21 PUSH22 PUSH23 PUSH24 PUSH25 PUSH26 PUSH27 PUSH28 PUSH29 PUSH30 PUSH31 PUSH32 DUP1 DUP2 DUP3 DUP4 DUP5 DUP6 DUP7 DUP8 DUP9 DUP10 DUP11 DUP12 DUP13 DUP14 DUP15 DUP16 SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 SWAP10 SWAP11 SWAP12 SWAP13 SWAP14 SWAP15 SWAP16 )
type OutOfGasError ¶ added in v0.9.17
type OutOfGasError struct {
// contains filtered or unexported fields
}
func OOG ¶ added in v0.9.17
func OOG(req, has *big.Int) OutOfGasError
func (OutOfGasError) Error ¶ added in v0.9.17
func (self OutOfGasError) Error() string
type PrecompiledAccount ¶ added in v0.9.17
type PrecompiledAccount struct { Gas func(l int) *big.Int // contains filtered or unexported fields }
func (PrecompiledAccount) Call ¶ added in v0.9.17
func (self PrecompiledAccount) Call(in []byte) []byte
type StackError ¶ added in v0.9.17
type StackError struct {
// contains filtered or unexported fields
}
func StackErr ¶ added in v0.9.17
func StackErr(req, has int) StackError
func (StackError) Error ¶ added in v0.9.17
func (self StackError) Error() string
type VirtualMachine ¶ added in v0.9.17
type VirtualMachine interface { Env() Environment Run(context *Context, data []byte) ([]byte, error) Printf(string, ...interface{}) VirtualMachine Endl() VirtualMachine }
func NewJitVm ¶ added in v0.9.17
func NewJitVm(env Environment) VirtualMachine
func NewVm ¶ added in v0.9.17
func NewVm(env Environment) VirtualMachine
type Vm ¶ added in v0.9.17
type Vm struct { BreakPoints []int64 Stepping bool Fn string Recoverable bool // Will be called before the vm returns After func(*Context, error) // contains filtered or unexported fields }
func New ¶ added in v0.9.17
func New(env Environment) *Vm
func (*Vm) Endl ¶ added in v0.9.17
func (self *Vm) Endl() VirtualMachine
func (*Vm) Env ¶ added in v0.9.17
func (self *Vm) Env() Environment
func (*Vm) Printf ¶ added in v0.9.17
func (self *Vm) Printf(format string, v ...interface{}) VirtualMachine
func (*Vm) RunPrecompiled ¶ added in v0.9.17
Click to show internal directories.
Click to hide internal directories.