types

package
v0.19.9 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2021 License: Apache-2.0 Imports: 49 Imported by: 0

Documentation

Overview

Copyright 2017 The go-ethereum Authors This file is part of the go-ethereum library.

The go-ethereum library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The go-ethereum library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

Index

Constants

View Source
const (
	// bloomServiceThreads is the number of goroutines used globally by an Ethereum
	// instance to service bloombits lookups for all running filters.
	BloomServiceThreads = 16

	// bloomFilterThreads is the number of goroutines used locally per filter to
	// multiplex requests onto the global servicing goroutines.
	BloomFilterThreads = 3

	// bloomRetrievalBatch is the maximum number of bloom bit retrievals to service
	// in a single batch.
	BloomRetrievalBatch = 16

	// bloomRetrievalWait is the maximum time to wait for enough bloom bit requests
	// to accumulate request an entire batch (avoiding hysteresis).
	BloomRetrievalWait = time.Duration(0)

	// BloomBitsBlocks is the number of blocks a single bloom bit section vector
	// contains on the server side.
	BloomBitsBlocks uint64 = 4096
)
View Source
const (
	EventTypeEthermint  = TypeMsgEthermint
	EventTypeEthereumTx = TypeMsgEthereumTx

	AttributeKeyContractAddress = "contract"
	AttributeKeyRecipient       = "recipient"
	AttributeValueCategory      = ModuleName
)

Evm module events

View Source
const (
	// ModuleName string name of module
	ModuleName = "evm"

	// StoreKey key for ethereum storage data, account code (StateDB) or block
	// related data for Web3.
	// The EVM module should use a prefix store.
	StoreKey = ModuleName

	// RouterKey uses module name for routing
	RouterKey = ModuleName
)
View Source
const (
	// TypeMsgEthereumTx defines the type string of an Ethereum tranasction
	TypeMsgEthereumTx = "ethereum"
	// TypeMsgEthermint defines the type string of Ethermint message
	TypeMsgEthermint = "ethermint"
)

message type and route constants

View Source
const (
	// DefaultParamspace for params keeper
	DefaultParamspace       = ModuleName
	DefaultMaxGasLimitPerTx = 30000000
)
View Source
const (
	QueryBalance       = "balance"
	QueryBlockNumber   = "blockNumber"
	QueryStorage       = "storage"
	QueryStorageByKey  = "storageKey"
	QueryCode          = "code"
	QueryCodeByHash    = "codeHash"
	QueryNonce         = "nonce"
	QueryHashToHeight  = "hashToHeight"
	QueryBloom         = "bloom"
	QueryAccount       = "account"
	QueryExportAccount = "exportAccount"
	// QueryParameters defines 	QueryParameters = "params" query route path
	QueryParameters                  = "params"
	QueryHeightToHash                = "heightToHash"
	QuerySection                     = "section"
	QueryContractDeploymentWhitelist = "contract-deployment-whitelist"
	QueryContractBlockedList         = "contract-blocked-list"
)

Supported endpoints

View Source
const (
	DefaultCodespace string = ModuleName
)

NOTE: We can't use 1 since that error code is reserved for internal errors.

View Source
const (
	FlagEnableBloomFilter = "enable-bloom-filter"
)

Variables

View Source
var (
	// ErrInvalidState returns an error resulting from an invalid Storage State.
	ErrInvalidState = sdkerrors.Register(ModuleName, 2, "invalid storage state")

	// ErrChainConfigNotFound returns an error if the chain config cannot be found on the store.
	ErrChainConfigNotFound = sdkerrors.Register(ModuleName, 3, "chain configuration not found")

	// ErrInvalidChainConfig returns an error resulting from an invalid ChainConfig.
	ErrInvalidChainConfig = sdkerrors.Register(ModuleName, 4, "invalid chain configuration")

	// ErrCreateDisabled returns an error if the EnableCreate parameter is false.
	ErrCreateDisabled = sdkerrors.Register(ModuleName, 5, "EVM Create operation is disabled")

	// ErrCallDisabled returns an error if the EnableCall parameter is false.
	ErrCallDisabled = sdkerrors.Register(ModuleName, 6, "EVM Call operation is disabled")

	// ErrKeyNotFound returns an error if the target key not found in database.
	ErrKeyNotFound = sdkerrors.Register(ModuleName, 8, "Key not found in database")

	// ErrStrConvertFailed returns an error if failed to convert string
	ErrStrConvertFailed = sdkerrors.Register(ModuleName, 9, "Failed to convert string")

	// ErrUnexpectedProposalType returns an error when the proposal type is not supported in evm module
	ErrUnexpectedProposalType = sdkerrors.Register(ModuleName, 10, "Unsupported proposal type of evm module")

	// ErrEmptyAddressList returns an error if the address list is empty
	ErrEmptyAddressList = sdkerrors.Register(ModuleName, 11, "Empty account address list")

	// ErrDuplicatedAddr returns an error if the address is duplicated in address list
	ErrDuplicatedAddr = sdkerrors.Register(ModuleName, 12, "Duplicated address in address list")

	CodeSpaceEvmCallFailed = uint32(7)

	ErrorHexData = "HexData"
)
View Source
var (
	KeyPrefixBlockHash                   = []byte{0x01}
	KeyPrefixBloom                       = []byte{0x02}
	KeyPrefixCode                        = []byte{0x04}
	KeyPrefixStorage                     = []byte{0x05}
	KeyPrefixChainConfig                 = []byte{0x06}
	KeyPrefixHeightHash                  = []byte{0x07}
	KeyPrefixContractDeploymentWhitelist = []byte{0x08}
	KeyPrefixContractBlockedList         = []byte{0x09}
)

KVStore key prefixes

View Source
var (
	ParamStoreKeyEnableCreate                = []byte("EnableCreate")
	ParamStoreKeyEnableCall                  = []byte("EnableCall")
	ParamStoreKeyExtraEIPs                   = []byte("EnableExtraEIPs")
	ParamStoreKeyContractDeploymentWhitelist = []byte("EnableContractDeploymentWhitelist")
	ParamStoreKeyContractBlockedList         = []byte("EnableContractBlockedList")
	ParamStoreKeyMaxGasLimitPerTx            = []byte("MaxGasLimitPerTx")
)

Parameter keys

View Source
var ModuleCdc = codec.New()

ModuleCdc defines the evm module's codec

Functions

func AddressStoragePrefix

func AddressStoragePrefix(address ethcmn.Address) []byte

AddressStoragePrefix returns a prefix to iterate over a given account storage.

func BloomDb

func BloomDb() dbm.DB

func BloomKey

func BloomKey(height int64) []byte

BloomKey defines the store key for a block Bloom

func EncodeResultData

func EncodeResultData(data ResultData) ([]byte, error)

EncodeResultData takes all of the necessary data from the EVM execution and returns the data as a byte slice encoded with amino

func ErrCallBlockedContract

func ErrCallBlockedContract(contractAddr ethcmn.Address) sdk.EnvelopedErr

ErrCallBlockedContract returns an error when the blocked contract is invoked

func ErrOversizeAddrList

func ErrOversizeAddrList(length int) sdk.EnvelopedErr

ErrOversizeAddrList returns an error when the length of address list in the proposal is larger than the max limitation

func ErrUnauthorizedAccount

func ErrUnauthorizedAccount(distributorAddr sdk.AccAddress) sdk.EnvelopedErr

ErrUnauthorizedAccount returns an error when an account not in the whitelist tries to create a contract

func GenerateEthAddress

func GenerateEthAddress() ethcmn.Address

GenerateEthAddress generates an Ethereum address.

func GetContractBlockedListMemberKey

func GetContractBlockedListMemberKey(contractAddr sdk.AccAddress) []byte

getContractBlockedListMemberKey builds the key for a blocked contract address

func GetContractDeploymentWhitelistMemberKey

func GetContractDeploymentWhitelistMemberKey(distributorAddr sdk.AccAddress) []byte

getContractDeploymentWhitelistMemberKey builds the key for an approved contract deployer

func GetEnableBloomFilter

func GetEnableBloomFilter() bool

func GetHashFn

func GetHashFn(ctx sdk.Context, csdb *CommitStateDB) vm.GetHashFunc

GetHashFn implements vm.GetHashFunc for Ethermint. It handles 3 cases:

  1. The requested height matches the current height (and thus same epoch number)
  2. The requested height is from an previous height from the same chain epoch
  3. The requested height is from a height greater than the latest one

func HeightHashKey

func HeightHashKey(height uint64) []byte

HeightHashKey returns the key for the given chain epoch and height. The key will be composed in the following order:

key = prefix + bytes(height)

This ordering facilitates the iteration by height for the EVM GetHashFn queries.

func InitIndexer

func InitIndexer(db dbm.DB)

func MarshalLogs

func MarshalLogs(logs []*ethtypes.Log) ([]byte, error)

MarshalLogs encodes an array of logs using amino

func ParamKeyTable

func ParamKeyTable() params.KeyTable

ParamKeyTable returns the parameter key table.

func ReadBloomBits

func ReadBloomBits(db ethdb.KeyValueReader, bit uint, section uint64, head common.Hash) ([]byte, error)

ReadBloomBits retrieves the compressed bloom bit vector belonging to the given section and bit index from the.

func RegisterCodec

func RegisterCodec(cdc *codec.Codec)

RegisterCodec registers all the necessary types and interfaces for the evm module

func TxDecoder

func TxDecoder(cdc *codec.Codec) sdk.TxDecoder

TxDecoder returns an sdk.TxDecoder that can decode both auth.StdTx and MsgEthereumTx transactions.

func UnmarshalLogs

func UnmarshalLogs(in []byte) ([]*ethtypes.Log, error)

UnmarshalLogs decodes an amino-encoded byte array into an array of logs

func ValidateLog

func ValidateLog(log *ethtypes.Log) error

ValidateLog performs a basic validation of an ethereum Log fields.

func ValidateSigner

func ValidateSigner(signBytes, sig []byte, signer ethcmn.Address) error

ValidateSigner attempts to validate a signer for a given slice of bytes over which a signature and signer is given. An error is returned if address derived from the signature and bytes signed does not match the given signer.

func WriteBloomBits

func WriteBloomBits(batch dbm.Batch, bit uint, section uint64, head common.Hash, bits []byte)

WriteBloomBits stores the compressed bloom bits vector belonging to the given section and bit index.

Types

type AccountKeeper

type AccountKeeper interface {
	NewAccountWithAddress(ctx sdk.Context, addr sdk.AccAddress) authexported.Account
	GetAllAccounts(ctx sdk.Context) (accounts []authexported.Account)
	IterateAccounts(ctx sdk.Context, cb func(account authexported.Account) bool)
	GetAccount(ctx sdk.Context, addr sdk.AccAddress) authexported.Account
	SetAccount(ctx sdk.Context, account authexported.Account)
	RemoveAccount(ctx sdk.Context, account authexported.Account)
	SetObserverKeeper(observer auth.ObserverI)
}

AccountKeeper defines the expected account keeper interface

type AddressList

type AddressList []sdk.AccAddress

AddressList is the type alias for []sdk.AccAddress

func (AddressList) String

func (al AddressList) String() string

String returns a human readable string representation of AddressList

type BankKeeper

type BankKeeper interface {
	BlacklistedAddr(addr sdk.AccAddress) bool
}

type CacheCode

type CacheCode struct {
	CodeHash []byte
	Code     []byte
}

type ChainConfig

type ChainConfig struct {
	HomesteadBlock sdk.Int `json:"homestead_block" yaml:"homestead_block"` // Homestead switch block (< 0 no fork, 0 = already homestead)

	DAOForkBlock   sdk.Int `json:"dao_fork_block" yaml:"dao_fork_block"`     // TheDAO hard-fork switch block (< 0 no fork)
	DAOForkSupport bool    `json:"dao_fork_support" yaml:"dao_fork_support"` // Whether the nodes supports or opposes the DAO hard-fork

	// EIP150 implements the Gas price changes (https://github.com/ethereum/EIPs/issues/150)
	EIP150Block sdk.Int `json:"eip150_block" yaml:"eip150_block"` // EIP150 HF block (< 0 no fork)
	EIP150Hash  string  `json:"eip150_hash" yaml:"eip150_hash"`   // EIP150 HF hash (needed for header only clients as only gas pricing changed)

	EIP155Block sdk.Int `json:"eip155_block" yaml:"eip155_block"` // EIP155 HF block
	EIP158Block sdk.Int `json:"eip158_block" yaml:"eip158_block"` // EIP158 HF block

	ByzantiumBlock      sdk.Int `json:"byzantium_block" yaml:"byzantium_block"`           // Byzantium switch block (< 0 no fork, 0 = already on byzantium)
	ConstantinopleBlock sdk.Int `json:"constantinople_block" yaml:"constantinople_block"` // Constantinople switch block (< 0 no fork, 0 = already activated)
	PetersburgBlock     sdk.Int `json:"petersburg_block" yaml:"petersburg_block"`         // Petersburg switch block (< 0 same as Constantinople)
	IstanbulBlock       sdk.Int `json:"istanbul_block" yaml:"istanbul_block"`             // Istanbul switch block (< 0 no fork, 0 = already on istanbul)
	MuirGlacierBlock    sdk.Int `json:"muir_glacier_block" yaml:"muir_glacier_block"`     // Eip-2384 (bomb delay) switch block (< 0 no fork, 0 = already activated)

	YoloV2Block sdk.Int `json:"yoloV2_block" yaml:"yoloV2_block"` // YOLO v1: https://github.com/ethereum/EIPs/pull/2657 (Ephemeral testnet)
	EWASMBlock  sdk.Int `json:"ewasm_block" yaml:"ewasm_block"`   // EWASM switch block (< 0 no fork, 0 = already activated)
}

ChainConfig defines the Ethereum ChainConfig parameters using sdk.Int values instead of big.Int.

NOTE 1: Since empty/uninitialized Ints (i.e with a nil big.Int value) are parsed to zero, we need to manually specify that negative Int values will be considered as nil. See getBlockValue for reference.

NOTE 2: This type is not a configurable Param since the SDK does not allow for validation against a previous stored parameter values or the current block height (retrieved from context). If you want to update the config values, use an software upgrade procedure.

func DefaultChainConfig

func DefaultChainConfig() ChainConfig

DefaultChainConfig returns default evm parameters. Th

func (ChainConfig) EthereumConfig

func (cc ChainConfig) EthereumConfig(chainID *big.Int) *params.ChainConfig

EthereumConfig returns an Ethereum ChainConfig for EVM state transitions. All the negative or nil values are converted to nil

func (ChainConfig) IsHomestead

func (cc ChainConfig) IsHomestead() bool

IsHomestead returns whether the Homestead version is enabled.

func (ChainConfig) IsIstanbul

func (cc ChainConfig) IsIstanbul() bool

IsIstanbul returns whether the Istanbul version is enabled.

func (ChainConfig) String

func (cc ChainConfig) String() string

String implements the fmt.Stringer interface

func (ChainConfig) Validate

func (cc ChainConfig) Validate() error

Validate performs a basic validation of the ChainConfig params. The function will return an error if any of the block values is uninitialized (i.e nil) or if the EIP150Hash is an invalid hash.

type CommitStateDB

type CommitStateDB struct {
	Watcher Watcher
	// contains filtered or unexported fields
}

CommitStateDB implements the Geth state.StateDB interface. Instead of using a trie and database for querying and persistence, the Keeper uses KVStores and an account mapper is used to facilitate state transitions.

TODO: This implementation is subject to change in regards to its statefull manner. In otherwords, how this relates to the keeper in this module.

func CreateEmptyCommitStateDB

func CreateEmptyCommitStateDB(csdbParams CommitStateDBParams, ctx sdk.Context) *CommitStateDB

func (*CommitStateDB) AddAddressToAccessList

func (csdb *CommitStateDB) AddAddressToAccessList(addr ethcmn.Address)

AddAddressToAccessList adds the given address to the access list

func (*CommitStateDB) AddBalance

func (csdb *CommitStateDB) AddBalance(addr ethcmn.Address, amount *big.Int)

AddBalance adds amount to the account associated with addr.

func (*CommitStateDB) AddLog

func (csdb *CommitStateDB) AddLog(log *ethtypes.Log)

AddLog adds a new log to the state and sets the log metadata from the state.

func (*CommitStateDB) AddPreimage

func (csdb *CommitStateDB) AddPreimage(hash ethcmn.Hash, preimage []byte)

AddPreimage records a SHA3 preimage seen by the VM.

func (*CommitStateDB) AddRefund

func (csdb *CommitStateDB) AddRefund(gas uint64)

AddRefund adds gas to the refund counter.

func (*CommitStateDB) AddSlotToAccessList

func (csdb *CommitStateDB) AddSlotToAccessList(addr ethcmn.Address, slot ethcmn.Hash)

AddSlotToAccessList adds the given (address, slot)-tuple to the access list

func (*CommitStateDB) AddressInAccessList

func (csdb *CommitStateDB) AddressInAccessList(addr ethcmn.Address) bool

AddressInAccessList returns true if the given address is in the access list.

func (*CommitStateDB) BlockHash

func (csdb *CommitStateDB) BlockHash() ethcmn.Hash

BlockHash returns the current block hash set by Prepare.

func (*CommitStateDB) ClearStateObjects

func (csdb *CommitStateDB) ClearStateObjects()

ClearStateObjects clears cache of state objects to handle account changes outside of the EVM

func (*CommitStateDB) Commit

func (csdb *CommitStateDB) Commit(deleteEmptyObjects bool) (ethcmn.Hash, error)

Commit writes the state to the appropriate KVStores. For each state object in the cache, it will either be removed, or have it's code set and/or it's state (storage) updated. In addition, the state object (account) itself will be written. Finally, the root hash (version) will be returned.

func (*CommitStateDB) CreateAccount

func (csdb *CommitStateDB) CreateAccount(addr ethcmn.Address)

CreateAccount explicitly creates a state object. If a state object with the address already exists the balance is carried over to the new account.

CreateAccount is called during the EVM CREATE operation. The situation might arise that a contract does the following:

  1. sends funds to sha(account ++ (nonce + 1))
  2. tx_create(sha(account ++ nonce)) (note that this gets the address of 1)

Carrying over the balance ensures that Ether doesn't disappear.

func (*CommitStateDB) Database

func (csdb *CommitStateDB) Database() ethstate.Database

Database retrieves the low level database supporting the lower level trie ops. It is not used in Ethermint, so it returns nil.

func (*CommitStateDB) DeleteContractBlockedList

func (csdb *CommitStateDB) DeleteContractBlockedList(addrList AddressList)

DeleteContractBlockedList deletes the target address list from blocked list store

func (*CommitStateDB) DeleteContractDeploymentWhitelist

func (csdb *CommitStateDB) DeleteContractDeploymentWhitelist(addrList AddressList)

DeleteContractDeploymentWhitelist deletes the target address list from whitelist store

func (*CommitStateDB) DeleteLogs

func (csdb *CommitStateDB) DeleteLogs(hash ethcmn.Hash)

DeleteLogs removes the logs from the KVStore. It is used during journal.Revert.

func (*CommitStateDB) Empty

func (csdb *CommitStateDB) Empty(addr ethcmn.Address) bool

Empty returns whether the state object is either non-existent or empty according to the EIP161 specification (balance = nonce = code = 0).

func (*CommitStateDB) Error

func (csdb *CommitStateDB) Error() error

Error returns the first non-nil error the StateDB encountered.

func (*CommitStateDB) Exist

func (csdb *CommitStateDB) Exist(addr ethcmn.Address) bool

Exist reports whether the given account address exists in the state. Notably, this also returns true for suicided accounts.

func (*CommitStateDB) Finalise

func (csdb *CommitStateDB) Finalise(deleteEmptyObjects bool) error

Finalise finalizes the state objects (accounts) state by setting their state, removing the csdb destructed objects and clearing the journal as well as the refunds.

func (*CommitStateDB) ForEachStorage

func (csdb *CommitStateDB) ForEachStorage(addr ethcmn.Address, cb func(key, value ethcmn.Hash) (stop bool)) error

ForEachStorage iterates over each storage items, all invoke the provided callback on each key, value pair.

func (*CommitStateDB) GetBalance

func (csdb *CommitStateDB) GetBalance(addr ethcmn.Address) *big.Int

GetBalance retrieves the balance from the given address or 0 if object not found.

func (*CommitStateDB) GetCacheCode

func (csdb *CommitStateDB) GetCacheCode(addr ethcmn.Address) *CacheCode

func (*CommitStateDB) GetCode

func (csdb *CommitStateDB) GetCode(addr ethcmn.Address) []byte

GetCode returns the code for a given account.

func (*CommitStateDB) GetCodeByHash

func (csdb *CommitStateDB) GetCodeByHash(hash ethcmn.Hash) []byte

GetCode returns the code for a given code hash.

func (*CommitStateDB) GetCodeHash

func (csdb *CommitStateDB) GetCodeHash(addr ethcmn.Address) ethcmn.Hash

GetCodeHash returns the code hash for a given account.

func (*CommitStateDB) GetCodeSize

func (csdb *CommitStateDB) GetCodeSize(addr ethcmn.Address) int

GetCodeSize returns the code size for a given account.

func (*CommitStateDB) GetCommittedState

func (csdb *CommitStateDB) GetCommittedState(addr ethcmn.Address, hash ethcmn.Hash) ethcmn.Hash

GetCommittedState retrieves a value from the given account's committed storage.

func (*CommitStateDB) GetContractBlockedList

func (csdb *CommitStateDB) GetContractBlockedList() (blockedList AddressList)

GetContractBlockedList gets the whole contract blocked list currently

func (*CommitStateDB) GetContractDeploymentWhitelist

func (csdb *CommitStateDB) GetContractDeploymentWhitelist() (whitelist AddressList)

GetContractDeploymentWhitelist gets the whole contract deployment whitelist currently

func (*CommitStateDB) GetHeightHash

func (csdb *CommitStateDB) GetHeightHash(height uint64) ethcmn.Hash

GetHeightHash returns the block header hash associated with a given block height and chain epoch number.

func (*CommitStateDB) GetLogSize

func (csdb *CommitStateDB) GetLogSize() uint

func (*CommitStateDB) GetLogs

func (csdb *CommitStateDB) GetLogs(hash ethcmn.Hash) ([]*ethtypes.Log, error)

GetLogs returns the current logs for a given transaction hash from the KVStore.

func (*CommitStateDB) GetNonce

func (csdb *CommitStateDB) GetNonce(addr ethcmn.Address) uint64

GetNonce returns the nonce (sequence number) for a given account.

func (*CommitStateDB) GetOrNewStateObject

func (csdb *CommitStateDB) GetOrNewStateObject(addr ethcmn.Address) StateObject

GetOrNewStateObject retrieves a state object or create a new state object if nil.

func (*CommitStateDB) GetParams

func (csdb *CommitStateDB) GetParams() Params

GetParams returns the total set of evm parameters.

func (*CommitStateDB) GetRefund

func (csdb *CommitStateDB) GetRefund() uint64

GetRefund returns the current value of the refund counter.

func (*CommitStateDB) GetState

func (csdb *CommitStateDB) GetState(addr ethcmn.Address, hash ethcmn.Hash) ethcmn.Hash

GetState retrieves a value from the given account's storage store.

func (*CommitStateDB) GetStateByKey

func (csdb *CommitStateDB) GetStateByKey(addr ethcmn.Address, hash ethcmn.Hash) ethcmn.Hash

GetStateByKey retrieves a value from the given account's storage store.

func (*CommitStateDB) HasSuicided

func (csdb *CommitStateDB) HasSuicided(addr ethcmn.Address) bool

HasSuicided returns if the given account for the specified address has been killed.

func (*CommitStateDB) IntermediateRoot

func (csdb *CommitStateDB) IntermediateRoot(deleteEmptyObjects bool) (ethcmn.Hash, error)

IntermediateRoot returns the current root hash of the state. It is called in between transactions to get the root hash that goes into transaction receipts.

NOTE: The SDK has not concept or method of getting any intermediate merkle root as commitment of the merkle-ized tree doesn't happen until the BaseApps' EndBlocker.

func (*CommitStateDB) IsContractInBlockedList

func (csdb *CommitStateDB) IsContractInBlockedList(contractAddr sdk.AccAddress) bool

IsContractInBlockedList checks whether the contract address is in the blocked list

func (*CommitStateDB) IsDeployerInWhitelist

func (csdb *CommitStateDB) IsDeployerInWhitelist(deployerAddr sdk.AccAddress) bool

IsDeployerInWhitelist checks whether the deployer is in the whitelist as a distributor

func (*CommitStateDB) IteratorCode

func (csdb *CommitStateDB) IteratorCode(cb func(addr ethcmn.Address, c CacheCode) bool)

func (*CommitStateDB) Preimages

func (csdb *CommitStateDB) Preimages() map[ethcmn.Hash][]byte

Preimages returns a list of SHA3 preimages that have been submitted.

func (*CommitStateDB) Prepare

func (csdb *CommitStateDB) Prepare(thash, bhash ethcmn.Hash, txi int)

Prepare sets the current transaction hash and index and block hash which is used when the EVM emits new state logs.

func (*CommitStateDB) PrepareAccessList

func (csdb *CommitStateDB) PrepareAccessList(sender ethcmn.Address, dest *ethcmn.Address, precompiles []ethcmn.Address, txAccesses ethtypes.AccessList)

func (*CommitStateDB) RawDump

func (csdb *CommitStateDB) RawDump() ethstate.Dump

RawDump returns a raw state dump.

TODO: Implement if we need it, especially for the RPC API.

func (*CommitStateDB) Reset

func (csdb *CommitStateDB) Reset(_ ethcmn.Hash) error

Reset clears out all ephemeral state objects from the state db, but keeps the underlying account mapper and store keys to avoid reloading data for the next operations.

func (*CommitStateDB) RevertToSnapshot

func (csdb *CommitStateDB) RevertToSnapshot(revID int)

RevertToSnapshot reverts all state changes made since the given revision.

func (*CommitStateDB) SetBalance

func (csdb *CommitStateDB) SetBalance(addr ethcmn.Address, amount *big.Int)

SetBalance sets the balance of an account.

func (*CommitStateDB) SetBlockHash

func (csdb *CommitStateDB) SetBlockHash(hash ethcmn.Hash)

func (*CommitStateDB) SetCode

func (csdb *CommitStateDB) SetCode(addr ethcmn.Address, code []byte)

SetCode sets the code for a given account.

func (*CommitStateDB) SetContractBlockedList

func (csdb *CommitStateDB) SetContractBlockedList(addrList AddressList)

SetContractBlockedList sets the target address list into blocked list store

func (*CommitStateDB) SetContractDeploymentWhitelist

func (csdb *CommitStateDB) SetContractDeploymentWhitelist(addrList AddressList)

SetContractDeploymentWhitelistMember sets the target address list into whitelist store

func (*CommitStateDB) SetHeightHash

func (csdb *CommitStateDB) SetHeightHash(height uint64, hash ethcmn.Hash)

SetHeightHash sets the block header hash associated with a given height.

func (*CommitStateDB) SetInternalDb

func (csdb *CommitStateDB) SetInternalDb(dba DbAdapter)

func (*CommitStateDB) SetLogSize

func (csdb *CommitStateDB) SetLogSize(logSize uint)

func (*CommitStateDB) SetLogs

func (csdb *CommitStateDB) SetLogs(hash ethcmn.Hash, logs []*ethtypes.Log) error

SetLogs sets the logs for a transaction in the KVStore.

func (*CommitStateDB) SetNonce

func (csdb *CommitStateDB) SetNonce(addr ethcmn.Address, nonce uint64)

SetNonce sets the nonce (sequence number) of an account.

func (*CommitStateDB) SetParams

func (csdb *CommitStateDB) SetParams(params Params)

SetParams sets the evm parameters to the param space.

func (*CommitStateDB) SetState

func (csdb *CommitStateDB) SetState(addr ethcmn.Address, key, value ethcmn.Hash)

SetState sets the storage state with a key, value pair for an account.

func (*CommitStateDB) SlotInAccessList

func (csdb *CommitStateDB) SlotInAccessList(addr ethcmn.Address, slot ethcmn.Hash) (bool, bool)

SlotInAccessList returns true if the given (address, slot)-tuple is in the access list.

func (*CommitStateDB) Snapshot

func (csdb *CommitStateDB) Snapshot() int

Snapshot returns an identifier for the current revision of the state.

func (*CommitStateDB) StorageTrie

func (csdb *CommitStateDB) StorageTrie(addr ethcmn.Address) ethstate.Trie

StorageTrie returns nil as the state in Ethermint does not use a direct storage trie.

func (*CommitStateDB) SubBalance

func (csdb *CommitStateDB) SubBalance(addr ethcmn.Address, amount *big.Int)

SubBalance subtracts amount from the account associated with addr.

func (*CommitStateDB) SubRefund

func (csdb *CommitStateDB) SubRefund(gas uint64)

SubRefund removes gas from the refund counter. It will panic if the refund counter goes below zero.

func (*CommitStateDB) Suicide

func (csdb *CommitStateDB) Suicide(addr ethcmn.Address) bool

Suicide marks the given account as suicided and clears the account balance.

The account's state object is still available until the state is committed, getStateObject will return a non-nil account after Suicide.

func (*CommitStateDB) TxIndex

func (csdb *CommitStateDB) TxIndex() int

TxIndex returns the current transaction index set by Prepare.

func (*CommitStateDB) UpdateAccounts

func (csdb *CommitStateDB) UpdateAccounts()

UpdateAccounts updates the nonce and coin balances of accounts

func (*CommitStateDB) WithContext

func (csdb *CommitStateDB) WithContext(ctx sdk.Context) *CommitStateDB

WithContext returns a Database with an updated SDK context

type CommitStateDBParams

type CommitStateDBParams struct {
	StoreKey      sdk.StoreKey
	ParamSpace    Subspace
	AccountKeeper AccountKeeper
	SupplyKeeper  SupplyKeeper
	Watcher       Watcher
	BankKeeper    BankKeeper
	Ada           DbAdapter
}

type DbAdapter

type DbAdapter interface {
	NewStore(parent types.KVStore, prefix []byte) StoreProxy
}

type DefaultPrefixDb

type DefaultPrefixDb struct {
}

func (DefaultPrefixDb) NewStore

func (d DefaultPrefixDb) NewStore(parent types.KVStore, Prefix []byte) StoreProxy

type ExecutionResult

type ExecutionResult struct {
	Logs    []*ethtypes.Log
	Bloom   *big.Int
	Result  *sdk.Result
	GasInfo GasInfo
}

ExecutionResult represents what's returned from a transition

type GasInfo

type GasInfo struct {
	GasLimit    uint64
	GasConsumed uint64
	GasRefunded uint64
}

GasInfo returns the gas limit, gas consumed and gas refunded from the EVM transition execution

type GenesisAccount

type GenesisAccount struct {
	Address string        `json:"address"`
	Code    hexutil.Bytes `json:"code,omitempty"`
	Storage Storage       `json:"storage,omitempty"`
}

GenesisAccount defines an account to be initialized in the genesis state. Its main difference between with Geth's GenesisAccount is that it uses a custom storage type and that it doesn't contain the private key field. NOTE: balance is omitted as it is imported from the auth account balance.

func (GenesisAccount) MarshalJSON

func (ga GenesisAccount) MarshalJSON() ([]byte, error)

func (*GenesisAccount) UnmarshalJSON

func (ga *GenesisAccount) UnmarshalJSON(input []byte) error

func (GenesisAccount) Validate

func (ga GenesisAccount) Validate() error

Validate performs a basic validation of a GenesisAccount fields.

type GenesisState

type GenesisState struct {
	Accounts                    []GenesisAccount  `json:"accounts"`
	TxsLogs                     []TransactionLogs `json:"txs_logs"`
	ContractDeploymentWhitelist AddressList       `json:"contract_deployment_whitelist"`
	ContractBlockedList         AddressList       `json:"contract_blocked_list"`
	ChainConfig                 ChainConfig       `json:"chain_config"`
	Params                      Params            `json:"params"`
}

GenesisState defines the evm module genesis state

func DefaultGenesisState

func DefaultGenesisState() GenesisState

DefaultGenesisState sets default evm genesis state with empty accounts and default params and chain config values.

func (GenesisState) Validate

func (gs GenesisState) Validate() error

Validate performs basic genesis state validation returning an error upon any failure.

type Indexer

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

Indexer does a post-processing job for equally sized sections of the canonical chain (like BlooomBits and CHT structures). A Indexer is connected to the blockchain through the event system by starting a ChainHeadEventLoop in a goroutine.

Further child ChainIndexers can be added which use the output of the parent section indexer. These child indexers receive new head notifications only after an entire section has been finished or in case of rollbacks that might affect already finished sections.

func GetIndexer

func GetIndexer() *Indexer

func (*Indexer) GetDB

func (b *Indexer) GetDB() dbm.DB

GetDB get db of bloomIndexer

func (*Indexer) GetValidSections

func (i *Indexer) GetValidSections() uint64

GetValidSections reads the number of valid sections from the index database and caches is into the local state.

func (*Indexer) IsProcessing

func (i *Indexer) IsProcessing() bool

func (*Indexer) NotifyNewHeight

func (i *Indexer) NotifyNewHeight(ctx sdk.Context)

func (*Indexer) ProcessSection

func (i *Indexer) ProcessSection(ctx sdk.Context, k Keeper, interval uint64)

func (*Indexer) StoredSection

func (i *Indexer) StoredSection() uint64

type Keeper

type Keeper interface {
	GetBlockBloom(ctx sdk.Context, height int64) ethtypes.Bloom
	GetHeightHash(ctx sdk.Context, height uint64) common.Hash
}

type ManageContractBlockedListProposal

type ManageContractBlockedListProposal struct {
	Title         string      `json:"title" yaml:"title"`
	Description   string      `json:"description" yaml:"description"`
	ContractAddrs AddressList `json:"contract_addresses" yaml:"contract_addresses"`
	IsAdded       bool        `json:"is_added" yaml:"is_added"`
}

ManageContractBlockedListProposal - structure for the proposal to add or delete a contract address from blocked list

func NewManageContractBlockedListProposal

func NewManageContractBlockedListProposal(title, description string, contractAddrs AddressList, isAdded bool,
) ManageContractBlockedListProposal

NewManageContractBlockedListProposal creates a new instance of ManageContractBlockedListProposal

func (ManageContractBlockedListProposal) GetDescription

func (mp ManageContractBlockedListProposal) GetDescription() string

GetDescription returns description of a manage contract blocked list proposal object

func (ManageContractBlockedListProposal) GetTitle

GetTitle returns title of a manage contract blocked list proposal object

func (ManageContractBlockedListProposal) ProposalRoute

func (mp ManageContractBlockedListProposal) ProposalRoute() string

ProposalRoute returns route key of a manage contract blocked list proposal object

func (ManageContractBlockedListProposal) ProposalType

func (mp ManageContractBlockedListProposal) ProposalType() string

ProposalType returns type of a manage contract blocked list proposal object

func (ManageContractBlockedListProposal) String

String returns a human readable string representation of a ManageContractBlockedListProposal

func (ManageContractBlockedListProposal) ValidateBasic

func (mp ManageContractBlockedListProposal) ValidateBasic() sdk.Error

ValidateBasic validates a manage contract blocked list proposal

type ManageContractDeploymentWhitelistProposal

type ManageContractDeploymentWhitelistProposal struct {
	Title            string      `json:"title" yaml:"title"`
	Description      string      `json:"description" yaml:"description"`
	DistributorAddrs AddressList `json:"distributor_addresses" yaml:"distributor_addresses"`
	IsAdded          bool        `json:"is_added" yaml:"is_added"`
}

ManageContractDeploymentWhitelistProposal - structure for the proposal to add or delete deployer addresses from whitelist

func NewManageContractDeploymentWhitelistProposal

func NewManageContractDeploymentWhitelistProposal(title, description string, distributorAddrs []sdk.AccAddress, isAdded bool,
) ManageContractDeploymentWhitelistProposal

NewManageContractDeploymentWhitelistProposal creates a new instance of ManageContractDeploymentWhitelistProposal

func (ManageContractDeploymentWhitelistProposal) GetDescription

GetDescription returns description of a manage contract deployment whitelist proposal object

func (ManageContractDeploymentWhitelistProposal) GetTitle

GetTitle returns title of a manage contract deployment whitelist proposal object

func (ManageContractDeploymentWhitelistProposal) ProposalRoute

ProposalRoute returns route key of a manage contract deployment whitelist proposal object

func (ManageContractDeploymentWhitelistProposal) ProposalType

ProposalType returns type of a manage contract deployment whitelist proposal object

func (ManageContractDeploymentWhitelistProposal) String

String returns a human readable string representation of a ManageContractDeploymentWhitelistProposal

func (ManageContractDeploymentWhitelistProposal) ValidateBasic

ValidateBasic validates a manage contract deployment whitelist proposal

type MsgEthereumTx

type MsgEthereumTx struct {
	Data TxData
	// contains filtered or unexported fields
}

MsgEthereumTx encapsulates an Ethereum transaction as an SDK message.

func NewMsgEthereumTx

func NewMsgEthereumTx(
	nonce uint64, to *ethcmn.Address, amount *big.Int,
	gasLimit uint64, gasPrice *big.Int, payload []byte,
) MsgEthereumTx

NewMsgEthereumTx returns a reference to a new Ethereum transaction message.

func NewMsgEthereumTxContract

func NewMsgEthereumTxContract(
	nonce uint64, amount *big.Int, gasLimit uint64, gasPrice *big.Int, payload []byte,
) MsgEthereumTx

NewMsgEthereumTxContract returns a reference to a new Ethereum transaction message designated for contract creation.

func (*MsgEthereumTx) ChainID

func (msg *MsgEthereumTx) ChainID() *big.Int

ChainID returns which chain id this transaction was signed for (if at all)

func (MsgEthereumTx) Cost

func (msg MsgEthereumTx) Cost() *big.Int

Cost returns amount + gasprice * gaslimit.

func (*MsgEthereumTx) DecodeRLP

func (msg *MsgEthereumTx) DecodeRLP(s *rlp.Stream) error

DecodeRLP implements the rlp.Decoder interface.

func (*MsgEthereumTx) EncodeRLP

func (msg *MsgEthereumTx) EncodeRLP(w io.Writer) error

EncodeRLP implements the rlp.Encoder interface.

func (MsgEthereumTx) Fee

func (msg MsgEthereumTx) Fee() *big.Int

Fee returns gasprice * gaslimit.

func (MsgEthereumTx) FeePayer

func (msg MsgEthereumTx) FeePayer(ctx sdk.Context) sdk.AccAddress

func (*MsgEthereumTx) From

func (msg *MsgEthereumTx) From() sdk.AccAddress

From loads the ethereum sender address from the sigcache and returns an sdk.AccAddress from its bytes

func (MsgEthereumTx) GetFee

func (msg MsgEthereumTx) GetFee() sdk.Coins

func (MsgEthereumTx) GetGas

func (msg MsgEthereumTx) GetGas() uint64

GetGas implements the GasTx interface. It returns the GasLimit of the transaction.

func (MsgEthereumTx) GetMsgs

func (msg MsgEthereumTx) GetMsgs() []sdk.Msg

GetMsgs returns a single MsgEthereumTx as an sdk.Msg.

func (MsgEthereumTx) GetSignBytes

func (msg MsgEthereumTx) GetSignBytes() []byte

GetSignBytes returns the Amino bytes of an Ethereum transaction message used for signing.

NOTE: This method cannot be used as a chain ID is needed to create valid bytes to sign over. Use 'RLPSignBytes' instead.

func (MsgEthereumTx) GetSigners

func (msg MsgEthereumTx) GetSigners() []sdk.AccAddress

GetSigners returns the expected signers for an Ethereum transaction message. For such a message, there should exist only a single 'signer'.

NOTE: This method panics if 'VerifySig' hasn't been called first.

func (MsgEthereumTx) GetTxInfo

func (msg MsgEthereumTx) GetTxInfo(ctx sdk.Context) mempool.ExTxInfo

Return tx sender and gas price

func (MsgEthereumTx) HomesteadSignHash

func (msg MsgEthereumTx) HomesteadSignHash() ethcmn.Hash

Hash returns the hash to be signed by the sender. It does not uniquely identify the transaction.

func (MsgEthereumTx) RLPSignBytes

func (msg MsgEthereumTx) RLPSignBytes(chainID *big.Int) ethcmn.Hash

RLPSignBytes returns the RLP hash of an Ethereum transaction message with a given chainID used for signing.

func (MsgEthereumTx) RawSignatureValues

func (msg MsgEthereumTx) RawSignatureValues() (v, r, s *big.Int)

RawSignatureValues returns the V, R, S signature values of the transaction. The return values should not be modified by the caller.

func (MsgEthereumTx) Route

func (msg MsgEthereumTx) Route() string

Route returns the route value of an MsgEthereumTx.

func (*MsgEthereumTx) Sign

func (msg *MsgEthereumTx) Sign(chainID *big.Int, priv *ecdsa.PrivateKey) error

Sign calculates a secp256k1 ECDSA signature and signs the transaction. It takes a private key and chainID to sign an Ethereum transaction according to EIP155 standard. It mutates the transaction as it populates the V, R, S fields of the Transaction's Signature.

func (MsgEthereumTx) String

func (msg MsgEthereumTx) String() string

func (MsgEthereumTx) To

func (msg MsgEthereumTx) To() *ethcmn.Address

To returns the recipient address of the transaction. It returns nil if the transaction is a contract creation.

func (MsgEthereumTx) Type

func (msg MsgEthereumTx) Type() string

Type returns the type value of an MsgEthereumTx.

func (MsgEthereumTx) ValidateBasic

func (msg MsgEthereumTx) ValidateBasic() error

ValidateBasic implements the sdk.Msg interface. It performs basic validation checks of a Transaction. If returns an error if validation fails.

func (*MsgEthereumTx) VerifySig

func (msg *MsgEthereumTx) VerifySig(chainID *big.Int, height int64) (ethcmn.Address, error)

VerifySig attempts to verify a Transaction's signature for a given chainID. A derived address is returned upon success or an error if recovery fails.

type MsgEthermint

type MsgEthermint struct {
	AccountNonce uint64          `json:"nonce"`
	Price        sdk.Int         `json:"gasPrice"`
	GasLimit     uint64          `json:"gas"`
	Recipient    *sdk.AccAddress `json:"to" rlp:"nil"` // nil means contract creation
	Amount       sdk.Int         `json:"value"`
	Payload      []byte          `json:"input"`

	// From address (formerly derived from signature)
	From sdk.AccAddress `json:"from"`
}

MsgEthermint implements a cosmos equivalent structure for Ethereum transactions

func NewMsgEthermint

func NewMsgEthermint(
	nonce uint64, to *sdk.AccAddress, amount sdk.Int,
	gasLimit uint64, gasPrice sdk.Int, payload []byte, from sdk.AccAddress,
) MsgEthermint

NewMsgEthermint returns a reference to a new Ethermint transaction

func (MsgEthermint) GetSignBytes

func (msg MsgEthermint) GetSignBytes() []byte

GetSignBytes encodes the message for signing

func (MsgEthermint) GetSigners

func (msg MsgEthermint) GetSigners() []sdk.AccAddress

GetSigners defines whose signature is required

func (MsgEthermint) Route

func (msg MsgEthermint) Route() string

Route should return the name of the module

func (MsgEthermint) String

func (msg MsgEthermint) String() string

func (MsgEthermint) To

func (msg MsgEthermint) To() *ethcmn.Address

To returns the recipient address of the transaction. It returns nil if the transaction is a contract creation.

func (MsgEthermint) Type

func (msg MsgEthermint) Type() string

Type returns the action of the message

func (MsgEthermint) ValidateBasic

func (msg MsgEthermint) ValidateBasic() error

ValidateBasic runs stateless checks on the message

type Params

type Params struct {
	// EnableCreate toggles state transitions that use the vm.Create function
	EnableCreate bool `json:"enable_create" yaml:"enable_create"`
	// EnableCall toggles state transitions that use the vm.Call function
	EnableCall bool `json:"enable_call" yaml:"enable_call"`
	// ExtraEIPs defines the additional EIPs for the vm.Config
	ExtraEIPs []int `json:"extra_eips" yaml:"extra_eips"`
	// EnableContractDeploymentWhitelist controls the authorization of contract deployer
	EnableContractDeploymentWhitelist bool `json:"enable_contract_deployment_whitelist" yaml:"enable_contract_deployment_whitelist"`
	// EnableContractBlockedList controls the availability of contracts
	EnableContractBlockedList bool `json:"enable_contract_blocked_list" yaml:"enable_contract_blocked_list"`
	// MaxGasLimit defines the max gas limit in transaction
	MaxGasLimitPerTx uint64 `json:"max_gas_limit_per_tx" yaml:"max_gas_limit_per_tx"`
}

Params defines the EVM module parameters

func DefaultParams

func DefaultParams() Params

DefaultParams returns default evm parameters

func NewParams

func NewParams(enableCreate, enableCall, enableContractDeploymentWhitelist, enableContractBlockedList bool, maxGasLimitPerTx uint64,
	extraEIPs ...int) Params

NewParams creates a new Params instance

func (*Params) ParamSetPairs

func (p *Params) ParamSetPairs() params.ParamSetPairs

ParamSetPairs returns the parameter set pairs.

func (Params) String

func (p Params) String() string

String implements the fmt.Stringer interface

func (Params) Validate

func (p Params) Validate() error

Validate performs basic validation on evm parameters.

type QueryBloomFilter

type QueryBloomFilter struct {
	Bloom ethtypes.Bloom `json:"bloom"`
}

QueryBloomFilter is response type for tx logs query

func (QueryBloomFilter) String

func (q QueryBloomFilter) String() string

type QueryETHLogs

type QueryETHLogs struct {
	Logs []*ethtypes.Log `json:"logs"`
}

QueryETHLogs is response type for tx logs query

func (QueryETHLogs) String

func (q QueryETHLogs) String() string

type QueryResAccount

type QueryResAccount struct {
	Balance  string `json:"balance"`
	CodeHash []byte `json:"codeHash"`
	Nonce    uint64 `json:"nonce"`
}

QueryAccount is response type for querying Ethereum state objects

type QueryResBalance

type QueryResBalance struct {
	Balance string `json:"balance"`
}

QueryResBalance is response type for balance query

func (QueryResBalance) String

func (q QueryResBalance) String() string

type QueryResBlockNumber

type QueryResBlockNumber struct {
	Number int64 `json:"blockNumber"`
}

QueryResBlockNumber is response type for block number query

func (QueryResBlockNumber) String

func (q QueryResBlockNumber) String() string

type QueryResCode

type QueryResCode struct {
	Code []byte
}

QueryResCode is response type for code query

func (QueryResCode) String

func (q QueryResCode) String() string

type QueryResExportAccount

type QueryResExportAccount = GenesisAccount

type QueryResNonce

type QueryResNonce struct {
	Nonce uint64 `json:"nonce"`
}

QueryResNonce is response type for Nonce query

func (QueryResNonce) String

func (q QueryResNonce) String() string

type QueryResStorage

type QueryResStorage struct {
	Value []byte `json:"value"`
}

QueryResStorage is response type for storage query

func (QueryResStorage) String

func (q QueryResStorage) String() string

type ResultData

type ResultData struct {
	ContractAddress ethcmn.Address  `json:"contract_address"`
	Bloom           ethtypes.Bloom  `json:"bloom"`
	Logs            []*ethtypes.Log `json:"logs"`
	Ret             []byte          `json:"ret"`
	TxHash          ethcmn.Hash     `json:"tx_hash"`
}

ResultData represents the data returned in an sdk.Result

func DecodeResultData

func DecodeResultData(in []byte) (ResultData, error)

DecodeResultData decodes an amino-encoded byte slice into ResultData

func (ResultData) String

func (rd ResultData) String() string

String implements fmt.Stringer interface.

type State

type State struct {
	Key   ethcmn.Hash `json:"key"`
	Value ethcmn.Hash `json:"value"`
}

State represents a single Storage key value pair item.

func NewState

func NewState(key, value ethcmn.Hash) State

NewState creates a new State instance

func (State) MarshalJSON

func (s State) MarshalJSON() ([]byte, error)

func (*State) UnmarshalJSON

func (s *State) UnmarshalJSON(input []byte) error

func (State) Validate

func (s State) Validate() error

Validate performs a basic validation of the State fields.

type StateObject

type StateObject interface {
	GetCommittedState(db ethstate.Database, key ethcmn.Hash) ethcmn.Hash
	GetState(db ethstate.Database, key ethcmn.Hash) ethcmn.Hash
	SetState(db ethstate.Database, key, value ethcmn.Hash)

	Code(db ethstate.Database) []byte
	SetCode(codeHash ethcmn.Hash, code []byte)
	CodeHash() []byte

	AddBalance(amount *big.Int)
	SubBalance(amount *big.Int)
	SetBalance(amount *big.Int)

	Balance() *big.Int
	ReturnGas(gas *big.Int)
	Address() ethcmn.Address

	SetNonce(nonce uint64)
	Nonce() uint64
}

StateObject interface for interacting with state object

type StateTransition

type StateTransition struct {
	// TxData fields
	AccountNonce uint64
	Price        *big.Int
	GasLimit     uint64
	Recipient    *common.Address
	Amount       *big.Int
	Payload      []byte

	ChainID  *big.Int
	Csdb     *CommitStateDB
	TxHash   *common.Hash
	Sender   common.Address
	Simulate bool // i.e CheckTx execution
}

StateTransition defines data to transitionDB in evm

func (StateTransition) TransitionDb

func (st StateTransition) TransitionDb(ctx sdk.Context, config ChainConfig) (exeRes *ExecutionResult, resData *ResultData, err error)

TransitionDb will transition the state by applying the current transaction and returning the evm execution result. NOTE: State transition checks are run during AnteHandler execution.

type Storage

type Storage []State

Storage represents the account Storage map as a slice of single key value State pairs. This is to prevent non determinism at genesis initialization or export.

func (Storage) Copy

func (s Storage) Copy() Storage

Copy returns a copy of storage.

func (Storage) String

func (s Storage) String() string

String implements the stringer interface

func (Storage) Validate

func (s Storage) Validate() error

Validate performs a basic validation of the Storage fields.

type StoreProxy

type StoreProxy interface {
	Set(key, value []byte)
	Get(key []byte) []byte
	Delete(key []byte)
	Has(key []byte) bool
}

type Subspace

type Subspace interface {
	GetParamSet(ctx sdk.Context, ps params.ParamSet)
	SetParamSet(ctx sdk.Context, ps params.ParamSet)
}

type SupplyKeeper

type SupplyKeeper interface {
	SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
}

type TransactionLogs

type TransactionLogs struct {
	Hash ethcmn.Hash     `json:"hash"`
	Logs []*ethtypes.Log `json:"logs"`
}

TransactionLogs define the logs generated from a transaction execution with a given hash. It it used for import/export data as transactions are not persisted on blockchain state after an upgrade.

func NewTransactionLogs

func NewTransactionLogs(hash ethcmn.Hash, logs []*ethtypes.Log) TransactionLogs

NewTransactionLogs creates a new NewTransactionLogs instance.

func (TransactionLogs) Validate

func (tx TransactionLogs) Validate() error

Validate performs a basic validation of a GenesisAccount fields.

type TxData

type TxData struct {
	AccountNonce uint64          `json:"nonce"`
	Price        *big.Int        `json:"gasPrice"`
	GasLimit     uint64          `json:"gas"`
	Recipient    *ethcmn.Address `json:"to" rlp:"nil"` // nil means contract creation
	Amount       *big.Int        `json:"value"`
	Payload      []byte          `json:"input"`

	// signature values
	V *big.Int `json:"v"`
	R *big.Int `json:"r"`
	S *big.Int `json:"s"`

	// hash is only used when marshaling to JSON
	Hash *ethcmn.Hash `json:"hash" rlp:"-"`
}

TxData implements the Ethereum transaction data structure. It is used solely as intended in Ethereum abiding by the protocol.

func (TxData) MarshalAmino

func (td TxData) MarshalAmino() ([]byte, error)

MarshalAmino defines custom encoding scheme for TxData

func (TxData) String

func (td TxData) String() string

func (*TxData) UnmarshalAmino

func (td *TxData) UnmarshalAmino(data []byte) error

UnmarshalAmino defines custom decoding scheme for TxData

type Watcher

type Watcher interface {
	SaveAccount(account auth.Account, isDirectly bool)
	SaveState(addr ethcmn.Address, key, value []byte)
	Enabled() bool
	SaveContractBlockedListItem(addr sdk.AccAddress)
	SaveContractDeploymentWhitelistItem(addr sdk.AccAddress)
	DeleteContractBlockedList(addr sdk.AccAddress)
	DeleteContractDeploymentWhitelist(addr sdk.AccAddress)
}

Jump to

Keyboard shortcuts

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