Documentation ¶
Index ¶
- func Init(store kv.KVStore, chainID uint16, blockKeepAmount int32, ...)
- type BalanceFunc
- type BlockchainDB
- func (bc *BlockchainDB) AddTransaction(tx *types.Transaction, receipt *types.Receipt)
- func (bc *BlockchainDB) GetBlockByHash(hash common.Hash) *types.Block
- func (bc *BlockchainDB) GetBlockByNumber(blockNumber uint64) *types.Block
- func (bc *BlockchainDB) GetBlockHashByBlockNumber(blockNumber uint64) common.Hash
- func (bc *BlockchainDB) GetBlockIndexByTxHash(txHash common.Hash) uint32
- func (bc *BlockchainDB) GetBlockNumberByBlockHash(hash common.Hash) (uint64, bool)
- func (bc *BlockchainDB) GetBlockNumberByTxHash(txHash common.Hash) (uint64, bool)
- func (bc *BlockchainDB) GetChainID() uint16
- func (bc *BlockchainDB) GetCurrentBlock() *types.Block
- func (bc *BlockchainDB) GetGasLimit() uint64
- func (bc *BlockchainDB) GetHeaderByBlockNumber(blockNumber uint64) *types.Header
- func (bc *BlockchainDB) GetHeaderByHash(hash common.Hash) *types.Header
- func (bc *BlockchainDB) GetLatestPendingReceipt() *types.Receipt
- func (bc *BlockchainDB) GetNumber() uint64
- func (bc *BlockchainDB) GetPendingBlockNumber() uint64
- func (bc *BlockchainDB) GetPendingHeader() *types.Header
- func (bc *BlockchainDB) GetReceiptByBlockNumberAndIndex(blockNumber uint64, i uint32) *types.Receipt
- func (bc *BlockchainDB) GetReceiptByTxHash(txHash common.Hash) *types.Receipt
- func (bc *BlockchainDB) GetReceiptsByBlockNumber(blockNumber uint64) []*types.Receipt
- func (bc *BlockchainDB) GetTimestampByBlockNumber(blockNumber uint64) uint64
- func (bc *BlockchainDB) GetTransactionByBlockNumberAndIndex(blockNumber uint64, i uint32) *types.Transaction
- func (bc *BlockchainDB) GetTransactionByHash(txHash common.Hash) *types.Transaction
- func (bc *BlockchainDB) GetTransactionsByBlockNumber(blockNumber uint64) []*types.Transaction
- func (bc *BlockchainDB) Init(chainID uint16, keepAmount int32, gasLimit, timestamp uint64)
- func (bc *BlockchainDB) Initialized() bool
- func (bc *BlockchainDB) MintBlock(timestamp uint64)
- func (bc *BlockchainDB) SetChainID(chainID uint16)
- func (bc *BlockchainDB) SetGasLimit(gas uint64)
- func (bc *BlockchainDB) SetKeepAmount(keepAmount int32)
- type BufferedStateDB
- type EVMEmulator
- func (e *EVMEmulator) BlockchainDB() *BlockchainDB
- func (e *EVMEmulator) CallContract(call ethereum.CallMsg, gasBurnEnable func(bool)) (*core.ExecutionResult, error)
- func (e *EVMEmulator) ChainContext() core.ChainContext
- func (e *EVMEmulator) FilterLogs(query *ethereum.FilterQuery) []*types.Log
- func (e *EVMEmulator) GasLimit() uint64
- func (e *EVMEmulator) MintBlock()
- func (e *EVMEmulator) SendTransaction(tx *types.Transaction, gasBurnEnable func(bool)) (*types.Receipt, *core.ExecutionResult, error)
- func (e *EVMEmulator) Signer() types.Signer
- func (e *EVMEmulator) StateDB() *StateDB
- type StateDB
- func (s *StateDB) AddAddressToAccessList(addr common.Address)
- func (s *StateDB) AddBalance(addr common.Address, amount *big.Int)
- func (s *StateDB) AddLog(log *types.Log)
- func (s *StateDB) AddPreimage(common.Hash, []byte)
- func (s *StateDB) AddRefund(n uint64)
- func (s *StateDB) AddSlotToAccessList(addr common.Address, slot common.Hash)
- func (s *StateDB) AddressInAccessList(addr common.Address) bool
- func (s *StateDB) Buffered() *BufferedStateDB
- func (s *StateDB) CreateAccount(addr common.Address)
- func (s *StateDB) Empty(addr common.Address) bool
- func (s *StateDB) Exist(addr common.Address) bool
- func (s *StateDB) ForEachStorage(common.Address, func(common.Hash, common.Hash) bool) error
- func (s *StateDB) GetBalance(addr common.Address) *big.Int
- func (s *StateDB) GetCode(addr common.Address) []byte
- func (s *StateDB) GetCodeHash(addr common.Address) common.Hash
- func (s *StateDB) GetCodeSize(addr common.Address) int
- func (s *StateDB) GetCommittedState(addr common.Address, key common.Hash) common.Hash
- func (s *StateDB) GetLogs(hash common.Hash) []*types.Log
- func (s *StateDB) GetNonce(addr common.Address) uint64
- func (s *StateDB) GetRefund() uint64
- func (s *StateDB) GetState(addr common.Address, key common.Hash) common.Hash
- func (s *StateDB) HasSuicided(common.Address) bool
- func (s *StateDB) PrepareAccessList(sender common.Address, dest *common.Address, precompiles []common.Address, ...)
- func (s *StateDB) RevertToSnapshot(int)
- func (s *StateDB) SetCode(addr common.Address, code []byte)
- func (s *StateDB) SetNonce(addr common.Address, n uint64)
- func (s *StateDB) SetState(addr common.Address, key, value common.Hash)
- func (s *StateDB) SlotInAccessList(addr common.Address, slot common.Hash) (addressOk, slotOk bool)
- func (s *StateDB) Snapshot() int
- func (s *StateDB) SubBalance(addr common.Address, amount *big.Int)
- func (s *StateDB) SubRefund(n uint64)
- func (s *StateDB) Suicide(addr common.Address) bool
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 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 ¶
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) AddSlotToAccessList ¶
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 (*StateDB) Buffered ¶
func (s *StateDB) Buffered() *BufferedStateDB
func (*StateDB) CreateAccount ¶
func (*StateDB) Empty ¶
Empty returns whether the given account is empty. Empty is defined according to EIP161 (balance = nonce = code = 0).
func (*StateDB) Exist ¶
Exist reports whether the given account exists in state. Notably this should also return true for suicided accounts.