Skip to main content

ICP 台帳との連携

コマンドラインから ICP 台帳を操作する

DFX は、ICP 台帳 Canister と関連する機能を操作するための便利なコマンドを提供します。ドキュメントはこちら を参照してください。また、以下のコマンドをコンソールに入力するだけでも利用できます:

dfx ledger --help

サブコマンドの --help フラグもチェックしておくとよいでしょう。

現在、dfx は ICP の台帳機能の一部、すなわち balancetransfer のみを公開しています。 どちらのコマンドも、台帳の Canister ID を指定するフラグを提供します (--ledger-canister-id) 。これにより、ローカルの台帳の デプロイや、同じインターフェイスを提供する他のトークンとのやりとりを簡略化することができます。

残高

特定のアカウントの ICP 残高を取得します:

dfx ledger --network ic balance <account-id>

<account-id> は hex string(16進数文字列)でエンコードされています。 多くの場合、特定の本人のメインアカウントの残高を確認したいものです。この場合、以下のコマンドを使用することができます。

dfx ledger --network ic balance $(dfx ledger account-id --of-principal <principal-id>)

送金

送金機能は、自分のアカウントから他のアカウントに ICP を転送するために使用することができます。

dfx ledger --network ic transfer --amount <amount> --memo <memo> <receiver-account-id>

Web アプリケーションから ICP 台帳と連動する

JavaScript アプリケーションから ICP 台帳を簡単に操作するために、nns-js ライブラリを使用することができます。

Canister からの ICP を操作する

ICP 送金サンプルは、Canister から ICP 台帳を操作するための良い出発点となります。この例では、Motoko と Rust で balancetransfer を使用する方法を紹介しています。

ICPの受け取り

ICP で Canister が支払いを受けるようにするには、Canister が支払いについて知っていることを確認する必要があります。送金は送信者と台帳 Canister にしか関与しないからです。

これを実現するために、現在、主に2つのパターンがあります。さらに、台帳とトークナイゼーションに関するChartered Working Group があり、台帳スタンダード・トークン・インターフェースとペイメントフローの定義に重点を置いています。

送信者による直接通知

このパターンでは、送信者は受信者に支払いについて通知します。しかし、受信者は台帳のquery_blocks インターフェースを使って支払いを確認する必要があります。 次の図は、このパターンを単純化したものです。

ICP 台帳による通知(現在は無効)

このパターンでは、台帳自身が受信者に通知します。これにより、受信者はその通知を即座に信用することができます。ただし、受信者への呼び出しが一方通行で実装されていないため、現状、このフローは無効です。