メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.injective.network/llms.txt

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

denom は、InjectiveのBankモジュール内でトークンを表現する方法です。これらのアセットは、トレーディング、exchangeモジュール上での新規マーケット作成、オークションへの参加、他アドレスへの送金などに使用できます。 開発者およびトレーダーにとって最大の悩みの1つは、これらの denom のメタデータを取得することです。このメタデータには decimalssymbolname などが含まれます。 このガイドでは、injective-lists リポジトリから直接 denom メタデータを取得し、対象の denom にマッピングする方法を示します。同じアプローチを使って、SpotマーケットやDerivativeマーケットの denoms メタデータをマッピングすることも可能です。

Injective Lists

injective-lists は、Injective上のすべてのトークンのメタデータ情報を保持する公開リポジトリです。この種の情報については、最も最新かつ信頼性の高いソースです。このリポジトリにPRを作成することで、自分のトークン情報を提出できます。フィールドを正しく指定するようにしてください。特に "denom" フィールド(token standards を参照)には、トークン規格に応じて適切な ibcpeggyfactory プレフィックスを付ける必要があります。 メタデータはチェーン上の新しい denoms に対して30分ごとに自動的に取得され、json ファイルが再生成されます。 https://github.com/InjectiveLabs/injective-lists/tree/master/json/tokens フォルダにアクセスし、環境に応じてメタデータをダウンロードできます:
  1. Mainnet Raw JSON
  2. Testnet Raw JSON
JSONを取得したら、対象の denom とメタデータをマッピングする必要があります。 このメタデータ情報が持つインターフェースは以下の通りです:
export interface Token {
  name: string;
  logo: string;
  symbol: string;
  decimals: number;
  coinGeckoId: string;
  denom: string;
  address: string;
  tokenType: string;
  tokenVerification: string;
}

Bank残高

特定のアドレスのbank残高を取得する場合(以下にTypeScriptの例を示します)、上記のJSONファイルから取得したメタデータ情報と簡単にマッピングできます。
import { config } from "dotenv";
import { getNetworkEndpoints, Network } from "@injectivelabs/networks";
import { ChainGrpcBankApi } from "@injectivelabs/sdk-ts/client/chain";
import { IndexerGrpcPortfolioApi } from "@injectivelabs/sdk-ts/client/indexer";

config();

/** Querying Example */
(async () => {
  const endpoints = getNetworkEndpoints(Network.MainnetSentry);
  const chainGrpcBankApi = new ChainGrpcBankApi(endpoints.grpc);

  const injectiveAddress = "inj...";
  const { balances } = chainGrpcBankApi.fetchBalances(injectiveAddress);

  console.log(bankBalances);

 const metadata = JSON.parse(await readFile("./mainnet.json", "utf8")) as {
    denom: string;
    address: string;
    decimals: string;
    logo: string;
    name: string;
    tokenType: string;
    coinGeckoId: string
  }[];
  const balances = bankBalances.map((balance) => {
    const meta = metadata.find((m) => m.denom === balance.denom);

    return {
      ...balance,
      ...meta,
    };
  }

  console.log(balances)
})();
これで、bank残高に必要なすべてのメタデータ情報(decimalssymbolnamelogo など)が含まれるようになります。

Spotマーケット

bank残高と同様に、同じアプローチでSpotマーケット内の denoms をメタデータにマッピングできます。
import { config } from "dotenv";
import { readFile } from "fs/promises";
import { getNetworkEndpoints, Network } from "@injectivelabs/networks";
import { IndexerGrpcSpotApi } from "@injectivelabs/sdk-ts/client/indexer";

config();

/** Querying Example */
(async () => {
  const endpoints = getNetworkEndpoints(Network.Testnet);
  const indexerGrpcSpotApi = new IndexerGrpcSpotApi(endpoints.indexer);

  const markets = await indexerGrpcSpotApi.fetchMarkets();

  console.log(markets);

  const metadata = JSON.parse(await readFile("./mainnet.json", "utf8")) as {
    denom: string;
    address: string;
    decimals: string;
    logo: string;
    name: string;
    tokenType: string;
    coinGeckoId: string;
  }[];
  const marketsWithMetadata = markets.map((market) => {
    const baseTokenMetadata = metadata.find(
      (m) => m.denom === market.baseDenom
    );
    const quoteTokenMetadata = metadata.find(
      (m) => m.denom === market.quoteDenom
    );

    return {
      ...market,
      baseTokenMetadata,
      quoteTokenMetadata,
    };
  });

  console.log(marketsWithMetadata);
})();

Derivativeマーケット

bank残高と同様に、同じアプローチでDerivativeマーケット内の denom をメタデータにマッピングできます。
import { config } from "dotenv";
import { readFile } from "fs/promises";
import { getNetworkEndpoints, Network } from "@injectivelabs/networks";
import { IndexerGrpcDerivativesApi } from "@injectivelabs/sdk-ts/client/indexer";

config();

/** Querying Example */
(async () => {
  const endpoints = getNetworkEndpoints(Network.Testnet);
  const indexerGrpcDerivativeApi = new IndexerGrpcDerivativesApi(
    endpoints.indexer
  );

  const markets = await indexerGrpcDerivativeApi.fetchMarkets();

  console.log(markets);

  const metadata = JSON.parse(await readFile("./mainnet.json", "utf8")) as {
    denom: string;
    address: string;
    decimals: string;
    logo: string;
    name: string;
    tokenType: string;
    coinGeckoId: string;
  }[];
  const marketsWithMetadata = markets.map((market) => {
    const baseTokenMetadata = metadata.find(
      (m) => m.denom === market.baseDenom
    );

    return {
      ...market,
      quoteTokenMetadata,
    };
  });

  console.log(marketsWithMetadata);
})();
Last modified on May 14, 2026