emulator

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2022 License: Apache-2.0, BSD-2-Clause Imports: 21 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Init

func Init(store kv.KVStore, chainID uint16, blockKeepAmount int32, gasLimit, timestamp uint64, alloc core.GenesisAlloc, getBalance BalanceFunc)

Init initializes the EVM state with the provided genesis allocation parameters

Types

type BalanceFunc

type BalanceFunc func(addr common.Address) *big.Int

type BlockchainDB

type BlockchainDB struct {
	// contains filtered or unexported fields
}

BlockchainDB contains logic for storing a fake blockchain (more like a list of blocks), intended for satisfying EVM tools that depend on the concept of a block.

func NewBlockchainDB

func NewBlockchainDB(store kv.KVStore) *BlockchainDB

func (*BlockchainDB) AddTransaction

func (bc *BlockchainDB) AddTransaction(tx *types.Transaction, receipt *types.Receipt)

func (*BlockchainDB) GetBlockByHash

func (bc *BlockchainDB) GetBlockByHash(hash common.Hash) *types.Block

func (*BlockchainDB) GetBlockByNumber

func (bc *BlockchainDB) GetBlockByNumber(blockNumber uint64) *types.Block

func (*BlockchainDB) GetBlockHashByBlockNumber

func (bc *BlockchainDB) GetBlockHashByBlockNumber(blockNumber uint64) common.Hash

func (*BlockchainDB) GetBlockIndexByTxHash

func (bc *BlockchainDB) GetBlockIndexByTxHash(txHash common.Hash) uint32

func (*BlockchainDB) GetBlockNumberByBlockHash

func (bc *BlockchainDB) GetBlockNumberByBlockHash(hash common.Hash) (uint64, bool)

func (*BlockchainDB) GetBlockNumberByTxHash

func (bc *BlockchainDB) GetBlockNumberByTxHash(txHash common.Hash) (uint64, bool)

func (*BlockchainDB) GetChainID

func (bc *BlockchainDB) GetChainID() uint16

func (*BlockchainDB) GetCurrentBlock

func (bc *BlockchainDB) GetCurrentBlock() *types.Block

func (*BlockchainDB) GetGasLimit

func (bc *BlockchainDB) GetGasLimit() uint64

func (*BlockchainDB) GetHeaderByBlockNumber

func (bc *BlockchainDB) GetHeaderByBlockNumber(blockNumber uint64) *types.Header

func (*BlockchainDB) GetHeaderByHash

func (bc *BlockchainDB) GetHeaderByHash(hash common.Hash) *types.Header

func (*BlockchainDB) GetLatestPendingReceipt

func (bc *BlockchainDB) GetLatestPendingReceipt() *types.Receipt

func (*BlockchainDB) GetNumber

func (bc *BlockchainDB) GetNumber() uint64

func (*BlockchainDB) GetPendingBlockNumber

func (bc *BlockchainDB) GetPendingBlockNumber() uint64

func (*BlockchainDB) GetPendingHeader

func (bc *BlockchainDB) GetPendingHeader() *types.Header

func (*BlockchainDB) GetReceiptByBlockNumberAndIndex

func (bc *BlockchainDB) GetReceiptByBlockNumberAndIndex(blockNumber uint64, i uint32) *types.Receipt

func (*BlockchainDB) GetReceiptByTxHash

func (bc *BlockchainDB) GetReceiptByTxHash(txHash common.Hash) *types.Receipt

func (*BlockchainDB) GetReceiptsByBlockNumber

func (bc *BlockchainDB) GetReceiptsByBlockNumber(blockNumber uint64) []*types.Receipt

func (*BlockchainDB) GetTimestampByBlockNumber

func (bc *BlockchainDB) GetTimestampByBlockNumber(blockNumber uint64) uint64

func (*BlockchainDB) GetTransactionByBlockNumberAndIndex

func (bc *BlockchainDB) GetTransactionByBlockNumberAndIndex(blockNumber uint64, i uint32) *types.Transaction

func (*BlockchainDB) GetTransactionByHash

func (bc *BlockchainDB) GetTransactionByHash(txHash common.Hash) *types.Transaction

func (*BlockchainDB) GetTransactionsByBlockNumber

func (bc *BlockchainDB) GetTransactionsByBlockNumber(blockNumber uint64) []*types.Transaction

func (*BlockchainDB) Init

func (bc *BlockchainDB) Init(chainID uint16, keepAmount int32, gasLimit, timestamp uint64)

func (*BlockchainDB) Initialized

func (bc *BlockchainDB) Initialized() bool

func (*BlockchainDB) MintBlock

func (bc *BlockchainDB) MintBlock(timestamp uint64)

func (*BlockchainDB) SetChainID

func (bc *BlockchainDB) SetChainID(chainID uint16)

func (*BlockchainDB) SetGasLimit

func (bc *BlockchainDB) SetGasLimit(gas uint64)

func (*BlockchainDB) SetKeepAmount

func (bc *BlockchainDB) SetKeepAmount(keepAmount int32)

type BufferedStateDB

type BufferedStateDB struct {
	// contains filtered or unexported fields
}

BufferedStateDB is a wrapper for StateDB that writes all mutations into an in-memory buffer, leaving the original state unmodified until the mutations are applied manually with Commit().

func NewBufferedStateDB

func NewBufferedStateDB(base *StateDB) *BufferedStateDB

func (*BufferedStateDB) Commit

func (b *BufferedStateDB) Commit()

func (*BufferedStateDB) StateDB

func (b *BufferedStateDB) StateDB() *StateDB

type EVMEmulator

type EVMEmulator struct {
	// contains filtered or unexported fields
}

func NewEVMEmulator

func NewEVMEmulator(store kv.KVStore, timestamp uint64, magicContract vm.ISCContract, getBalance BalanceFunc) *EVMEmulator

func (*EVMEmulator) BlockchainDB

func (e *EVMEmulator) BlockchainDB() *BlockchainDB

func (*EVMEmulator) CallContract

func (e *EVMEmulator) CallContract(call ethereum.CallMsg, gasBurnEnable func(bool)) (*core.ExecutionResult, error)

CallContract executes a contract call, without committing changes to the state

func (*EVMEmulator) ChainContext

func (e *EVMEmulator) ChainContext() core.ChainContext

func (*EVMEmulator) FilterLogs

func (e *EVMEmulator) FilterLogs(query *ethereum.FilterQuery) []*types.Log

FilterLogs executes a log filter operation, blocking during execution and returning all the results in one batch.

func (*EVMEmulator) GasLimit

func (e *EVMEmulator) GasLimit() uint64

func (*EVMEmulator) MintBlock

func (e *EVMEmulator) MintBlock()

func (*EVMEmulator) SendTransaction

func (e *EVMEmulator) SendTransaction(tx *types.Transaction, gasBurnEnable func(bool)) (*types.Receipt, *core.ExecutionResult, error)

func (*EVMEmulator) Signer

func (e *EVMEmulator) Signer() types.Signer

func (*EVMEmulator) StateDB

func (e *EVMEmulator) StateDB() *StateDB

type StateDB

type StateDB struct {
	// contains filtered or unexported fields
}

StateDB implements vm.StateDB with a kv.KVStore as backend. The Ethereum account balance is tied to the L1 balance, and immutable from EVM. (Instead, funds are supposed to be manipulated via the ISC sandbox).

func NewStateDB

func NewStateDB(store kv.KVStore, getBalance BalanceFunc) *StateDB

func (*StateDB) AddAddressToAccessList

func (s *StateDB) AddAddressToAccessList(addr common.Address)

AddAddressToAccessList adds the given address to the access list. This operation is safe to perform even if the feature/fork is not active yet

func (*StateDB) AddBalance

func (s *StateDB) AddBalance(addr common.Address, amount *big.Int)

func (*StateDB) AddLog

func (s *StateDB) AddLog(log *types.Log)

func (*StateDB) AddPreimage

func (s *StateDB) AddPreimage(common.Hash, []byte)

func (*StateDB) AddRefund

func (s *StateDB) AddRefund(n uint64)

func (*StateDB) AddSlotToAccessList

func (s *StateDB) AddSlotToAccessList(addr common.Address, slot common.Hash)

AddSlotToAccessList adds the given (address,slot) to the access list. This operation is safe to perform even if the feature/fork is not active yet

func (*StateDB) AddressInAccessList

func (s *StateDB) AddressInAccessList(addr common.Address) bool

func (*StateDB) Buffered

func (s *StateDB) Buffered() *BufferedStateDB

func (*StateDB) CreateAccount

func (s *StateDB) CreateAccount(addr common.Address)

func (*StateDB) Empty

func (s *StateDB) Empty(addr common.Address) bool

Empty returns whether the given account is empty. Empty is defined according to EIP161 (balance = nonce = code = 0).

func (*StateDB) Exist

func (s *StateDB) Exist(addr common.Address) bool

Exist reports whether the given account exists in state. Notably this should also return true for suicided accounts.

func (*StateDB) ForEachStorage

func (s *StateDB) ForEachStorage(common.Address, func(common.Hash, common.Hash) bool) error

func (*StateDB) GetBalance

func (s *StateDB) GetBalance(addr common.Address) *big.Int

func (*StateDB) GetCode

func (s *StateDB) GetCode(addr common.Address) []byte

func (*StateDB) GetCodeHash

func (s *StateDB) GetCodeHash(addr common.Address) common.Hash

func (*StateDB) GetCodeSize

func (s *StateDB) GetCodeSize(addr common.Address) int

func (*StateDB) GetCommittedState

func (s *StateDB) GetCommittedState(addr common.Address, key common.Hash) common.Hash

func (*StateDB) GetLogs

func (s *StateDB) GetLogs(hash common.Hash) []*types.Log

func (*StateDB) GetNonce

func (s *StateDB) GetNonce(addr common.Address) uint64

func (*StateDB) GetRefund

func (s *StateDB) GetRefund() uint64

func (*StateDB) GetState

func (s *StateDB) GetState(addr common.Address, key common.Hash) common.Hash

func (*StateDB) HasSuicided

func (s *StateDB) HasSuicided(common.Address) bool

func (*StateDB) PrepareAccessList

func (s *StateDB) PrepareAccessList(sender common.Address, dest *common.Address, precompiles []common.Address, txAccesses types.AccessList)

func (*StateDB) RevertToSnapshot

func (s *StateDB) RevertToSnapshot(int)

func (*StateDB) SetCode

func (s *StateDB) SetCode(addr common.Address, code []byte)

func (*StateDB) SetNonce

func (s *StateDB) SetNonce(addr common.Address, n uint64)

func (*StateDB) SetState

func (s *StateDB) SetState(addr common.Address, key, value common.Hash)

func (*StateDB) SlotInAccessList

func (s *StateDB) SlotInAccessList(addr common.Address, slot common.Hash) (addressOk, slotOk bool)

func (*StateDB) Snapshot

func (s *StateDB) Snapshot() int

func (*StateDB) SubBalance

func (s *StateDB) SubBalance(addr common.Address, amount *big.Int)

func (*StateDB) SubRefund

func (s *StateDB) SubRefund(n uint64)

func (*StateDB) Suicide

func (s *StateDB) Suicide(addr common.Address) bool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL