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; // pagination defines an optional pagination for the request. cosmos.base.query.v1beta1.PageRequest pagination = 2; } // 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; // pagination defines the pagination in the response. cosmos.base.query.v1beta1.PageResponse pagination = 2; } // 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 ]; } // 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; }