Build
Pointer Contracts
IBC

Deploying IBC Pointers

Overview

IBC (Inter-Blockchain Communication) pointers allow tokens originating from another blockchain to have an ERC-compatible representation within the Sei network. This guide outlines the steps required to submit a governance proposal to register an IBC token with an ERC pointer.

Prerequisites

Before submitting a governance proposal to register an IBC pointer, ensure you have:

  • Token metadata (including the token denomination, name, symbol, and decimals).
  • Sufficient deposit proposal submission has no cost, but to be eligible for voting there is a deposit, to prevent abuse.
  • Test before mainnet especially if it's your first time, try sending the proposal on a testnet.

Metadata Requirements

For an IBC token, metadata must be included in the governance proposal. The metadata ensures the token is properly recognized within the ERC-compatible execution environment.

Example Metadata JSON

{
  "id": "1",
  "title": "Register IBC Pointer",
  "description": "Register an ERC-compatible pointer for an IBC token.",
  "proposal_type": "/seiprotocol.seichain.evm.AddERCNativePointerProposalV2",
  "messages": [
    {
      "@type": "/seiprotocol.seichain.evm.AddERCNativePointerProposalV2",
      "title": "Register IBC Pointer",
      "description": "Create an ERC-compatible pointer for an IBC token.",
      "token": "ibc/<IBC_DENOM_HASH>",
      "name": "Token Name",
      "symbol": "TOKEN",
      "decimals": <DECIMALS>
    }
  ],
  "total_deposit": [
    {
      "denom": "<DEPOSIT_DENOM>",
      "amount": "<DEPOSIT_AMOUNT>"
    }
  ]
}

Metadata Fields

  • token: The IBC denomination hash of the token to be registered.
  • name: The human-readable token name.
  • symbol: The token's ticker symbol.
  • decimals: The decimal precision of the token.
  • total_deposit: The deposit amount required for governance consideration.

Submitting the Governance Proposal

Use the following command to submit the proposal:

seid tx gov submit-proposal add-erc-native-pointer "Register IBC Pointer" "Register an ERC-compatible pointer for an IBC token" ibc/<IBC_DENOM_HASH> "Token Name" "TOKEN" <DECIMALS> <DEPOSIT_AMOUNT><DEPOSIT_DENOM> --from=<GOVERNANCE_ADDRESS> --chain-id=<CHAIN_ID> --fees=<FEE_AMOUNT><FEE_DENOM> --gas=<GAS_LIMIT>

Command Breakdown

  • Proposal Title & Description: Describes the purpose of the pointer registration.
  • IBC Denomination Hash: The IBC token identifier.
  • Token Name & Symbol: Used for display purposes.
  • Decimals: The token’s decimal precision.
  • Deposit: Required governance deposit to proceed with the proposal.
  • From: Address submitting the proposal.
  • Chain ID: Specifies the network.
  • Fees & Gas: Specifies transaction fees and gas limits.

Monitoring the Proposal Status

After submission, check the proposal status with:

seid q gov proposal <PROPOSAL_ID>

Possible Proposal Statuses

  • PROPOSAL_STATUS_VOTING_PERIOD: Proposal is under review and open for voting.
  • PROPOSAL_STATUS_PASSED: Proposal has been approved.
  • PROPOSAL_STATUS_REJECTED: Proposal has been rejected.

Confirming Pointer Registration

Once the proposal is passed and executed, confirm the pointer registration using:

seid q evm pointer ERC20 ibc/<IBC_DENOM_HASH>

If the registration was successful, this query should return the associated ERC-compatible representation of the IBC token.

Conclusion

Registering an IBC pointer requires a governance proposal with correctly formatted metadata. Once the proposal passes, the pointer is officially recognized within the ERC-compatible execution environment, allowing seamless integration across different blockchain ecosystems. Ensure all required details are accurate before submitting the proposal to avoid delays or rejections.