# 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 |
