2021-01-07 21:45:32 +00:00
|
|
|
syntax = "proto3";
|
2021-08-17 15:30:35 +00:00
|
|
|
package ethermint.evm.v1;
|
2021-01-07 21:45:32 +00:00
|
|
|
|
|
|
|
import "gogoproto/gogo.proto";
|
2021-05-31 14:54:59 +00:00
|
|
|
import "cosmos/base/query/v1beta1/pagination.proto";
|
2021-01-07 21:45:32 +00:00
|
|
|
import "google/api/annotations.proto";
|
2021-08-17 15:30:35 +00:00
|
|
|
import "ethermint/evm/v1/evm.proto";
|
|
|
|
import "ethermint/evm/v1/tx.proto";
|
2021-11-09 18:38:22 +00:00
|
|
|
import "google/protobuf/timestamp.proto";
|
2021-01-07 21:45:32 +00:00
|
|
|
|
2021-06-22 10:49:18 +00:00
|
|
|
option go_package = "github.com/tharsis/ethermint/x/evm/types";
|
2021-01-07 21:45:32 +00:00
|
|
|
|
|
|
|
// Query defines the gRPC querier service.
|
|
|
|
service Query {
|
|
|
|
// Account queries an Ethereum account.
|
|
|
|
rpc Account(QueryAccountRequest) returns (QueryAccountResponse) {
|
2021-08-17 15:30:35 +00:00
|
|
|
option (google.api.http).get = "/ethermint/evm/v1/account/{address}";
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
|
|
|
|
2021-06-22 10:14:40 +00:00
|
|
|
// CosmosAccount queries an Ethereum account's Cosmos Address.
|
2021-07-30 11:40:17 +00:00
|
|
|
rpc CosmosAccount(QueryCosmosAccountRequest)
|
|
|
|
returns (QueryCosmosAccountResponse) {
|
2021-10-07 11:02:31 +00:00
|
|
|
option (google.api.http).get = "/ethermint/evm/v1/cosmos_account/{address}";
|
2021-04-18 15:54:18 +00:00
|
|
|
}
|
|
|
|
|
2021-07-30 11:40:17 +00:00
|
|
|
// ValidatorAccount queries an Ethereum account's from a validator consensus
|
|
|
|
// Address.
|
|
|
|
rpc ValidatorAccount(QueryValidatorAccountRequest)
|
|
|
|
returns (QueryValidatorAccountResponse) {
|
|
|
|
option (google.api.http).get =
|
2021-08-17 15:30:35 +00:00
|
|
|
"/ethermint/evm/v1/validator_account/{cons_address}";
|
2021-06-22 10:14:40 +00:00
|
|
|
}
|
|
|
|
|
2021-01-07 21:45:32 +00:00
|
|
|
// Balance queries the balance of a the EVM denomination for a single
|
|
|
|
// EthAccount.
|
|
|
|
rpc Balance(QueryBalanceRequest) returns (QueryBalanceResponse) {
|
2021-08-17 15:30:35 +00:00
|
|
|
option (google.api.http).get = "/ethermint/evm/v1/balances/{address}";
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Storage queries the balance of all coins for a single account.
|
|
|
|
rpc Storage(QueryStorageRequest) returns (QueryStorageResponse) {
|
2021-10-07 11:02:31 +00:00
|
|
|
option (google.api.http).get = "/ethermint/evm/v1/storage/{address}/{key}";
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Code queries the balance of all coins for a single account.
|
|
|
|
rpc Code(QueryCodeRequest) returns (QueryCodeResponse) {
|
2021-08-17 15:30:35 +00:00
|
|
|
option (google.api.http).get = "/ethermint/evm/v1/codes/{address}";
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Params queries the parameters of x/evm module.
|
|
|
|
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
2021-08-17 15:30:35 +00:00
|
|
|
option (google.api.http).get = "/ethermint/evm/v1/params";
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
2021-10-07 11:02:31 +00:00
|
|
|
|
2021-07-09 09:04:46 +00:00
|
|
|
// EthCall implements the `eth_call` rpc api
|
|
|
|
rpc EthCall(EthCallRequest) returns (MsgEthereumTxResponse) {
|
2021-08-17 15:30:35 +00:00
|
|
|
option (google.api.http).get = "/ethermint/evm/v1/eth_call";
|
2021-07-09 09:04:46 +00:00
|
|
|
}
|
2021-07-19 15:19:23 +00:00
|
|
|
|
|
|
|
// EstimateGas implements the `eth_estimateGas` rpc api
|
|
|
|
rpc EstimateGas(EthCallRequest) returns (EstimateGasResponse) {
|
2021-08-17 15:30:35 +00:00
|
|
|
option (google.api.http).get = "/ethermint/evm/v1/estimate_gas";
|
2021-07-19 15:19:23 +00:00
|
|
|
}
|
2021-09-04 20:33:06 +00:00
|
|
|
|
|
|
|
// TraceTx implements the `debug_traceTransaction` rpc api
|
|
|
|
rpc TraceTx(QueryTraceTxRequest) returns (QueryTraceTxResponse) {
|
|
|
|
option (google.api.http).get = "/ethermint/evm/v1/trace_tx";
|
|
|
|
}
|
2021-11-09 18:38:22 +00:00
|
|
|
|
|
|
|
// TraceBlock implements the `debug_traceBlockByNumber` and `debug_traceBlockByHash` rpc api
|
|
|
|
rpc TraceBlock(QueryTraceBlockRequest) returns (QueryTraceBlockResponse) {
|
|
|
|
option (google.api.http).get = "/ethermint/evm/v1/trace_block";
|
|
|
|
}
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// QueryAccountRequest is the request type for the Query/Account RPC method.
|
|
|
|
message QueryAccountRequest {
|
2021-07-30 11:40:17 +00:00
|
|
|
option (gogoproto.equal) = false;
|
2021-01-07 21:45:32 +00:00
|
|
|
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.
|
2021-07-02 09:29:47 +00:00
|
|
|
string balance = 1;
|
2021-06-08 17:10:29 +00:00
|
|
|
// code hash is the hex-formatted code bytes from the EOA.
|
|
|
|
string code_hash = 2;
|
2021-01-07 21:45:32 +00:00
|
|
|
// nonce is the account's sequence number.
|
|
|
|
uint64 nonce = 3;
|
|
|
|
}
|
|
|
|
|
2021-07-30 11:40:17 +00:00
|
|
|
// QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC
|
|
|
|
// method.
|
2021-04-18 15:54:18 +00:00
|
|
|
message QueryCosmosAccountRequest {
|
2021-07-30 11:40:17 +00:00
|
|
|
option (gogoproto.equal) = false;
|
2021-04-18 15:54:18 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
|
|
|
|
// address is the ethereum hex address to query the account for.
|
|
|
|
string address = 1;
|
|
|
|
}
|
|
|
|
|
2021-07-30 11:40:17 +00:00
|
|
|
// QueryCosmosAccountResponse is the response type for the Query/CosmosAccount
|
|
|
|
// RPC method.
|
2021-04-18 15:54:18 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2021-07-30 11:40:17 +00:00
|
|
|
// QueryValidatorAccountRequest is the request type for the
|
|
|
|
// Query/ValidatorAccount RPC method.
|
2021-06-22 10:14:40 +00:00
|
|
|
message QueryValidatorAccountRequest {
|
2021-07-30 11:40:17 +00:00
|
|
|
option (gogoproto.equal) = false;
|
2021-06-22 10:14:40 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
|
|
|
|
// cons_address is the validator cons address to query the account for.
|
|
|
|
string cons_address = 1;
|
|
|
|
}
|
|
|
|
|
2021-07-30 11:40:17 +00:00
|
|
|
// QueryValidatorAccountResponse is the response type for the
|
|
|
|
// Query/ValidatorAccount RPC method.
|
2021-06-22 10:14:40 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2021-01-07 21:45:32 +00:00
|
|
|
// QueryBalanceRequest is the request type for the Query/Balance RPC method.
|
|
|
|
message QueryBalanceRequest {
|
2021-07-30 11:40:17 +00:00
|
|
|
option (gogoproto.equal) = false;
|
2021-01-07 21:45:32 +00:00
|
|
|
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.
|
2021-07-02 09:29:47 +00:00
|
|
|
string balance = 1;
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// QueryStorageRequest is the request type for the Query/Storage RPC method.
|
|
|
|
message QueryStorageRequest {
|
2021-07-30 11:40:17 +00:00
|
|
|
option (gogoproto.equal) = false;
|
2021-01-07 21:45:32 +00:00
|
|
|
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 {
|
2021-07-30 11:40:17 +00:00
|
|
|
option (gogoproto.equal) = false;
|
2021-01-07 21:45:32 +00:00
|
|
|
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 {
|
2021-07-30 11:40:17 +00:00
|
|
|
option (gogoproto.equal) = false;
|
2021-01-07 21:45:32 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
|
|
|
|
// hash is the ethereum transaction hex hash to query the logs for.
|
|
|
|
string hash = 1;
|
2021-09-09 14:26:30 +00:00
|
|
|
// pagination defines an optional pagination for the request.
|
|
|
|
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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;
|
2021-09-09 14:26:30 +00:00
|
|
|
// pagination defines the pagination in the response.
|
|
|
|
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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.
|
2021-07-30 11:40:17 +00:00
|
|
|
Params params = 1 [ (gogoproto.nullable) = false ];
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
2021-04-18 15:54:18 +00:00
|
|
|
|
2021-07-09 09:04:46 +00:00
|
|
|
// EthCallRequest defines EthCall request
|
|
|
|
message EthCallRequest {
|
|
|
|
// same json format as the json rpc api.
|
|
|
|
bytes args = 1;
|
2021-07-19 15:19:23 +00:00
|
|
|
// the default gas cap to be used
|
|
|
|
uint64 gas_cap = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// EstimateGasResponse defines EstimateGas response
|
|
|
|
message EstimateGasResponse {
|
|
|
|
// the estimated gas
|
|
|
|
uint64 gas = 1;
|
2021-07-09 09:04:46 +00:00
|
|
|
}
|
2021-09-04 20:33:06 +00:00
|
|
|
|
|
|
|
// QueryTraceTxRequest defines TraceTx request
|
|
|
|
message QueryTraceTxRequest {
|
|
|
|
// msgEthereumTx for the requested transaction
|
|
|
|
MsgEthereumTx msg = 1;
|
2022-04-16 17:31:30 +00:00
|
|
|
// tx_index is not necessary anymore
|
|
|
|
reserved 2;
|
|
|
|
reserved "tx_index";
|
2021-09-04 20:33:06 +00:00
|
|
|
// TraceConfig holds extra parameters to trace functions.
|
|
|
|
TraceConfig trace_config = 3;
|
2021-11-09 18:38:22 +00:00
|
|
|
// the predecessor transactions included in the same block
|
|
|
|
// need to be replayed first to get correct context for tracing.
|
|
|
|
repeated MsgEthereumTx predecessors = 4;
|
|
|
|
// block number of requested transaction
|
|
|
|
int64 block_number = 5;
|
|
|
|
// block hex hash of requested transaction
|
|
|
|
string block_hash = 6;
|
|
|
|
// block time of requested transaction
|
|
|
|
google.protobuf.Timestamp block_time = 7 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
|
2021-09-04 20:33:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// QueryTraceTxResponse defines TraceTx response
|
|
|
|
message QueryTraceTxResponse {
|
|
|
|
// response serialized in bytes
|
|
|
|
bytes data = 1;
|
2021-09-15 09:45:03 +00:00
|
|
|
}
|
2021-11-09 18:38:22 +00:00
|
|
|
|
|
|
|
// QueryTraceBlockRequest defines TraceTx request
|
|
|
|
message QueryTraceBlockRequest {
|
|
|
|
// txs messages in the block
|
|
|
|
repeated MsgEthereumTx txs = 1;
|
|
|
|
// TraceConfig holds extra parameters to trace functions.
|
|
|
|
TraceConfig trace_config = 3;
|
|
|
|
// block number
|
|
|
|
int64 block_number = 5;
|
|
|
|
// block hex hash
|
|
|
|
string block_hash = 6;
|
|
|
|
// block time
|
|
|
|
google.protobuf.Timestamp block_time = 7 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
|
|
|
|
}
|
|
|
|
|
|
|
|
// QueryTraceBlockResponse defines TraceBlock response
|
|
|
|
message QueryTraceBlockResponse {
|
|
|
|
bytes data = 1;
|
|
|
|
}
|
|
|
|
|