laconicd/docs/api/proto-docs.md
Federico Kunze Küllmer 1ad9b4c1a5
evm: EIP1559 & go-ethereum related updates (#469)
* updates

* more changes

* proto updates

* tidy

* v1beta1

* update buf

* lint

* comments

* typo
2021-08-25 14:45:51 +00:00

34 KiB
Raw Blame History

Protobuf Documentation

Table of Contents

Top

ethermint/crypto/v1/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/v1/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

ChainConfig

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

Field Type Label Description
homestead_block string Homestead switch block (nil no fork, 0 = already homestead)
dao_fork_block string TheDAO hard-fork switch block (nil 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 (nil 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 (nil no fork, 0 = already on byzantium)
constantinople_block string Constantinople switch block (nil no fork, 0 = already activated)
petersburg_block string Petersburg switch block (nil same as Constantinople)
istanbul_block string Istanbul switch block (nil no fork, 0 = already on istanbul)
muir_glacier_block string Eip-2384 (bomb delay) switch block (nil no fork, 0 = already activated)
berlin_block string Berlin switch block (nil = no fork, 0 = already on berlin)
catalyst_block string Catalyst switch block (nil = no fork, 0 = already on catalyst)
london_block string London switch block (nil = no fork, 0 = already on london)

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
chain_config ChainConfig chain config defines the EVM chain configuration parameters
no_base_fee bool no base fee forces the EIP-1559 base fee to 0 (needed for 0 price calls)

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

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/v1/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.
params Params params defines all the paramaters of the module.
txs_logs TransactionLogs repeated

Top

ethermint/evm/v1/tx.proto

AccessListTx

AccessListTx is the data of EIP-2930 access list transactions.

Field Type Label Description
chain_id string destination EVM chain ID
nonce uint64 nonce corresponds to the account nonce (transaction sequence).
gas_price string gas price defines the value for each gas unit
gas uint64 gas defines the gas limit defined for the transaction.
to string hex formatted address of the recipient
value string value defines the unsigned integer value of the transaction amount.
data 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

DynamicFeeTx

DynamicFeeTx is the data of EIP-1559 dinamic fee transactions.

Field Type Label Description
chain_id string destination EVM chain ID
nonce uint64 nonce corresponds to the account nonce (transaction sequence).
gas_tip_cap string gas tip cap defines the max value for the gas tip
gas_fee_cap string gas fee cap defines the max value for the gas fee
gas uint64 gas defines the gas limit defined for the transaction.
to string hex formatted address of the recipient
value string value defines the the transaction amount.
data 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

ExtensionOptionsEthereumTx

LegacyTx

LegacyTx is the transaction data of regular Ethereum transactions.

Field Type Label Description
nonce uint64 nonce corresponds to the account nonce (transaction sequence).
gas_price string gas price defines the value for each gas unit
gas uint64 gas defines the gas limit defined for the transaction.
to string hex formatted address of the recipient
value string value defines the unsigned integer value of the transaction amount.
data bytes input defines the data payload bytes of the transaction.
v bytes v defines the signature value
r bytes r defines the signature value
s bytes s define the signature value

MsgEthereumTx

MsgEthereumTx encapsulates an Ethereum transaction as an SDK message.

Field Type Label Description
data google.protobuf.Any 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
hash string ethereum transaction hash in hex format. This hash differs from the Tendermint sha256 hash of the transaction bytes. See https://github.com/tendermint/tendermint/issues/6539 for reference
logs Log repeated logs contains the transaction hash and the proto-compatible ethereum logs.
ret bytes returned data from evm function (result or data supplied with revert opcode)
vm_error string vm error is the error returned by vm execution
gas_used uint64 gas consumed by the transaction

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/evm/v1/query.proto

EstimateGasResponse

EstimateGasResponse defines EstimateGas response

Field Type Label Description
gas uint64 the estimated gas

EthCallRequest

EthCallRequest defines EthCall request

Field Type Label Description
args bytes same json format as the json rpc api.
gas_cap uint64 the default gas cap to be used

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 string code hash is the hex-formatted 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.

QueryBaseFeeRequest

QueryBaseFeeRequest defines the request type for querying the EIP1559 base fee.

QueryBaseFeeResponse

BaseFeeResponse returns the EIP1559 base fee.

Field Type Label Description
base_fee string

QueryBlockBloomRequest

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

Field Type Label Description
height int64 height of the block which we want to query the bloom filter. Tendermint always replace the query request header by the current context header, height cannot be extracted from there, so we need to explicitly pass it in parameter.

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.

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.

QueryValidatorAccountRequest

QueryValidatorAccountRequest is the request type for the Query/ValidatorAccount RPC method.

Field Type Label Description
cons_address string cons_address is the validator cons address to query the account for.

QueryValidatorAccountResponse

QueryValidatorAccountResponse is the response type for the Query/ValidatorAccount RPC method.

Field Type Label Description
account_address string account_address is the cosmos address of the account in bech32 format.
sequence uint64 sequence is the account's sequence number.
account_number uint64 account_number is the account number

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/v1/account/{address}
CosmosAccount QueryCosmosAccountRequest QueryCosmosAccountResponse CosmosAccount queries an Ethereum account's Cosmos Address. GET /ethermint/evm/v1/cosmos_account/{address}
ValidatorAccount QueryValidatorAccountRequest QueryValidatorAccountResponse ValidatorAccount queries an Ethereum account's from a validator consensus Address. GET /ethermint/evm/v1/validator_account/{cons_address}
Balance QueryBalanceRequest QueryBalanceResponse Balance queries the balance of a the EVM denomination for a single EthAccount. GET /ethermint/evm/v1/balances/{address}
Storage QueryStorageRequest QueryStorageResponse Storage queries the balance of all coins for a single account. GET /ethermint/evm/v1/storage/{address}/{key}
Code QueryCodeRequest QueryCodeResponse Code queries the balance of all coins for a single account. GET /ethermint/evm/v1/codes/{address}
TxLogs QueryTxLogsRequest QueryTxLogsResponse TxLogs queries ethereum logs from a transaction. GET /ethermint/evm/v1/tx_logs/{hash}
BlockLogs QueryBlockLogsRequest QueryBlockLogsResponse BlockLogs queries all the ethereum logs for a given block hash. GET /ethermint/evm/v1/block_logs/{hash}
BlockBloom QueryBlockBloomRequest QueryBlockBloomResponse BlockBloom queries the block bloom filter bytes at a given height. GET /ethermint/evm/v1/block_bloom
Params QueryParamsRequest QueryParamsResponse Params queries the parameters of x/evm module. GET /ethermint/evm/v1/params
BaseFee QueryBaseFeeRequest QueryBaseFeeResponse BaseFee queries the base fee of the parent block of the current block. GET /ethermint/evm/v1/base_fee
EthCall EthCallRequest MsgEthereumTxResponse EthCall implements the eth_call rpc api GET /ethermint/evm/v1/eth_call
EstimateGas EthCallRequest EstimateGasResponse EstimateGas implements the eth_estimateGas rpc api GET /ethermint/evm/v1/estimate_gas

Top

ethermint/types/v1/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 string

Top

ethermint/types/v1/web3.proto

ExtensionOptionsWeb3Tx

Field Type Label Description
typed_data_chain_id uint64 typed data chain id used only in EIP712 Domain and should match Ethereum network ID in a Web3 provider (e.g. Metamask).
fee_payer string fee payer is an account address for the fee payer. It will be validated during EIP712 signature checking.
fee_payer_sig bytes fee payer sig is a signature data from the fee paying account, allows to perform fee delegation when using EIP712 Domain.

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)