Documentation
¶
Index ¶
- Constants
- Variables
- func AddressStoragePrefix(address ethcmn.Address) []byte
- func BloomKey(height int64) []byte
- func EncodeResultData(data ResultData) ([]byte, error)
- func GenerateChainConfig(chainID *big.Int) *params.ChainConfig
- func GenerateEthAddress() ethcmn.Address
- func MarshalLogs(logs []*ethtypes.Log) ([]byte, error)
- func RegisterCodec(cdc *codec.Codec)
- func TxDecoder(cdc *codec.Codec) sdk.TxDecoder
- func UnmarshalLogs(in []byte) ([]*ethtypes.Log, error)
- func ValidateLog(log *ethtypes.Log) error
- func ValidateSigner(signBytes, sig []byte, signer ethcmn.Address) error
- type AccountKeeper
- type CommitStateDB
- func (csdb *CommitStateDB) AddBalance(addr ethcmn.Address, amount *big.Int)
- func (csdb *CommitStateDB) AddLog(log *ethtypes.Log)
- func (csdb *CommitStateDB) AddPreimage(hash ethcmn.Hash, preimage []byte)
- func (csdb *CommitStateDB) AddRefund(gas uint64)
- func (csdb *CommitStateDB) AllLogs() []*ethtypes.Log
- func (csdb *CommitStateDB) BlockHash() ethcmn.Hash
- func (csdb *CommitStateDB) ClearStateObjects()
- func (csdb *CommitStateDB) Commit(deleteEmptyObjects bool) (ethcmn.Hash, error)
- func (csdb *CommitStateDB) Copy() *CommitStateDB
- func (csdb *CommitStateDB) CreateAccount(addr ethcmn.Address)
- func (csdb *CommitStateDB) Database() ethstate.Database
- func (csdb *CommitStateDB) DeleteLogs(hash ethcmn.Hash)
- func (csdb *CommitStateDB) Empty(addr ethcmn.Address) bool
- func (csdb *CommitStateDB) Error() error
- func (csdb *CommitStateDB) Exist(addr ethcmn.Address) bool
- func (csdb *CommitStateDB) Finalise(deleteEmptyObjects bool) error
- func (csdb *CommitStateDB) ForEachStorage(addr ethcmn.Address, cb func(key, value ethcmn.Hash) (stop bool)) error
- func (csdb *CommitStateDB) GetBalance(addr ethcmn.Address) *big.Int
- func (csdb *CommitStateDB) GetCode(addr ethcmn.Address) []byte
- func (csdb *CommitStateDB) GetCodeHash(addr ethcmn.Address) ethcmn.Hash
- func (csdb *CommitStateDB) GetCodeSize(addr ethcmn.Address) int
- func (csdb *CommitStateDB) GetCommittedState(addr ethcmn.Address, hash ethcmn.Hash) ethcmn.Hash
- func (csdb *CommitStateDB) GetLogs(hash ethcmn.Hash) ([]*ethtypes.Log, error)
- func (csdb *CommitStateDB) GetNonce(addr ethcmn.Address) uint64
- func (csdb *CommitStateDB) GetOrNewStateObject(addr ethcmn.Address) StateObject
- func (csdb *CommitStateDB) GetRefund() uint64
- func (csdb *CommitStateDB) GetState(addr ethcmn.Address, hash ethcmn.Hash) ethcmn.Hash
- func (csdb *CommitStateDB) HasSuicided(addr ethcmn.Address) bool
- func (csdb *CommitStateDB) IntermediateRoot(deleteEmptyObjects bool) (ethcmn.Hash, error)
- func (csdb *CommitStateDB) Preimages() map[ethcmn.Hash][]byte
- func (csdb *CommitStateDB) Prepare(thash, bhash ethcmn.Hash, txi int)
- func (csdb *CommitStateDB) RawDump() ethstate.Dump
- func (csdb *CommitStateDB) Reset(_ ethcmn.Hash) error
- func (csdb *CommitStateDB) RevertToSnapshot(revID int)
- func (csdb *CommitStateDB) SetBalance(addr ethcmn.Address, amount *big.Int)
- func (csdb *CommitStateDB) SetCode(addr ethcmn.Address, code []byte)
- func (csdb *CommitStateDB) SetLogs(hash ethcmn.Hash, logs []*ethtypes.Log) error
- func (csdb *CommitStateDB) SetNonce(addr ethcmn.Address, nonce uint64)
- func (csdb *CommitStateDB) SetState(addr ethcmn.Address, key, value ethcmn.Hash)
- func (csdb *CommitStateDB) Snapshot() int
- func (csdb *CommitStateDB) StorageTrie(addr ethcmn.Address) ethstate.Trie
- func (csdb *CommitStateDB) SubBalance(addr ethcmn.Address, amount *big.Int)
- func (csdb *CommitStateDB) SubRefund(gas uint64)
- func (csdb *CommitStateDB) Suicide(addr ethcmn.Address) bool
- func (csdb *CommitStateDB) TxIndex() int
- func (csdb *CommitStateDB) UpdateAccounts()
- func (csdb *CommitStateDB) WithContext(ctx sdk.Context) *CommitStateDB
- type ExecutionResult
- type GasInfo
- type GenesisAccount
- type GenesisState
- type MsgEthereumTx
- func (msg *MsgEthereumTx) ChainID() *big.Int
- func (msg MsgEthereumTx) Cost() *big.Int
- func (msg *MsgEthereumTx) DecodeRLP(s *rlp.Stream) error
- func (msg *MsgEthereumTx) EncodeRLP(w io.Writer) error
- func (msg MsgEthereumTx) Fee() *big.Int
- func (msg *MsgEthereumTx) From() sdk.AccAddress
- func (msg MsgEthereumTx) GetGas() uint64
- func (msg MsgEthereumTx) GetMsgs() []sdk.Msg
- func (msg MsgEthereumTx) GetSignBytes() []byte
- func (msg MsgEthereumTx) GetSigners() []sdk.AccAddress
- func (msg MsgEthereumTx) RLPSignBytes(chainID *big.Int) ethcmn.Hash
- func (msg MsgEthereumTx) RawSignatureValues() (v, r, s *big.Int)
- func (msg MsgEthereumTx) Route() string
- func (msg *MsgEthereumTx) Sign(chainID *big.Int, priv *ecdsa.PrivateKey) error
- func (msg MsgEthereumTx) String() string
- func (msg MsgEthereumTx) To() *ethcmn.Address
- func (msg MsgEthereumTx) Type() string
- func (msg MsgEthereumTx) ValidateBasic() error
- func (msg *MsgEthereumTx) VerifySig(chainID *big.Int) (ethcmn.Address, error)
- type MsgEthermint
- func (msg MsgEthermint) GetSignBytes() []byte
- func (msg MsgEthermint) GetSigners() []sdk.AccAddress
- func (msg MsgEthermint) Route() string
- func (msg MsgEthermint) String() string
- func (msg MsgEthermint) To() *ethcmn.Address
- func (msg MsgEthermint) Type() string
- func (msg MsgEthermint) ValidateBasic() error
- type QueryBloomFilter
- type QueryETHLogs
- type QueryResAccount
- type QueryResBalance
- type QueryResBlockNumber
- type QueryResCode
- type QueryResExportAccount
- type QueryResNonce
- type QueryResProtocolVersion
- type QueryResStorage
- type ResultData
- type State
- type StateObject
- type StateTransition
- type Storage
- type TransactionLogs
- type TxData
Constants ¶
const ( EventTypeEthermint = TypeMsgEthermint EventTypeEthereumTx = TypeMsgEthereumTx AttributeKeyContractAddress = "contract" AttributeKeyRecipient = "recipient" AttributeValueCategory = ModuleName )
Evm module events
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 )
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
const ( QueryProtocolVersion = "protocolVersion" QueryBalance = "balance" QueryBlockNumber = "blockNumber" QueryStorage = "storage" QueryCode = "code" QueryNonce = "nonce" QueryHashToHeight = "hashToHeight" QueryTransactionLogs = "transactionLogs" QueryBloom = "bloom" QueryLogs = "logs" QueryAccount = "account" QueryExportAccount = "exportAccount" )
Supported endpoints
Variables ¶
var ( KeyPrefixBlockHash = []byte{0x01} KeyPrefixBloom = []byte{0x02} KeyPrefixLogs = []byte{0x03} KeyPrefixCode = []byte{0x04} KeyPrefixStorage = []byte{0x05} )
KVStore key prefixes
var ( // ErrInvalidState returns an error resulting from an invalid Storage State. ErrInvalidState = sdkerrors.Register(ModuleName, 2, "invalid storage state") )
var ModuleCdc = codec.New()
ModuleCdc defines the evm module's codec
Functions ¶
func AddressStoragePrefix ¶
AddressStoragePrefix returns a prefix to iterate over a given account storage.
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 GenerateChainConfig ¶
func GenerateChainConfig(chainID *big.Int) *params.ChainConfig
GenerateChainConfig returns an Ethereum chainconfig for EVM state transitions
func GenerateEthAddress ¶
GenerateEthAddress generates an Ethereum address.
func MarshalLogs ¶
MarshalLogs encodes an array of logs using amino
func RegisterCodec ¶
RegisterCodec registers all the necessary types and interfaces for the evm module
func TxDecoder ¶
TxDecoder returns an sdk.TxDecoder that can decode both auth.StdTx and MsgEthereumTx transactions.
func UnmarshalLogs ¶
UnmarshalLogs decodes an amino-encoded byte array into an array of logs
func ValidateLog ¶
ValidateLog performs a basic validation of an ethereum Log fields.
func ValidateSigner ¶
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.
Types ¶
type AccountKeeper ¶
type AccountKeeper interface { NewAccountWithAddress(ctx sdk.Context, addr sdk.AccAddress) authexported.Account GetAllAccounts(ctx sdk.Context) (accounts []authexported.Account) GetAccount(ctx sdk.Context, addr sdk.AccAddress) authexported.Account SetAccount(ctx sdk.Context, account authexported.Account) RemoveAccount(ctx sdk.Context, account authexported.Account) }
AccountKeeper defines the expected account keeper interface
type CommitStateDB ¶
type CommitStateDB struct {
// 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 NewCommitStateDB ¶
func NewCommitStateDB( ctx sdk.Context, storeKey sdk.StoreKey, ak AccountKeeper, ) *CommitStateDB
NewCommitStateDB returns a reference to a newly initialized CommitStateDB which implements Geth's state.StateDB interface.
CONTRACT: Stores used for state must be cache-wrapped as the ordering of the key/value space matters in determining the merkle root.
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) AllLogs ¶
func (csdb *CommitStateDB) AllLogs() []*ethtypes.Log
AllLogs returns all the current logs in the state.
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) Copy ¶
func (csdb *CommitStateDB) Copy() *CommitStateDB
Copy creates a deep, independent copy of the state.
NOTE: Snapshots of the copied state cannot be applied to the copy.
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:
- sends funds to sha(account ++ (nonce + 1))
- 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) 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) GetCode ¶
func (csdb *CommitStateDB) GetCode(addr ethcmn.Address) []byte
GetCode returns the code for a given account.
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 ¶
GetCommittedState retrieves a value from the given account's committed storage.
func (*CommitStateDB) GetLogs ¶
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) GetRefund ¶
func (csdb *CommitStateDB) GetRefund() uint64
GetRefund returns the current value of the refund counter.
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) 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) 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) SetCode ¶
func (csdb *CommitStateDB) SetCode(addr ethcmn.Address, code []byte)
SetCode sets the code for a given account.
func (*CommitStateDB) SetNonce ¶
func (csdb *CommitStateDB) SetNonce(addr ethcmn.Address, nonce uint64)
SetNonce sets the nonce (sequence number) of an account.
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) 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 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 ¶
GasInfo returns the gas limit, gas consumed and gas refunded from the EVM transition execution
type GenesisAccount ¶
type GenesisAccount struct { Address ethcmn.Address `json:"address"` Balance *big.Int `json:"balance"` 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.
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"` }
GenesisState defines the evm module genesis state
func DefaultGenesisState ¶
func DefaultGenesisState() GenesisState
DefaultGenesisState sets default evm genesis state with empty accounts.
func (GenesisState) Validate ¶
func (gs GenesisState) Validate() error
Validate performs basic genesis state validation returning an error upon any failure.
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) 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) 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) 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.
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 QueryBloomFilter ¶
QueryBloomFilter is response type for tx logs query
func (QueryBloomFilter) String ¶
func (q QueryBloomFilter) String() string
type QueryETHLogs ¶
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 QueryResProtocolVersion ¶
type QueryResProtocolVersion struct {
Version string `json:"version"`
}
QueryResProtocolVersion is response type for protocol version query
func (QueryResProtocolVersion) String ¶
func (q QueryResProtocolVersion) 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 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) (*ExecutionResult, 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.
type TransactionLogs ¶
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 ¶
MarshalAmino defines custom encoding scheme for TxData
func (*TxData) UnmarshalAmino ¶
UnmarshalAmino defines custom decoding scheme for TxData