Documentation ¶
Index ¶
- Constants
- func Is64BitOverflow(word Word256) bool
- type Contract
- type EVM
- func (vm *EVM) Contract(code []byte) *Contract
- func (vm *EVM) Dispatch(acc *acm.Account) engine.Callable
- func (vm *EVM) Execute(st acmstate.ReaderWriter, blockchain engine.Blockchain, ...) ([]byte, error)
- func (vm *EVM) SetExternals(externals engine.Dispatcher)
- func (vm *EVM) SetLogger(logger *logging.Logger)
- func (vm *EVM) SetNonce(nonce []byte)
- type Memory
- type Options
- type Stack
- func (st *Stack) Dup(n int)
- func (st *Stack) Len() int
- func (st *Stack) Peek() Word256
- func (st *Stack) Pop() Word256
- func (st *Stack) Pop64() uint64
- func (st *Stack) PopAddress() crypto.Address
- func (st *Stack) PopBigInt() *big.Int
- func (st *Stack) PopBigIntSigned() *big.Int
- func (st *Stack) PopBytes() []byte
- func (st *Stack) Print(n int)
- func (st *Stack) Push(d Word256)
- func (st *Stack) Push64(i uint64)
- func (st *Stack) PushAddress(address crypto.Address)
- func (st *Stack) PushBigInt(bigInt *big.Int) Word256
- func (st *Stack) PushBytes(bz []byte)
- func (st *Stack) Swap(n int)
Constants ¶
const ( DataStackInitialCapacity = 1024 MaximumAllowedBlockLookBack = 256 )
Variables ¶
This section is empty.
Functions ¶
func Is64BitOverflow ¶
func Is64BitOverflow(word Word256) bool
Types ¶
type Contract ¶ added in v0.29.0
type Contract struct { *EVM // contains filtered or unexported fields }
type EVM ¶ added in v0.29.0
type EVM struct {
// contains filtered or unexported fields
}
func (*EVM) Execute ¶ added in v0.29.0
func (vm *EVM) Execute(st acmstate.ReaderWriter, blockchain engine.Blockchain, eventSink exec.EventSink, params engine.CallParams, code []byte) ([]byte, error)
Initiate an EVM call against the provided state pushing events to eventSink. code should contain the EVM bytecode, input the CallData (readable by CALLDATALOAD), value the amount of native token to transfer with the call an quantity metering the number of computational steps available to the execution according to the gas schedule.
func (*EVM) SetExternals ¶ added in v0.29.0
func (vm *EVM) SetExternals(externals engine.Dispatcher)
type Memory ¶
type Memory interface { // Read a value from the memory store starting at offset // (index of first byte will equal offset). The value will be returned as a // length-bytes byte slice. Returns an error if the memory cannot be read or // is not allocated. // // The value returned should be copy of any underlying memory, not a reference // to the underlying store. Read(offset, length *big.Int) []byte // Write a value to the memory starting at offset (the index of the first byte // written will equal offset). The value is provided as bytes to be written // consecutively to the memory store. Return an error if the memory cannot be // written or allocated. Write(offset *big.Int, value []byte) // Returns the current capacity of the memory. For dynamically allocating // memory this capacity can be used as a write offset that is guaranteed to be // unused. Solidity in particular makes this assumption when using MSIZE to // get the current allocated memory. Capacity() *big.Int }
Interface for a bounded linear memory indexed by a single *big.Int parameter for each byte in the memory.
func NewDynamicMemory ¶
Get a new DynamicMemory (note that although we take a maximumCapacity of uint64 we currently limit the maximum to int32 at runtime because we are using a single slice which we cannot guarantee to be indexable above int32 or all validators
type Options ¶ added in v0.29.0
type Options struct { MemoryProvider func(errors.Sink) Memory Natives *native.Natives Nonce []byte DebugOpcodes bool DumpTokens bool CallStackMaxDepth uint64 DataStackInitialCapacity uint64 DataStackMaxDepth uint64 Logger *logging.Logger }
Options are parameters that are generally stable across a burrow configuration. Defaults will be used for any zero values.
type Stack ¶
type Stack struct {
// contains filtered or unexported fields
}
Not goroutine safe
func (*Stack) PopAddress ¶ added in v0.23.0
func (*Stack) PopBigIntSigned ¶
func (*Stack) PushAddress ¶ added in v0.23.0
func (*Stack) PushBigInt ¶
Pushes the bigInt as a Word256 encoding negative values in 32-byte twos complement and returns the encoded result