# Client

A user can query and interact with the `evm` module using the CLI, JSON-RPC, gRPC or REST.

### CLI <a href="#cli" id="cli"></a>

Find below a list of `ethermintd` commands added with the `x/evm` module. You can obtain the full list by using the `ethermintd -h` command.

#### Queries <a href="#queries" id="queries"></a>

The `query` commands allow users to query `evm` state.

**`code`**

Allows users to query the smart contract code at a given address.

```
ethermintd query evm code [address] [flags]
```

```bash
# Example
$ ethermintd query evm code 0x7bf7b17da59880d9bcca24915679668db75f9397

# Output
code: "0xef616c92f3cfc9e92dc270d6acff9cea213cecc7020a76ee4395af09bdceb4837a1ebdb5735e11e7d3adb6104e0c3ac55180b4ddf5e54d022cc5e8837f6a4f971b"
```

**`storage`**

Allows users to query storage for an account with a given key and height.

```
ethermintd query evm storage [address] [key] [flags]
```

```bash
# Example
$ ethermintd query evm storage 0x0f54f47bf9b8e317b214ccd6a7c3e38b893cd7f0 0 --height 0

# Output
value: "0x0000000000000000000000000000000000000000000000000000000000000000"
```

#### Transactions <a href="#transactions" id="transactions"></a>

The `tx` commands allow users to interact with the `evm` module.

**`raw`**

Allows users to build cosmos transactions from raw ethereum transaction.

```
ethermintd tx evm raw [tx-hex] [flags]
```

```bash
# Example
$ ethermintd tx evm raw 0xf9ff74c86aefeb5f6019d77280bbb44fb695b4d45cfe97e6eed7acd62905f4a85034d5c68ed25a2e7a8eeb9baf1b84

# Output
value: "0x0000000000000000000000000000000000000000000000000000000000000000"
```

### JSON-RPC <a href="#json-rpc" id="json-rpc"></a>

For an overview on the JSON-RPC methods and namespaces supported on Ethermint, please refer to [https://docs.ethermint.zone/basics/json\_rpc.html ](https://docs.ethermint.zone/basics/json_rpc.html)

### gRPC <a href="#grpc" id="grpc"></a>

#### Queries <a href="#queries-2" id="queries-2"></a>

| Verb   | Method                                               | Description                                                                  |
| ------ | ---------------------------------------------------- | ---------------------------------------------------------------------------- |
| `gRPC` | `ethermint.evm.v1.Query/Account`                     | Get an Ethereum account                                                      |
| `gRPC` | `ethermint.evm.v1.Query/CosmosAccount`               | Get an Ethereum account's Cosmos Address                                     |
| `gRPC` | `ethermint.evm.v1.Query/ValidatorAccount`            | Get an Ethereum account's from a validator consensus Address                 |
| `gRPC` | `ethermint.evm.v1.Query/Balance`                     | Get the balance of a the EVM denomination for a single EthAccount.           |
| `gRPC` | `ethermint.evm.v1.Query/Storage`                     | Get the balance of all coins for a single account                            |
| `gRPC` | `ethermint.evm.v1.Query/Code`                        | Get the balance of all coins for a single account                            |
| `gRPC` | `ethermint.evm.v1.Query/Params`                      | Get the parameters of x/evm module                                           |
| `gRPC` | `ethermint.evm.v1.Query/EthCall`                     | Implements the eth\_call rpc api                                             |
| `gRPC` | `ethermint.evm.v1.Query/EstimateGas`                 | Implements the eth\_estimateGas rpc api                                      |
| `gRPC` | `ethermint.evm.v1.Query/TraceTx`                     | Implements the debug\_traceTransaction rpc api                               |
| `gRPC` | `ethermint.evm.v1.Query/TraceBlock`                  | Implements the debug\_traceBlockByNumber and debug\_traceBlockByHash rpc api |
| `GET`  | `/ethermint/evm/v1/account/{address}`                | Get an Ethereum account                                                      |
| `GET`  | `/ethermint/evm/v1/cosmos_account/{address}`         | Get an Ethereum account's Cosmos Address                                     |
| `GET`  | `/ethermint/evm/v1/validator_account/{cons_address}` | Get an Ethereum account's from a validator consensus Address                 |
| `GET`  | `/ethermint/evm/v1/balances/{address}`               | Get the balance of a the EVM denomination for a single EthAccount.           |
| `GET`  | `/ethermint/evm/v1/storage/{address}/{key}`          | Get the balance of all coins for a single account                            |
| `GET`  | `/ethermint/evm/v1/codes/{address}`                  | Get the balance of all coins for a single account                            |
| `GET`  | `/ethermint/evm/v1/params`                           | Get the parameters of x/evm module                                           |
| `GET`  | `/ethermint/evm/v1/eth_call`                         | Implements the eth\_call rpc api                                             |
| `GET`  | `/ethermint/evm/v1/estimate_gas`                     | Implements the eth\_estimateGas rpc api                                      |
| `GET`  | `/ethermint/evm/v1/trace_tx`                         | Implements the debug\_traceTransaction rpc api                               |
| `GET`  | `/ethermint/evm/v1/trace_block`                      | Implements the debug\_traceBlockByNumber and debug\_traceBlockByHash rpc api |

#### Transactions <a href="#transactions-2" id="transactions-2"></a>

| Verb   | Method                            | Description                     |
| ------ | --------------------------------- | ------------------------------- |
| `gRPC` | `ethermint.evm.v1.Msg/EthereumTx` | Submit an Ethereum transactions |
| `POST` | `/ethermint/evm/v1/ethereum_tx`   | Submit an Ethereum transactions |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.metanovaverse.com/protocol-developers/modules/evm/client.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
