evm

package
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Oct 23, 2019 License: Apache-2.0 Imports: 26 Imported by: 4

Documentation

Index

Constants

View Source
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"
)

Variables

View Source
var (

	// ErrInconsistentNonce is the error that the nonce is different from executor's nonce
	ErrInconsistentNonce = errors.New("Nonce is not identical to executor nonce")
)

Functions

func CanTransfer

func CanTransfer(db vm.StateDB, fromHash common.Address, balance *big.Int) bool

CanTransfer checks whether the from account has enough balance

func ExecuteContract

func ExecuteContract(
	ctx context.Context,
	sm protocol.StateManager,
	execution *action.Execution,
	cm protocol.ChainManager,
	hu config.HeightUpgrade,
) ([]byte, *action.Receipt, error)

ExecuteContract processes a transfer which contains a contract

func GetHashFn

func GetHashFn(stateDB *StateDBAdapter) func(n uint64) common.Hash

GetHashFn returns a GetHashFunc which retrieves hashes by number

func MakeTransfer

func MakeTransfer(db vm.StateDB, fromHash, toHash common.Address, amount *big.Int)

MakeTransfer transfers account

Types

type Contract

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.

type Params

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

Params is the context and parameters

func NewParams

func NewParams(
	raCtx protocol.RunActionsCtx,
	execution *action.Execution,
	stateDB *StateDBAdapter,
	hu config.HeightUpgrade,
) (*Params, error)

NewParams creates a new context for use in the EVM.

type StateDBAdapter

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

StateDBAdapter represents the state db adapter for evm to access iotx blockchain

func NewStateDBAdapter

func NewStateDBAdapter(
	cm protocol.ChainManager,
	sm protocol.StateManager,
	hu config.HeightUpgrade,
	blockHeight uint64,
	executionHash hash.Hash256,
) *StateDBAdapter

NewStateDBAdapter creates a new state db with iotex blockchain

func (*StateDBAdapter) AccountState

func (stateDB *StateDBAdapter) AccountState(encodedAddr string) (*state.Account, error)

AccountState returns an account state

func (*StateDBAdapter) AddBalance

func (stateDB *StateDBAdapter) AddBalance(evmAddr common.Address, amount *big.Int)

AddBalance adds balance to account

func (*StateDBAdapter) AddLog

func (stateDB *StateDBAdapter) AddLog(evmLog *types.Log)

AddLog adds log

func (*StateDBAdapter) AddPreimage

func (stateDB *StateDBAdapter) AddPreimage(hash common.Hash, preimage []byte)

AddPreimage adds the preimage of a hash

func (*StateDBAdapter) AddRefund

func (stateDB *StateDBAdapter) AddRefund(gas uint64)

AddRefund adds refund

func (*StateDBAdapter) CommitContracts added in v0.5.0

func (stateDB *StateDBAdapter) CommitContracts() error

CommitContracts commits contract code to db and update pending contract account changes to trie

func (*StateDBAdapter) CreateAccount

func (stateDB *StateDBAdapter) CreateAccount(evmAddr common.Address)

CreateAccount creates an account in iotx blockchain

func (*StateDBAdapter) Empty

func (stateDB *StateDBAdapter) Empty(evmAddr common.Address) bool

Empty returns true if the the contract is empty

func (*StateDBAdapter) Error

func (stateDB *StateDBAdapter) Error() error

Error returns the first stored error during evm contract execution

func (*StateDBAdapter) Exist

func (stateDB *StateDBAdapter) Exist(evmAddr common.Address) bool

Exist checks the existence of an address

func (*StateDBAdapter) ForEachStorage

func (stateDB *StateDBAdapter) ForEachStorage(addr common.Address, cb func(common.Hash, common.Hash) bool) error

ForEachStorage loops each storage

func (*StateDBAdapter) GetBalance

func (stateDB *StateDBAdapter) GetBalance(evmAddr common.Address) *big.Int

GetBalance gets the balance of account

func (*StateDBAdapter) GetCode

func (stateDB *StateDBAdapter) GetCode(evmAddr common.Address) []byte

GetCode returns contract's code

func (*StateDBAdapter) GetCodeHash

func (stateDB *StateDBAdapter) GetCodeHash(evmAddr common.Address) common.Hash

GetCodeHash returns contract's code hash

func (*StateDBAdapter) GetCodeSize

func (stateDB *StateDBAdapter) GetCodeSize(evmAddr common.Address) int

GetCodeSize gets the code size saved in hash

func (*StateDBAdapter) GetCommittedState added in v0.8.1

func (stateDB *StateDBAdapter) GetCommittedState(evmAddr common.Address, k common.Hash) common.Hash

GetCommittedState gets committed state

func (*StateDBAdapter) GetNonce

func (stateDB *StateDBAdapter) GetNonce(evmAddr common.Address) uint64

GetNonce gets the nonce of account

func (*StateDBAdapter) GetRefund

func (stateDB *StateDBAdapter) GetRefund() uint64

GetRefund gets refund

func (*StateDBAdapter) GetState

func (stateDB *StateDBAdapter) GetState(evmAddr common.Address, k common.Hash) common.Hash

GetState gets state

func (*StateDBAdapter) HasSuicided

func (stateDB *StateDBAdapter) HasSuicided(evmAddr common.Address) bool

HasSuicided returns whether the contract has been killed

func (*StateDBAdapter) Logs

func (stateDB *StateDBAdapter) Logs() []*action.Log

Logs returns the logs

func (*StateDBAdapter) RevertToSnapshot

func (stateDB *StateDBAdapter) RevertToSnapshot(snapshot int)

RevertToSnapshot reverts the state factory to the state at a given snapshot

func (*StateDBAdapter) SetCode

func (stateDB *StateDBAdapter) SetCode(evmAddr common.Address, code []byte)

SetCode sets contract's code

func (*StateDBAdapter) SetNonce

func (stateDB *StateDBAdapter) SetNonce(evmAddr common.Address, nonce uint64)

SetNonce sets the nonce of account

func (*StateDBAdapter) SetState

func (stateDB *StateDBAdapter) SetState(evmAddr common.Address, k, v common.Hash)

SetState sets state

func (*StateDBAdapter) Snapshot

func (stateDB *StateDBAdapter) Snapshot() int

Snapshot returns the snapshot id

func (*StateDBAdapter) SubBalance

func (stateDB *StateDBAdapter) SubBalance(evmAddr common.Address, amount *big.Int)

SubBalance subtracts balance from account

func (*StateDBAdapter) SubRefund added in v0.8.1

func (stateDB *StateDBAdapter) SubRefund(gas uint64)

SubRefund subtracts refund

func (*StateDBAdapter) Suicide

func (stateDB *StateDBAdapter) Suicide(evmAddr common.Address) bool

Suicide kills the contract

Jump to

Keyboard shortcuts

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