Skip to main content

Documentation Index

Fetch the complete documentation index at: https://seilabs.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

What is EVM Querying?

EVM querying allows you to interact with Ethereum-compatible smart contracts and state on Sei using read-only methods. These queries can extract data such as balances, token information, and contract configurations without initiating a transaction.

Prerequisites

If your machine is not running a Sei node, you’ll need to append the following to all query commands:
--node http://<sei-cosmos-rpc-url>
Refer to the RPC endpoints page for a list of available RPC endpoints.

Network Configuration

You must specify the correct RPC node if you are not running a local node:
--node http://<sei-cosmos-rpc-url>
Use this flag with all seid q evm commands.

Address Mapping

Get Sei Address from EVM Address

seid q evm sei-addr [evm address]
Example:
seid q evm sei-addr 0x1234abcd5678ef...
Output:
{
  "sei_address": "sei1xyz...",
  "associated": true
}

Get EVM Address from Sei Address

seid q evm evm-addr [sei address]
Example:
seid q evm evm-addr sei1xyz...
Output:
{
  "evm_address": "0x1234abcd5678ef...",
  "associated": true
}

ERC20 Contract Queries

Query standard ERC20 contract methods using:
seid q evm erc20 [contract address] [method] [arguments...]
Example:
seid q evm erc20 0xabc123... balanceOf 0xuser456...
Output:
500000000000000000000
Supported methods:
  • name - Get token name
  • symbol - Get token symbol
  • decimals - Get token decimals
  • totalSupply - Get total token supply
  • balanceOf [address] - Get balance of specific address
  • allowance [owner] [spender] - Get allowance amount

Payload Generation

Generate hex-encoded call data for contract methods. This is useful for crafting transactions manually.

ERC20 Payload Generation

seid q evm erc20-payload [method] [arguments...]
Transfer tokens:
seid q evm erc20-payload transfer 0xrecipient... 1000000000000000000
Output:
a9059cbb000000000000000000000000recipient...0000000000000000000000000de0b6b3a7640000
Approve spender:
seid q evm erc20-payload approve 0xspender... 2000000000000000000
Output:
095ea7b3000000000000000000000000spender...0000000000000000000000001bc16d674ec80000
Transfer from:
seid q evm erc20-payload transferFrom 0xfrom... 0xto... 1500000000000000000
Output:
23b872dd000000000000000000000000from...000000000000000000000000to...00000000000000000000000014d1120d7b160000
Supported methods:
  • transfer [to] [amount] - Transfer tokens to address
  • approve [spender] [amount] - Approve spender for amount
  • transferFrom [from] [to] [amount] - Transfer tokens from one address to another
Amounts should be specified in the token’s smallest unit (e.g., wei for 18-decimal tokens).

Pointer System

The pointer system enables interoperability between different token standards (EVM, CosmWasm, Native).

Get Pointer Address

Retrieve pointer contracts that bridge tokens between EVM and other environments:
seid q evm pointer [type] [pointee]
Example:
seid q evm pointer NATIVE usei
Output:
{
  "pointer": "0xabc123...",
  "version": 1,
  "exists": true
}
Supported types: NATIVE, CW20, CW721, CW1155, ERC20, ERC721, ERC1155 Pointee: For tokens, use the contract address; for NATIVE, use the denom (e.g., usei)

Get Pointee Address

Get the original contract address from a pointer:
seid q evm pointee [type] [pointer]
Example:
seid q evm pointee ERC20 0xpointer123...
Output:
{
  "pointee": "0xoriginal456...",
  "version": 1,
  "exists": true
}

Get Pointer Version

Query the current pointer version and stored code ID:
seid q evm pointer-version [type]
Example:
seid q evm pointer-version ERC20
Output:
{
  "version": 1,
  "cw_code_id": "123"
}
Pointer contracts allow cross-environment interoperability between CosmWasm and EVM.

Transaction Lookup

Query Transaction by Hash

Query for a transaction by its hash (equivalent to eth_getTransactionByHash):
seid q evm tx [hash] --evm-rpc [EVM RPC endpoint]
Example:
seid q evm tx 0x1234567890abcdef... --evm-rpc http://127.0.0.1:8545
Output:
{
  "blockHash": "0xblock123...",
  "blockNumber": "0x123",
  "from": "0xsender...",
  "gas": "0x5208",
  "gasPrice": "0x3b9aca00",
  "hash": "0x1234567890abcdef...",
  "input": "0x",
  "nonce": "0x1",
  "to": "0xrecipient...",
  "transactionIndex": "0x0",
  "value": "0xde0b6b3a7640000",
  "v": "0x1c",
  "r": "0x...",
  "s": "0x..."
}
Note: This command is unique - it uses --evm-rpc flag with an EVM RPC endpoint (port 8545), not --node with a Cosmos RPC endpoint like other commands. By default, it uses http://127.0.0.1:8545. Refer to the RPC endpoints page for a list of available EVM RPC endpoints.

Common Use Cases

Check Token Balance and Info

# Get token info
seid q evm erc20 0xtoken... symbol
seid q evm erc20 0xtoken... decimals

# Check balance
seid q evm erc20 0xtoken... balanceOf 0xuser...

Prepare Transaction Data

# Generate transfer payload
seid q evm erc20-payload transfer 0xrecipient... 1000000000000000000

# Use the output in a transaction
seid tx evm call-contract 0xtoken... [payload-from-above] --from mykey

Bridge Token Information

# Find EVM pointer for a native token
seid q evm pointer NATIVE usei

# Find original contract from pointer
seid q evm pointee ERC20 0xpointer...
All payload generation commands output hex-encoded data that can be used directly in seid tx evm call-contract transactions.