ICP 台帳との連携
コマンドラインから ICP 台帳を操作する
DFX は、ICP 台帳 Canister と関連する機能を操作するための便利なコマンドを提供します。ドキュメントはこちら を参照してください。また、以下のコマンドをコンソールに入力するだけでも利用できます:
dfx ledger --help
サブコマンドの --help
フラグもチェックしておくとよいでしょう。
現在、dfx は ICP の台帳機能の一部、すなわち balance
と transfer
のみを公開しています。
どちらのコマンドも、台帳の 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 で balance
と transfer
を使用する方法を紹介しています。
ICPの受け取り
ICP で Canister が支払いを受けるようにするには、Canister が支払いについて知っていることを確認する必要があります。送金は送信者と台帳 Canister にしか関与しないからです。
これを実現するために、現在、主に2つのパターンがあります。さらに、台帳とトークナイゼーションに関するChartered Working Group があり、台帳スタンダード・トークン・インターフェースとペイメントフローの定義に重点を置いています。
送信者による直接通知
このパターンでは、送信者は受信者に支払いについて通知します。しかし、受信者は台帳のquery_blocks
インターフェースを使って支払いを確認する必要があります。
次の図は、このパターンを単純化したものです。
ICP 台帳による通知(現在は無効)
このパターンでは、台帳自身が受信者に通知します。これにより、受信者はその通知を即座に信用することができます。ただし、受信者への呼び出しが一方通行で実装されていないため、現状、このフローは無効です。