laconicd/docs/core/proto-docs.md
Federico Kunze abcfc9a6ba
evm: error and block hash map updates (#60)
* evm: error and block hash map updates

* evm: update tests
2021-05-31 10:54:59 -04:00

32 KiB
Raw Blame History

Protobuf Documentation

Table of Contents

Top

ethermint/crypto/v1alpha1/ethsecp256k1/keys.proto

PrivKey

PrivKey defines a type alias for an ecdsa.PrivateKey that implements Tendermint's PrivateKey interface.

Field Type Label Description
key bytes

PubKey

PubKey defines a type alias for an ecdsa.PublicKey that implements Tendermint's PubKey interface. It represents the 33-byte compressed public key format.

Field Type Label Description
key bytes

Top

ethermint/evm/v1alpha1/evm.proto

AccessTuple

AccessTuple is the element type of an access list.

Field Type Label Description
address string hex formatted ethereum address
storage_keys string repeated hex formatted hashes of the storage keys

BytesList

Field Type Label Description
bytes bytes repeated

ChainConfig

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.

Field Type Label Description
homestead_block string Homestead switch block (< 0 no fork, 0 = already homestead)
dao_fork_block string TheDAO hard-fork switch block (< 0 no fork)
dao_fork_support bool Whether the nodes supports or opposes the DAO hard-fork
eip150_block string EIP150 implements the Gas price changes (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (< 0 no fork)
eip150_hash string EIP150 HF hash (needed for header only clients as only gas pricing changed)
eip155_block string EIP155Block HF block
eip158_block string EIP158 HF block
byzantium_block string Byzantium switch block (< 0 no fork, 0 = already on byzantium)
constantinople_block string Constantinople switch block (< 0 no fork, 0 = already activated)
petersburg_block string Petersburg switch block (< 0 same as Constantinople)
istanbul_block string Istanbul switch block (< 0 no fork, 0 = already on istanbul)
muir_glacier_block string Eip-2384 (bomb delay) switch block (< 0 no fork, 0 = already activated)
berlin_block string Berlin switch block (< 0 = no fork, 0 = already on berlin)
yolo_v3_block string YOLO v3: Gas repricings
ewasm_block string EWASM switch block (< 0 no fork, 0 = already activated)
catalyst_block string Catalyst switch block (< 0 = no fork, 0 = already on catalyst)

Log

Log represents an protobuf compatible Ethereum Log that defines a contract log event. These events are generated by the LOG opcode and stored/indexed by the node.

Field Type Label Description
address string address of the contract that generated the event
topics string repeated list of topics provided by the contract.
data bytes supplied by the contract, usually ABI-encoded
block_number uint64 block in which the transaction was included
tx_hash string hash of the transaction
tx_index uint64 index of the transaction in the block
block_hash string hash of the block in which the transaction was included
index uint64 index of the log in the block
removed bool The Removed field is true if this log was reverted due to a chain reorganisation. You must pay attention to this field if you receive logs through a filter query.

Params

Params defines the EVM module parameters

Field Type Label Description
evm_denom string evm_denom represents the token denomination used to run the EVM state transitions.
enable_create bool enable_create toggles state transitions that use the vm.Create function
enable_call bool enable_call toggles state transitions that use the vm.Call function
extra_eips int64 repeated extra_eips defines the additional EIPs for the vm.Config

State

State represents a single Storage key value pair item.

Field Type Label Description
key string
value string

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.

Field Type Label Description
hash string
logs Log repeated

TxData

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

Field Type Label Description
chain_id bytes destination EVM chain ID
nonce uint64 nonce corresponds to the account nonce (transaction sequence).
gas_price bytes price defines the unsigned integer value of the gas price in bytes.
gas uint64 gas defines the gas limit defined for the transaction.
to string hex formatted address of the recipient
value bytes value defines the unsigned integer value of the transaction amount.
input bytes input defines the data payload bytes of the transaction.
accesses AccessTuple repeated
v bytes v defines the signature value
r bytes r defines the signature value
s bytes s define the signature value

TxReceipt

TxReceipt defines the receipt type stored in KV for each EVM transaction.

Field Type Label Description
hash string
from string
data TxData
result TxResult
index uint64
block_height uint64
block_hash string

TxResult

TxResult stores results of Tx execution.

Field Type Label Description
contract_address string contract_address contains the ethereum address of the created contract (if any). If the state transition is an evm.Call, the contract address will be empty.
bloom bytes bloom represents the bloom filter bytes
tx_logs TransactionLogs tx_logs contains the transaction hash and the proto-compatible ethereum logs.
ret bytes ret defines the bytes from the execution.
reverted bool reverted flag is set to true when the call has been reverted
gas_used uint64 gas_used notes the amount of gas consumed while execution

Top

ethermint/evm/v1alpha1/genesis.proto

GenesisAccount

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.

Field Type Label Description
address string address defines an ethereum hex formated address of an account
code string code defines the hex bytes of the account code.
storage State repeated storage defines the set of state key values for the account.

GenesisState

GenesisState defines the evm module's genesis state.

Field Type Label Description
accounts GenesisAccount repeated accounts is an array containing the ethereum genesis accounts.
chain_config ChainConfig chain_config defines the Ethereum chain configuration.
params Params params defines all the paramaters of the module.
txs_logs TransactionLogs repeated

Top

ethermint/evm/v1alpha1/query.proto

QueryAccountRequest

QueryAccountRequest is the request type for the Query/Account RPC method.

Field Type Label Description
address string address is the ethereum hex address to query the account for.

QueryAccountResponse

QueryAccountResponse is the response type for the Query/Account RPC method.

Field Type Label Description
balance string balance is the balance of the EVM denomination.
code_hash bytes code_hash is the code bytes from the EOA.
nonce uint64 nonce is the account's sequence number.

QueryBalanceRequest

QueryBalanceRequest is the request type for the Query/Balance RPC method.

Field Type Label Description
address string address is the ethereum hex address to query the balance for.

QueryBalanceResponse

QueryBalanceResponse is the response type for the Query/Balance RPC method.

Field Type Label Description
balance string balance is the balance of the EVM denomination.

QueryBlockBloomRequest

QueryBlockBloomRequest is the request type for the Query/BlockBloom RPC method.

QueryBlockBloomResponse

QueryBlockBloomResponse is the response type for the Query/BlockBloom RPC method.

Field Type Label Description
bloom bytes bloom represents bloom filter for the given block hash.

QueryBlockLogsRequest

QueryBlockLogsRequest is the request type for the Query/BlockLogs RPC method.

Field Type Label Description
hash string hash is the block hash to query the logs for.
pagination cosmos.base.query.v1beta1.PageRequest pagination defines an optional pagination for the request.

QueryBlockLogsResponse

QueryTxLogs is the response type for the Query/BlockLogs RPC method.

Field Type Label Description
tx_logs TransactionLogs repeated logs represents the ethereum logs generated at the given block hash.
pagination cosmos.base.query.v1beta1.PageResponse pagination defines the pagination in the response.

QueryCodeRequest

QueryCodeRequest is the request type for the Query/Code RPC method.

Field Type Label Description
address string address is the ethereum hex address to query the code for.

QueryCodeResponse

QueryCodeResponse is the response type for the Query/Code RPC method.

Field Type Label Description
code bytes code represents the code bytes from an ethereum address.

QueryCosmosAccountRequest

QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC method.

Field Type Label Description
address string address is the ethereum hex address to query the account for.

QueryCosmosAccountResponse

QueryCosmosAccountResponse is the response type for the Query/CosmosAccount RPC method.

Field Type Label Description
cosmos_address string cosmos_address is the cosmos address of the account.
sequence uint64 sequence is the account's sequence number.
account_number uint64 account_number is the account numbert

QueryParamsRequest

QueryParamsRequest defines the request type for querying x/evm parameters.

QueryParamsResponse

QueryParamsResponse defines the response type for querying x/evm parameters.

Field Type Label Description
params Params params define the evm module parameters.

QueryStaticCallRequest

QueryStaticCallRequest defines static call request

Field Type Label Description
address string address is the ethereum contract hex address to for static call.
input bytes static call input generated from abi

QueryStaticCallResponse

QueryStaticCallRequest defines static call response

Field Type Label Description
data bytes

QueryStorageRequest

QueryStorageRequest is the request type for the Query/Storage RPC method.

Field Type Label Description
address string address is the ethereum hex address to query the storage state for.
key string key defines the key of the storage state

QueryStorageResponse

QueryStorageResponse is the response type for the Query/Storage RPC method.

Field Type Label Description
value string key defines the storage state value hash associated with the given key.

QueryTxLogsRequest

QueryTxLogsRequest is the request type for the Query/TxLogs RPC method.

Field Type Label Description
hash string hash is the ethereum transaction hex hash to query the logs for.

QueryTxLogsResponse

QueryTxLogs is the response type for the Query/TxLogs RPC method.

Field Type Label Description
logs Log repeated logs represents the ethereum logs generated from the given transaction.

QueryTxReceiptRequest

QueryTxReceiptRequest is the request type for the Query/TxReceipt RPC method.

Field Type Label Description
hash string hash is the ethereum transaction hex hash to query the receipt for.

QueryTxReceiptResponse

QueryTxReceiptResponse is the response type for the Query/TxReceipt RPC method.

Field Type Label Description
receipt TxReceipt receipt represents the ethereum receipt for the given transaction.

QueryTxReceiptsByBlockHeightRequest

QueryTxReceiptsByBlockHeightRequest is the request type for the Query/TxReceiptsByBlockHeight RPC method.

QueryTxReceiptsByBlockHeightResponse

QueryTxReceiptsByBlockHeightResponse is the response type for the Query/TxReceiptsByBlockHeight RPC method.

Field Type Label Description
receipts TxReceipt repeated tx receipts list for the block

Query

Query defines the gRPC querier service.

Method Name Request Type Response Type Description HTTP Verb Endpoint
Account QueryAccountRequest QueryAccountResponse Account queries an Ethereum account. GET /ethermint/evm/v1alpha1/account/{address}
CosmosAccount QueryCosmosAccountRequest QueryCosmosAccountResponse Account queries an Ethereum account's Cosmos Address. GET /ethermint/evm/v1alpha1/cosmos_account/{address}
Balance QueryBalanceRequest QueryBalanceResponse Balance queries the balance of a the EVM denomination for a single EthAccount. GET /ethermint/evm/v1alpha1/balances/{address}
Storage QueryStorageRequest QueryStorageResponse Storage queries the balance of all coins for a single account. GET /ethermint/evm/v1alpha1/storage/{address}/{key}
Code QueryCodeRequest QueryCodeResponse Code queries the balance of all coins for a single account. GET /ethermint/evm/v1alpha1/codes/{address}
TxLogs QueryTxLogsRequest QueryTxLogsResponse TxLogs queries ethereum logs from a transaction. GET /ethermint/evm/v1alpha1/tx_logs/{hash}
TxReceipt QueryTxReceiptRequest QueryTxReceiptResponse TxReceipt queries a receipt by a transaction hash. GET /ethermint/evm/v1alpha1/tx_receipt/{hash}
TxReceiptsByBlockHeight QueryTxReceiptsByBlockHeightRequest QueryTxReceiptsByBlockHeightResponse TxReceiptsByBlockHeight queries tx receipts by a block height. GET /ethermint/evm/v1alpha1/tx_receipts_block
BlockLogs QueryBlockLogsRequest QueryBlockLogsResponse BlockLogs queries all the ethereum logs for a given block hash. GET /ethermint/evm/v1alpha1/block_logs/{hash}
BlockBloom QueryBlockBloomRequest QueryBlockBloomResponse BlockBloom queries the block bloom filter bytes at a given height. GET /ethermint/evm/v1alpha1/block_bloom
Params QueryParamsRequest QueryParamsResponse Params queries the parameters of x/evm module. GET /ethermint/evm/v1alpha1/params
StaticCall QueryStaticCallRequest QueryStaticCallResponse StaticCall queries the static call value of x/evm module. GET /ethermint/evm/v1alpha1/static_call

Top

ethermint/evm/v1alpha1/tx.proto

ExtensionOptionsEthereumTx

ExtensionOptionsWeb3Tx

MsgEthereumTx

MsgEthereumTx encapsulates an Ethereum transaction as an SDK message.

Field Type Label Description
data TxData inner transaction data

caches | | size | double | | encoded storage size of the transaction | | hash | string | | transaction hash in hex format | | from | string | | ethereum signer address in hex format. This address value is checked against the address derived from the signature (V, R, S) using the secp256k1 elliptic curve |

MsgEthereumTxResponse

MsgEthereumTxResponse defines the Msg/EthereumTx response type.

Field Type Label Description
contract_address string contract_address contains the ethereum address of the created contract (if any). If the state transition is an evm.Call, the contract address will be empty.
bloom bytes bloom represents the bloom filter bytes
tx_logs TransactionLogs tx_logs contains the transaction hash and the proto-compatible ethereum logs.
ret bytes ret defines the bytes from the execution.
reverted bool reverted flag is set to true when the call has been reverted

Msg

Msg defines the evm Msg service.

Method Name Request Type Response Type Description HTTP Verb Endpoint
EthereumTx MsgEthereumTx MsgEthereumTxResponse EthereumTx defines a method submitting Ethereum transactions.

Top

ethermint/types/v1alpha1/account.proto

EthAccount

EthAccount implements the authtypes.AccountI interface and embeds an authtypes.BaseAccount type. It is compatible with the auth AccountKeeper.

Field Type Label Description
base_account cosmos.auth.v1beta1.BaseAccount
code_hash bytes

Scalar Value Types

.proto Type Notes C++ Java Python Go C# PHP Ruby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)