import "github.com/iotexproject/iotex-core/action/protocol/execution/evm"
contract.go evm.go evmstatedbadapter.go
const ( // CodeKVNameSpace is the bucket name for code CodeKVNameSpace = "Code" // ContractKVNameSpace is the bucket name for contract data storage ContractKVNameSpace = "Contract" // PreimageKVNameSpace is the bucket name for preimage data storage PreimageKVNameSpace = "Preimage" // PruneKVNameSpace is the bucket name for entries to be pruned PruneKVNameSpace = "cp" )
var ( // ErrInconsistentNonce is the error that the nonce is different from executor's nonce ErrInconsistentNonce = errors.New("Nonce is not identical to executor nonce") )
CanTransfer checks whether the from account has enough balance
func ExecuteContract( ctx context.Context, sm protocol.StateManager, execution *action.Execution, getBlockHash GetBlockHash, ) ([]byte, *action.Receipt, error)
ExecuteContract processes a transfer which contains a contract
MakeTransfer transfers account
type Contract interface { GetCommittedState(hash.Hash256) ([]byte, error) GetState(hash.Hash256) ([]byte, error) SetState(hash.Hash256, []byte) error GetCode() ([]byte, error) SetCode(hash.Hash256, []byte) SelfState() *state.Account Commit() error RootHash() hash.Hash256 LoadRoot() error Iterator() (trie.Iterator, error) Snapshot() Contract }
Contract is a special type of account with code and storage trie.
ContractOption set contract construction param
func HistoryRetentionOption(height uint64) ContractOption
HistoryRetentionOption creates contract with history
GetBlockHash gets block hash by height
type Params struct {
// contains filtered or unexported fields
}
Params is the context and parameters
func NewParams( ctx context.Context, execution *action.Execution, stateDB *StateDBAdapter, getBlockHash GetBlockHash, ) (*Params, error)
NewParams creates a new context for use in the EVM.
type StateDBAdapter struct {
// contains filtered or unexported fields
}
StateDBAdapter represents the state db adapter for evm to access iotx blockchain
func NewStateDBAdapter( sm protocol.StateManager, blockHeight uint64, notFixTopicCopyBug bool, executionHash hash.Hash256, opts ...StateDBOption, ) *StateDBAdapter
NewStateDBAdapter creates a new state db with iotex blockchain
AccountState returns an account state
AddBalance adds balance to account
func (stateDB *StateDBAdapter) AddLog(evmLog *types.Log)
AddLog adds log
func (stateDB *StateDBAdapter) AddPreimage(hash common.Hash, preimage []byte)
AddPreimage adds the preimage of a hash
func (stateDB *StateDBAdapter) AddRefund(gas uint64)
AddRefund adds refund
func (stateDB *StateDBAdapter) CommitContracts() error
CommitContracts commits contract code to db and update pending contract account changes to trie
func (stateDB *StateDBAdapter) CreateAccount(evmAddr common.Address)
CreateAccount creates an account in iotx blockchain
func (stateDB *StateDBAdapter) Empty(evmAddr common.Address) bool
Empty returns true if the the contract is empty
func (stateDB *StateDBAdapter) Error() error
Error returns the first stored error during evm contract execution
func (stateDB *StateDBAdapter) Exist(evmAddr common.Address) bool
Exist checks the existence of an address
func (stateDB *StateDBAdapter) ForEachStorage(addr common.Address, cb func(common.Hash, common.Hash) bool) error
ForEachStorage loops each storage
GetBalance gets the balance of account
func (stateDB *StateDBAdapter) GetCode(evmAddr common.Address) []byte
GetCode returns contract's code
GetCodeHash returns contract's code hash
func (stateDB *StateDBAdapter) GetCodeSize(evmAddr common.Address) int
GetCodeSize gets the code size saved in hash
func (stateDB *StateDBAdapter) GetCommittedState(evmAddr common.Address, k common.Hash) common.Hash
GetCommittedState gets committed state
func (stateDB *StateDBAdapter) GetNonce(evmAddr common.Address) uint64
GetNonce gets the nonce of account
func (stateDB *StateDBAdapter) GetRefund() uint64
GetRefund gets refund
GetState gets state
func (stateDB *StateDBAdapter) HasSuicided(evmAddr common.Address) bool
HasSuicided returns whether the contract has been killed
func (stateDB *StateDBAdapter) Logs() []*action.Log
Logs returns the logs
func (stateDB *StateDBAdapter) RevertToSnapshot(snapshot int)
RevertToSnapshot reverts the state factory to the state at a given snapshot
func (stateDB *StateDBAdapter) SetCode(evmAddr common.Address, code []byte)
SetCode sets contract's code
func (stateDB *StateDBAdapter) SetNonce(evmAddr common.Address, nonce uint64)
SetNonce sets the nonce of account
SetState sets state
func (stateDB *StateDBAdapter) Snapshot() int
Snapshot returns the snapshot id
SubBalance subtracts balance from account
func (stateDB *StateDBAdapter) SubRefund(gas uint64)
SubRefund subtracts refund
func (stateDB *StateDBAdapter) Suicide(evmAddr common.Address) bool
Suicide kills the contract
type StateDBOption func(*StateDBAdapter) error
StateDBOption set StateDBAdapter construction param
func SaveHistoryOption() StateDBOption
SaveHistoryOption creates StateDBAdapter with history
Package evm imports 27 packages (graph) and is imported by 1 packages. Updated 2019-12-06. Refresh now. Tools for package owners.