laconicd-deprecated/docs/api/proto-docs.md
yihuang 8f932ddc6a
!feat(evm): Reject not replay-protected tx to prevent replay attack (#1124)
* Reject not replay-protected tx to prevent replay attack

Closes: #1122

- reject such txs in ante handler

* add reject unprotected parameter

* Update CHANGELOG.md

* Apply suggestions from code review

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

* pr suggestions

* add unit test case

* Reject not replay-protected tx to prevent replay attack

Closes: #1122

- reject such txs in ante handler

add reject unprotected parameter

Update CHANGELOG.md

Apply suggestions from code review

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

pr suggestions

add unit test case

use var

* add migrations

* Apply suggestions from code review

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

* rename

* update comments

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-06-13 09:41:53 +00:00

40 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)
london_block string London switch block (nil = no fork, 0 = already on london)
arrow_glacier_block string Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already activated)
merge_fork_block string EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in merge proceedings)

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
reject_unprotected_tx bool reject replay-unprotected transactions

State

State represents a single Storage key value pair item.

Field Type Label Description
key string
value string

TraceConfig

TraceConfig holds extra parameters to trace functions.

Field Type Label Description
tracer string custom javascript tracer
timeout string overrides the default timeout of 5 seconds for JavaScript-based tracing calls
reexec uint64 number of blocks the tracer is willing to go back
disable_stack bool disable stack capture
disable_storage bool disable storage capture
debug bool print output during capture end
limit int32 maximum length of output, but zero means unlimited
overrides ChainConfig Chain overrides, can be used to execute a trace using future fork rules
enable_memory bool enable memory capture
enable_return_data bool enable return data capture

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 parameters of the module.

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. NOTE: All non-protected transactions (i.e non EIP155 signed) will fail if the RejectUnprotectedTx parameter is enabled.

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. POST /ethermint/evm/v1/ethereum_tx

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

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.

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.

QueryTraceBlockRequest

QueryTraceBlockRequest defines TraceTx request

Field Type Label Description
txs MsgEthereumTx repeated txs messages in the block
trace_config TraceConfig TraceConfig holds extra parameters to trace functions.
block_number int64 block number
block_hash string block hex hash
block_time google.protobuf.Timestamp block time

QueryTraceBlockResponse

QueryTraceBlockResponse defines TraceBlock response

Field Type Label Description
data bytes

QueryTraceTxRequest

QueryTraceTxRequest defines TraceTx request

Field Type Label Description
msg MsgEthereumTx msgEthereumTx for the requested transaction
trace_config TraceConfig TraceConfig holds extra parameters to trace functions.
predecessors MsgEthereumTx repeated the predecessor transactions included in the same block need to be replayed first to get correct context for tracing.
block_number int64 block number of requested transaction
block_hash string block hex hash of requested transaction
block_time google.protobuf.Timestamp block time of requested transaction

QueryTraceTxResponse

QueryTraceTxResponse defines TraceTx response

Field Type Label Description
data bytes response serialized in bytes

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.
pagination cosmos.base.query.v1beta1.PageRequest pagination defines an optional pagination for the request.

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.
pagination cosmos.base.query.v1beta1.PageResponse pagination defines the pagination in the response.

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}
Params QueryParamsRequest QueryParamsResponse Params queries the parameters of x/evm module. GET /ethermint/evm/v1/params
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
TraceTx QueryTraceTxRequest QueryTraceTxResponse TraceTx implements the debug_traceTransaction rpc api GET /ethermint/evm/v1/trace_tx
TraceBlock QueryTraceBlockRequest QueryTraceBlockResponse TraceBlock implements the debug_traceBlockByNumber and debug_traceBlockByHash rpc api GET /ethermint/evm/v1/trace_block
BaseFee QueryBaseFeeRequest QueryBaseFeeResponse BaseFee queries the base fee of the parent block of the current block, it's similar to feemarket module's method, but also checks london hardfork status. GET /ethermint/evm/v1/base_fee

Top

ethermint/feemarket/v1/feemarket.proto

Params

Params defines the EVM module parameters

Field Type Label Description
no_base_fee bool no base fee forces the EIP-1559 base fee to 0 (needed for 0 price calls)
base_fee_change_denominator uint32 base fee change denominator bounds the amount the base fee can change between blocks.
elasticity_multiplier uint32 elasticity multiplier bounds the maximum gas limit an EIP-1559 block may have.
enable_height int64 height at which the base fee calculation is enabled.
base_fee string base fee for EIP-1559 blocks.
min_gas_price string min_gas_price defines the minimum gas price value for cosmos and eth transactions
min_gas_multiplier string min gas denominator bounds the minimum gasUsed to be charged to senders based on GasLimit

Top

ethermint/feemarket/v1/genesis.proto

GenesisState

GenesisState defines the feemarket module's genesis state.

Field Type Label Description
params Params params defines all the paramaters of the module.
block_gas uint64 block gas is the amount of gas wanted on the last block before the upgrade. Zero by default.

Top

ethermint/feemarket/v1/query.proto

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

QueryBlockGasRequest

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

QueryBlockGasResponse

QueryBlockGasResponse returns block gas used for a given height.

Field Type Label Description
gas int64

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.

Query

Query defines the gRPC querier service.

Method Name Request Type Response Type Description HTTP Verb Endpoint
Params QueryParamsRequest QueryParamsResponse Params queries the parameters of x/feemarket module. GET /ethermint/feemarket/v1/params
BaseFee QueryBaseFeeRequest QueryBaseFeeResponse BaseFee queries the base fee of the parent block of the current block. GET /ethermint/feemarket/v1/base_fee
BlockGas QueryBlockGasRequest QueryBlockGasResponse BlockGas queries the gas used at a given block height GET /ethermint/feemarket/v1/block_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)