Initia Registry

Overview

The Initia Registry serves as a central repository containing crucial metadata for chains within the Initia ecosystem. It houses configuration files such as chain.json and assetlist.json, which are vital for initiating and interacting with nodes, as well as understanding the available assets on each chain. Additionally, the registry includes *.schema.json files in the root directory, outlining the recommended metadata structure. These schemas are dynamic, subject to revisions based on evolving user needs, and may include optional fields beyond the current schema specifications.

Adding Minitia to Initia Registry

  1. Fork the Repository: Begin by forking the repository where the Initia Registry is hosted.

  2. Add a New Directory: Create a directory named after the chain you intend to add.

  3. Include Necessary Files:

    • chain.json: Populate this file with the metadata of the chain.

    • assetlist.json: Include metadata concerning the assets available on the chain.

    • initia-minitia.json: Provide metadata about the IBC connections and channels, ensuring the file name adheres to the alphabetical order of the chain names, e.g., Achain-Bchain.json.

  4. Create a Pull Request: Submit your modifications for review to merge them into the main repository.

chain.json

A sample chain.json includes the following information.

{
  "$schema": "../../chain.schema.json",
  "chain_name": "minimove",
  "chain_id": "minimove-1",
  "website": "https://initia.xyz",
  "pretty_name": "Minimove",
  "status": "live",
  "network_type": "testnet",
  "bech32_prefix": "init",
  "daemon_name": "minitiad",
  "node_home": "$HOME/.minitia",
  "key_algos": ["secp256k1"],
  "slip44": 118,
  "fees": {
    "fee_tokens": [
      {
        "denom": "l2/771d639f30fbe45e3fbca954ffbe2fcc26f915f5513c67a4a2d0bc1d635bdefd",
        "fixed_min_gas_price": 0.15,
        "low_gas_price": 0.15,
        "average_gas_price": 0.15,
        "high_gas_price": 0.4
      },
      {
        "denom": "ibc/8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5",
        "fixed_min_gas_price": 0.15,
        "low_gas_price": 0.15,
        "average_gas_price": 0.15,
        "high_gas_price": 0.4
      }
    ]
  },
  "staking": {
    "staking_tokens": []
  },
  "codebase": {
    "git_repo": "https://github.com/initia-labs/minimove",
    "recommended_version": "v0.2.12",
    "compatible_versions": ["v0.2.12", "main"],
    "binaries": {
      "linux/amd64": "https://initia.s3.ap-southeast-1.amazonaws.com/minimove-1/minimove_v0.2.12_Linux_x86_64.tar.gz",
      "linux/arm64": "https://initia.s3.ap-southeast-1.amazonaws.com/minimove-1/minimove_v0.2.12_Linux_aarch64.tar.gz",
      "darwin/amd64": "https://initia.s3.ap-southeast-1.amazonaws.com/minimove-1/minimove_v0.2.12_Darwin_x86_64.tar.gz",
      "darwin/arm64": "https://initia.s3.ap-southeast-1.amazonaws.com/minimove-1/minimove_v0.2.12_Darwin_aarch64.tar.gz"
    },
    "genesis": {
      "genesis_url": "https://initia.s3.ap-southeast-1.amazonaws.com/minimove-1/genesis.json"
    },
    "versions": []
  },
  "description": "Minimove Public Testnet",
  "peers": {
    "seeds": [],
    "persistent_peers": []
  },
  "apis": {
    "rpc": [
      {
        "address": "https://rpc.minimove-1.initia.xyz",
        "provider": "Foundation"
      }
    ],
    "rest": [
      {
        "address": "https://lcd.minimove-1.initia.xyz",
        "provider": "Foundation"
      }
    ],
    "grpc": [
      {
        "address": "grpc://35.198.215.41:9090",
        "provider": "Foundation"
      }
    ]
  },
  "explorers": [
    {
      "kind": "initia scan",
      "url": "https://scan.testnet.initia.xyz/minimove-1",
      "tx_page": "https://scan.testnet.initia.xyz/minimove-1/txs/${txHash}",
      "account_page": "https://scan.testnet.initia.xyz/minimove-1/accounts/${accountAddress}"
    }
  ],
  "images": [
    {
      "png": "https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/minimove/images/minimove.png",
      "svg": "https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/minimove/images/minimove.svg"
    }
  ],
  "logo_URIs": {
    "png": "https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/minimove/images/minimove.png",
    "svg": "https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/minimove/images/minimove.svg"
  },
  "metadata": {
    "op_bridge_id": "1",
    "op_denoms": ["uinit"],
    "ibc_channels": [
      {
        "chain_id": "initiation-1",
        "port_id": "transfer",
        "channel_id": "channel-0",
        "version": "ics20-1"
      },
      {
        "chain_id": "initiation-1",
        "port_id": "nft-transfer",
        "channel_id": "channel-1",
        "version": "ics721-1"
      }
    ],
    "assetlist": "https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/minimove/assetlist.json",
    "minitia": {
      "type": "minimove",
      "version": "v0.2.12"
    }
  }
}

Asset Lists

Asset Lists are inspired by the Token Lists project on Ethereum which helps discoverability of ERC-20 tokens by providing a mapping between ERC-20 contract addresses and their associated metadata.

Asset lists are a similar mechanism to allow frontends and other UIs to fetch metadata associated with Cosmos SDK denoms, especially for assets sent over IBC.

This standard is a work in progress. You'll notice that the format of assets in the assetlist.json structure is a strict superset json representation of the banktypes.DenomMetadata from the Cosmos SDK. This is purposefully done so that this standard may eventually be migrated into a Cosmos SDK module in the future, so it can be easily maintained on chain instead of on Github.

The assetlist JSON Schema can be found here.

An example assetlist json contains the following structure:

{
  "$schema": "testnets/initia/assetlist.json",
  "chain_name": "initia",
  "assets": [
    {
      "description": "The native token of Initia",
      "denom_units": [
        {
          "denom": "uinit",
          "exponent": 0
        },
        {
          "denom": "INIT",
          "exponent": 6
        }
      ],
      "base": "uinit",
      "display": "INIT",
      "name": "Initia Native Token",
      "symbol": "INIT",
      "coingecko_id": "",
      "images": [
        {
          "png": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/INIT.png>",
          "svg": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/INIT.svg>"
        }
      ],
      "logo_URIs": {
        "png": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/INIT.png>",
        "svg": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/INIT.svg>"
      }
    },
    {
      "description": "The fake ETH",
      "denom_units": [
        {
          "denom": "ueth",
          "exponent": 0
        },
        {
          "denom": "ETH",
          "exponent": 6
        }
      ],
      "base": "ueth",
      "display": "ETH",
      "name": "Fake ETH Token",
      "symbol": "ETH",
      "coingecko_id": "",
      "images": [
        {
          "png": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/ETH.png>",
          "svg": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/ETH.svg>"
        }
      ],
      "logo_URIs": {
        "png": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/ETH.png>",
        "svg": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/ETH.svg>"
      }
    },
    {
      "description": "The fake USDC",
      "denom_units": [
        {
          "denom": "uusdc",
          "exponent": 0
        },
        {
          "denom": "USDC",
          "exponent": 6
        }
      ],
      "base": "uusdc",
      "display": "USDC",
      "name": "Fake USDC Token",
      "symbol": "USDC",
      "coingecko_id": "",
      "images": [
        {
          "png": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/USDC.png>",
          "svg": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/USDC.svg>"
        }
      ],
      "logo_URIs": {
        "png": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/USDC.png>",
        "svg": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/USDC.svg>"
      }
    },
    {
      "description": "The LP token of USDC-INIT",
      "denom_units": [
        {
          "denom": "move/dbf06c48af3984ec6d9ae8a9aa7dbb0bb1e784aa9b8c4a5681af660cf8558d7d",
          "exponent": 0
        },
        {
          "denom": "USDC-INIT LP",
          "exponent": 6
        }
      ],
      "base": "move/dbf06c48af3984ec6d9ae8a9aa7dbb0bb1e784aa9b8c4a5681af660cf8558d7d",
      "display": "USDC-INIT LP",
      "name": "USDC-INIT LP Token",
      "symbol": "USDC-INIT LP",
      "coingecko_id": "",
      "images": [
        {
          "png": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/USDC-INIT.png>",
          "svg": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/USDC-INIT.svg>"
        }
      ],
      "logo_URIs": {
        "png": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/USDC-INIT.png>",
        "svg": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/USDC-INIT.svg>"
      }
    },
    {
      "description": "The LP token of ETH-INIT",
      "denom_units": [
        {
          "denom": "move/a2b0d3c8e53e379ede31f3a361ff02716d50ec53c6b65b8c48a81d5b06548200",
          "exponent": 0
        },
        {
          "denom": "ETH-INIT LP",
          "exponent": 6
        }
      ],
      "base": "move/a2b0d3c8e53e379ede31f3a361ff02716d50ec53c6b65b8c48a81d5b06548200",
      "display": "ETH-INIT LP",
      "name": "ETH-INIT LP Token",
      "symbol": "ETH-INIT LP",
      "coingecko_id": "",
      "images": [
        {
          "png": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/ETH-INIT.png>",
          "svg": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/ETH-INIT.svg>"
        }
      ],
      "logo_URIs": {
        "png": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/ETH-INIT.png>",
        "svg": "<https://raw.githubusercontent.com/initia-labs/initia-registry/main/testnets/initia/images/ETH-INIT.svg>"
      }
    }
  ]
}

IBC Data

The metadata contained in these files represents a path abstraction between two IBC-connected networks. This information is particularly useful when relaying packets and acknowledgments across chains.

This schema also allows us to provide helpful info to describe open channels.

Note: when creating these files, please ensure the chains in both the file name and the references of chain-1 and chain-2 in the json file are in alphabetical order. Ex: Achain-Zchain.json. The chain names used must match name of the chain's directory here in the chain-registry.

An example ibc metadata file contains the following structure:

{
  "$schema": "../../ibc_data.schema.json",
  "chain_1": {
    "chain_name": "initia",
    "client_id": "07-tendermint-0",
    "connection_id": "connection-0"
  },
  "chain_2": {
    "chain_name": "minimove",
    "client_id": "07-tendermint-0",
    "connection_id": "connection-0"
  },
  "channels": [
    {
      "chain_1": {
        "channel_id": "channel-0",
        "port_id": "transfer"
      },
      "chain_2": {
        "channel_id": "channel-0",
        "port_id": "transfer"
      },
      "ordering": "unordered",
      "version": "ics20-1",
      "tags": {
        "status": "live",
        "preferred": true
      }
    }
  ]
}

Conclusion

The Initia Registry is pivotal in supporting the seamless operation and integration of various chains and assets within the Initia ecosystem. By maintaining detailed and standardized metadata, it ensures that developers and users have access to up-to-date and necessary information for effective interaction with the blockchain network.

Last updated

Logo

© 2024 Initia Foundation, All rights reserved.