c7554e96aa
* fix typo * Added tracers package to debug API * Add GetTransactionByHash function to backend package * first version * traceTransaction first version * clean PR * revert debug changes * Update proto/ethermint/evm/v1/query.proto Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * remove unnecesary panic * remove internal debug api * trace transaction javascript tracer * add support for custom logConfig * added comment * traceTransactions tests * fix linter * remove unused * add comments to traceConfig * update dependencies * updated endpoints md * Apply suggestions from code review * Update x/evm/keeper/grpc_query.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update x/evm/keeper/grpc_query.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
301 lines
9.8 KiB
Protocol Buffer
301 lines
9.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
package ethermint.evm.v1;
|
|
|
|
import "gogoproto/gogo.proto";
|
|
import "cosmos/base/query/v1beta1/pagination.proto";
|
|
import "google/api/annotations.proto";
|
|
import "ethermint/evm/v1/evm.proto";
|
|
import "ethermint/evm/v1/tx.proto";
|
|
|
|
option go_package = "github.com/tharsis/ethermint/x/evm/types";
|
|
|
|
// Query defines the gRPC querier service.
|
|
service Query {
|
|
// Account queries an Ethereum account.
|
|
rpc Account(QueryAccountRequest) returns (QueryAccountResponse) {
|
|
option (google.api.http).get = "/ethermint/evm/v1/account/{address}";
|
|
}
|
|
|
|
// CosmosAccount queries an Ethereum account's Cosmos Address.
|
|
rpc CosmosAccount(QueryCosmosAccountRequest)
|
|
returns (QueryCosmosAccountResponse) {
|
|
option (google.api.http).get =
|
|
"/ethermint/evm/v1/cosmos_account/{address}";
|
|
}
|
|
|
|
// ValidatorAccount queries an Ethereum account's from a validator consensus
|
|
// Address.
|
|
rpc ValidatorAccount(QueryValidatorAccountRequest)
|
|
returns (QueryValidatorAccountResponse) {
|
|
option (google.api.http).get =
|
|
"/ethermint/evm/v1/validator_account/{cons_address}";
|
|
}
|
|
|
|
// Balance queries the balance of a the EVM denomination for a single
|
|
// EthAccount.
|
|
rpc Balance(QueryBalanceRequest) returns (QueryBalanceResponse) {
|
|
option (google.api.http).get = "/ethermint/evm/v1/balances/{address}";
|
|
}
|
|
|
|
// Storage queries the balance of all coins for a single account.
|
|
rpc Storage(QueryStorageRequest) returns (QueryStorageResponse) {
|
|
option (google.api.http).get =
|
|
"/ethermint/evm/v1/storage/{address}/{key}";
|
|
}
|
|
|
|
// Code queries the balance of all coins for a single account.
|
|
rpc Code(QueryCodeRequest) returns (QueryCodeResponse) {
|
|
option (google.api.http).get = "/ethermint/evm/v1/codes/{address}";
|
|
}
|
|
|
|
// TxLogs queries ethereum logs from a transaction.
|
|
rpc TxLogs(QueryTxLogsRequest) returns (QueryTxLogsResponse) {
|
|
option (google.api.http).get = "/ethermint/evm/v1/tx_logs/{hash}";
|
|
}
|
|
|
|
// BlockLogs queries all the ethereum logs for a given block hash.
|
|
rpc BlockLogs(QueryBlockLogsRequest) returns (QueryBlockLogsResponse) {
|
|
option (google.api.http).get = "/ethermint/evm/v1/block_logs/{hash}";
|
|
}
|
|
|
|
// BlockBloom queries the block bloom filter bytes at a given height.
|
|
rpc BlockBloom(QueryBlockBloomRequest) returns (QueryBlockBloomResponse) {
|
|
option (google.api.http).get = "/ethermint/evm/v1/block_bloom";
|
|
}
|
|
|
|
// Params queries the parameters of x/evm module.
|
|
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
|
option (google.api.http).get = "/ethermint/evm/v1/params";
|
|
}
|
|
|
|
// EthCall implements the `eth_call` rpc api
|
|
rpc EthCall(EthCallRequest) returns (MsgEthereumTxResponse) {
|
|
option (google.api.http).get = "/ethermint/evm/v1/eth_call";
|
|
}
|
|
|
|
// EstimateGas implements the `eth_estimateGas` rpc api
|
|
rpc EstimateGas(EthCallRequest) returns (EstimateGasResponse) {
|
|
option (google.api.http).get = "/ethermint/evm/v1/estimate_gas";
|
|
}
|
|
|
|
// TraceTx implements the `debug_traceTransaction` rpc api
|
|
rpc TraceTx(QueryTraceTxRequest) returns (QueryTraceTxResponse) {
|
|
option (google.api.http).get = "/ethermint/evm/v1/trace_tx";
|
|
}
|
|
}
|
|
|
|
// QueryAccountRequest is the request type for the Query/Account RPC method.
|
|
message QueryAccountRequest {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// address is the ethereum hex address to query the account for.
|
|
string address = 1;
|
|
}
|
|
|
|
// QueryAccountResponse is the response type for the Query/Account RPC method.
|
|
message QueryAccountResponse {
|
|
// balance is the balance of the EVM denomination.
|
|
string balance = 1;
|
|
// code hash is the hex-formatted code bytes from the EOA.
|
|
string code_hash = 2;
|
|
// nonce is the account's sequence number.
|
|
uint64 nonce = 3;
|
|
}
|
|
|
|
// QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC
|
|
// method.
|
|
message QueryCosmosAccountRequest {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// address is the ethereum hex address to query the account for.
|
|
string address = 1;
|
|
}
|
|
|
|
// QueryCosmosAccountResponse is the response type for the Query/CosmosAccount
|
|
// RPC method.
|
|
message QueryCosmosAccountResponse {
|
|
// cosmos_address is the cosmos address of the account.
|
|
string cosmos_address = 1;
|
|
// sequence is the account's sequence number.
|
|
uint64 sequence = 2;
|
|
// account_number is the account numbert
|
|
uint64 account_number = 3;
|
|
}
|
|
|
|
// QueryValidatorAccountRequest is the request type for the
|
|
// Query/ValidatorAccount RPC method.
|
|
message QueryValidatorAccountRequest {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// cons_address is the validator cons address to query the account for.
|
|
string cons_address = 1;
|
|
}
|
|
|
|
// QueryValidatorAccountResponse is the response type for the
|
|
// Query/ValidatorAccount RPC method.
|
|
message QueryValidatorAccountResponse {
|
|
// account_address is the cosmos address of the account in bech32 format.
|
|
string account_address = 1;
|
|
// sequence is the account's sequence number.
|
|
uint64 sequence = 2;
|
|
// account_number is the account number
|
|
uint64 account_number = 3;
|
|
}
|
|
|
|
// QueryBalanceRequest is the request type for the Query/Balance RPC method.
|
|
message QueryBalanceRequest {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// address is the ethereum hex address to query the balance for.
|
|
string address = 1;
|
|
}
|
|
|
|
// QueryBalanceResponse is the response type for the Query/Balance RPC method.
|
|
message QueryBalanceResponse {
|
|
// balance is the balance of the EVM denomination.
|
|
string balance = 1;
|
|
}
|
|
|
|
// QueryStorageRequest is the request type for the Query/Storage RPC method.
|
|
message QueryStorageRequest {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
/// address is the ethereum hex address to query the storage state for.
|
|
string address = 1;
|
|
|
|
// key defines the key of the storage state
|
|
string key = 2;
|
|
}
|
|
|
|
// QueryStorageResponse is the response type for the Query/Storage RPC
|
|
// method.
|
|
message QueryStorageResponse {
|
|
// key defines the storage state value hash associated with the given key.
|
|
string value = 1;
|
|
}
|
|
|
|
// QueryCodeRequest is the request type for the Query/Code RPC method.
|
|
message QueryCodeRequest {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// address is the ethereum hex address to query the code for.
|
|
string address = 1;
|
|
}
|
|
|
|
// QueryCodeResponse is the response type for the Query/Code RPC
|
|
// method.
|
|
message QueryCodeResponse {
|
|
// code represents the code bytes from an ethereum address.
|
|
bytes code = 1;
|
|
}
|
|
|
|
// QueryTxLogsRequest is the request type for the Query/TxLogs RPC method.
|
|
message QueryTxLogsRequest {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// hash is the ethereum transaction hex hash to query the logs for.
|
|
string hash = 1;
|
|
}
|
|
|
|
// QueryTxLogs is the response type for the Query/TxLogs RPC method.
|
|
message QueryTxLogsResponse {
|
|
// logs represents the ethereum logs generated from the given transaction.
|
|
repeated Log logs = 1;
|
|
}
|
|
|
|
// QueryBlockLogsRequest is the request type for the Query/BlockLogs RPC method.
|
|
message QueryBlockLogsRequest {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// hash is the block hash to query the logs for.
|
|
string hash = 1;
|
|
// pagination defines an optional pagination for the request.
|
|
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
|
}
|
|
|
|
// QueryTxLogs is the response type for the Query/BlockLogs RPC method.
|
|
message QueryBlockLogsResponse {
|
|
// logs represents the ethereum logs generated at the given block hash.
|
|
repeated TransactionLogs tx_logs = 1 [ (gogoproto.nullable) = false ];
|
|
// pagination defines the pagination in the response.
|
|
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
|
}
|
|
|
|
// QueryBlockBloomRequest is the request type for the Query/BlockBloom RPC
|
|
// method.
|
|
message QueryBlockBloomRequest {
|
|
// 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.
|
|
int64 height = 1;
|
|
}
|
|
|
|
// QueryBlockBloomResponse is the response type for the Query/BlockBloom RPC
|
|
// method.
|
|
message QueryBlockBloomResponse {
|
|
// bloom represents bloom filter for the given block hash.
|
|
bytes bloom = 1;
|
|
}
|
|
|
|
// QueryParamsRequest defines the request type for querying x/evm parameters.
|
|
message QueryParamsRequest {}
|
|
|
|
// QueryParamsResponse defines the response type for querying x/evm parameters.
|
|
message QueryParamsResponse {
|
|
// params define the evm module parameters.
|
|
Params params = 1 [ (gogoproto.nullable) = false ];
|
|
}
|
|
|
|
// QueryBaseFeeRequest defines the request type for querying the EIP1559 base
|
|
// fee.
|
|
message QueryBaseFeeRequest {}
|
|
|
|
// BaseFeeResponse returns the EIP1559 base fee.
|
|
message QueryBaseFeeResponse {
|
|
string base_fee = 1 [
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
}
|
|
|
|
// QueryStaticCallRequest defines static call response
|
|
message QueryStaticCallResponse { bytes data = 1; }
|
|
|
|
// EthCallRequest defines EthCall request
|
|
message EthCallRequest {
|
|
// same json format as the json rpc api.
|
|
bytes args = 1;
|
|
// the default gas cap to be used
|
|
uint64 gas_cap = 2;
|
|
}
|
|
|
|
// EstimateGasResponse defines EstimateGas response
|
|
message EstimateGasResponse {
|
|
// the estimated gas
|
|
uint64 gas = 1;
|
|
}
|
|
|
|
// QueryTraceTxRequest defines TraceTx request
|
|
message QueryTraceTxRequest {
|
|
// msgEthereumTx for the requested transaction
|
|
MsgEthereumTx msg = 1;
|
|
// transaction index
|
|
uint32 tx_index = 2;
|
|
// TraceConfig holds extra parameters to trace functions.
|
|
TraceConfig trace_config = 3;
|
|
}
|
|
|
|
// QueryTraceTxResponse defines TraceTx response
|
|
message QueryTraceTxResponse {
|
|
// response serialized in bytes
|
|
bytes data = 1;
|
|
} |