セルフカストディのクイックスタート

Internet Computer のエコシステム内では、Internet Computer プロトコル・トークン(ICP トークン)はネイティブ・ユーティリティ・トークンです。 ICP トークンは、Internet Computer のガバナンスとエコノミクスの両方において重要な役割を担っています。

この セルフカストディのクイックスタート のシナリオは、以下を想定しています:

  • あなたは新しい ICP トークン所有者である。

  • あなたは ICP トークンで何ができるかを理解したい。

  • DFINITY Canister SDK コマンドラインインターフェース DFX を使用して、ICP トークンを変換、転送、ロックする方法を知りたい。

まだトークン保有者でない方は、ICP トークンを取引所から購入するか、トークン付与を受けてからカストディを行う必要があります。ICP トークンの入手方法とカストディオプションの概要については、ICPトークンの入手方法デジタルアセットのセルフカストディを選択する を参照して下さい。

他のアプリケーション Network Nervous System(NNS)アプリケーション やハードウェアウォレットが提供するユーザーインターフェイスなどを使用して ICP トークンとやり取りする場合は、そのアプリケーションのドキュメントを参照してください。

この セルフカストディ クイックスタート は、DFINITY Canister SDK コマンドラインインターフェース DFX を使用した ICP トークンとの対話にのみ焦点を当てています。

ICP トークンの使用方法

次の図はトークンの最も一般的な3つの使用方法の概要を簡略化したものです。

icp tokens how to use

この図が示すように、ICP トークンの使用方法は、主にそれを取得する際の目標によって異なります。

あなたが 開発者 または 起業家 である場合、ICP トークンは Cycle に変換することができます。Cycle は、製品やサービスを市場に提供するためのアプリケーションを構築し、デプロイするために使用することができます。

ガバナンスへの参加 や Internet Computer の方向性に影響を与えることに関心のあるコミュニティのメンバーであれば、ICP トークンを Neuron と呼ばれるステークにロックして、プロポーザルの提出や投票ができるようにすることが可能です。

始める前に

はじめに、以下を確認します:

  • インターネットに接続し、ローカルの Intel-based macOS または Linux コンピュータ上のシェル端末にアクセスできること。

  • ローカルコンピュータで新しいターミナルシェルを開く方法と、ターミナルで基本的なコマンドライン・プログラムを実行する方法を知っていること。

  • ICP トークンをセルフカストディウォレットに保管していること。

  • ローカルコンピュータのターミナルで次のコマンドを実行して、DFINITY Canister Software Development Kit (SDK) をダウンロードおよびインストールすること:

    sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"
  • セルフカストディに使用する Identity の公開鍵・秘密鍵のバックアップコピーを作成したこと。

    例えば、DFINITY Canister Software Development Kit (SDK) dfx コマンドラインインターフェイスを使用して作成したデフォルトの開発者用 Identity を使用している場合、安全な場所に ~/.config/dfx/identity/default/identity.pem ファイルをバックアップしておく必要があります。

  • ICP トークンを含む操作を実行するための安全な環境があること。

    セキュリティのベストプラクティスとして、ICP トークンの授受を伴う作業には、最小限のハードウェアとソフトウェアを備えたエアギャップ付きのコンピューターと、ネットワークに接続されたコンピューターの両方が必要になります。 実際には、2台のコンピュータ間でファイルを移動させるなど、リスクを最小限に抑えるための工夫が必要です。

    この セルフカストディのクイックスタート では、わかりやすくするために、ネットワークに接続された1台のコンピュータを使って、主要なタスクを完了する方法を説明します。

台帳に接続し、アカウント ID を取得する

ICP トークンの取引はすべて、Internet Computer 上で動作する台帳 Canister に記録されます。 この説明では、dfx が作成した default 開発者 Identity を使用することを想定しています。

この Identity は principal データ型で表され、 principal ID と呼ばれていたりします。 この Identity の表現は、Bitcoin や Ethereum のアドレスに似ています。

しかし、開発者 Identity に関連付けられた Principal は、通常、台帳上の Account ID と同じではありません。Principal 識別子と Account 識別子は関連しておりどちらもあなたの Identity をテキストで表現していますが、異なるフォーマットを使用しています。

台帳に接続してアカウント情報を取得するには、次のようにします:

  1. 以下のコマンドを実行し、カレントディレクトリに空の dfx.json ファイルを作成します:

    echo '{}' > dfx.json
  2. 次のコマンドを実行して、Internet Computer ネットワークの現在のステートと接続できることを確認します。

    dfx ping ic

    以下のような出力が表示されるはずです:

    {
      "ic_api_version": "0.18.0"  "impl_hash": "d639545e0f38e075ad240fd4ec45d4eeeb11e1f67a52cdd449cd664d825e7fec"  "impl_version": "8dc1a28b4fb9605558c03121811c9af9701a6142"  "replica_health_status": "healthy"  "root_key": [48, 129, 130, 48, 29, 6, 13, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 1, 2, 1, 6, 12, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 2, 1, 3, 97, 0, 129, 76, 14, 110, 199, 31, 171, 88, 59, 8, 189, 129, 55, 60, 37, 92, 60, 55, 27, 46, 132, 134, 60, 152, 164, 241, 224, 139, 116, 35, 93, 20, 251, 93, 156, 12, 213, 70, 217, 104, 95, 145, 58, 12, 11, 44, 197, 52, 21, 131, 191, 75, 67, 146, 228, 103, 219, 150, 214, 91, 155, 180, 203, 113, 113, 18, 248, 71, 46, 13, 90, 77, 20, 80, 95, 253, 116, 132, 176, 18, 145, 9, 28, 95, 135, 185, 136, 131, 70, 63, 152, 9, 26, 11, 170, 174]
    }
  3. (オプション) 以下のコマンドを実行して、現在使用している開発者 Identity を確認します:

    dfx identity whoami

    ほとんどの場合、現在 default の開発者 Identity を使用していることが確認できるはずです。たとえば:

    default
  4. (オプション)次のコマンドを実行して、現在の Identity の Principal のテキスト表現を表示します:

    dfx identity get-principal

    このコマンドは、次のような出力を表示します:

    tsqwz-udeik-5migd-ehrev-pvoqv-szx2g-akh5s-fkyqc-zy6q7-snav6-uqe
  5. 以下のコマンドを実行し、開発者 Indentity のAccount ID を取得します:

    dfx ledger account-id

    このコマンドは、開発者 Identity に関連付けられた台帳 Accout IDを表示します。 たとえば、次のような出力が表示されるはずです:

    03e3d86f29a069c6f2c5c48e01bc084e4ea18ad02b0eec8fccadf4487183c223
  6. 以下のコマンドを実行して、アカウントの残高を確認します:

    dfx ledger --network ic balance

    このコマンドは、台帳アカウントから ICP トークンの残高を表示します。 例えば、次のような出力が表示されるはずです:

    10.00000000 ICP

ICPトークンを Cycle に変換する

ICP トークンを台帳アカウントで使用してアプリケーション開発の動力(ガス)としたい場合、まずトークンを Cycle に変換し、Cycle ウォレットとなる Canister に Cycle を転送する必要があります。

ICP トークンを Cycle に変換するには:

  1. 以下のようなコマンドを実行して、台帳アカウントから ICP トークンを転送し、Cycle を持つ新しい Canister を作成します:

    dfx ledger --network ic create-canister <controller-principal-identifier> --amount <icp-tokens>

    このコマンドは、--amount 引数に指定した ICP トークンの数を Cycle に変換し、Cycle を指定した Principal で制御される新しい Canister ID に関連付けます。

    例えば、次のコマンドは 1.25 ICP トークンを Cycle に変換し、新しい Canister のコントローラーとしてdefault のPrincipal ID を指定します。

    dfx ledger --network ic create-canister tsqwz-udeik-5migd-ehrev-pvoqv-szx2g-akh5s-fkyqc-zy6q7-snav6-uqe --amount 1.25

    取引が成功した場合、台帳にはそのイベントが記録され、以下のような出力が表示されます:

    Transfer sent at BlockHeight: 20
    Canister created with id: "53zcu-tiaaa-aaaaa-qaaba-cai"
  2. 以下のようなコマンドを実行して、新しく作成した Canister プレースホルダーに Cycle ウォレットコードをインストールします:

    dfx identity --network ic deploy-wallet <canister-identifer>

    たとえば:

    dfx identity --network ic deploy-wallet 53zcu-tiaaa-aaaaa-qaaba-cai

    このコマンドは、次のような出力を表示します:

    Creating a wallet canister on the ic network.
    The wallet canister on the "ic" network for user "default" is "53zcu-tiaaa-aaaaa-qaaba-cai"

ICP トークンを他のアカウントに移動する

ICP トークンを台帳上の別のアカウントに転送したい場合は、転送先のアカウント ID を知っておく必要があります。

ICP トークンを別のアカウントに転送するには:

  1. 以下のコマンドを実行して、台帳アカウントを制御できる Identity を使用していることを確認します:

    dfx identity whoami
  2. 以下のコマンドを実行して、自分の Identity に関連する台帳アカウントの現在の残高を確認します:

    dfx ledger --network ic balance
  3. 以下のようなコマンドを実行して、ICP トークンを別のアカウントに転送します。

    dfx ledger --network ic transfer <destination-ledger-account-id> --icp <ICP-amount> --memo <numeric-memo>

    たとえば:

    dfx ledger --network ic transfer ae6e1a76da5725bbbf0c5c035aaf0525b791e0f0f7cce27d8e27826389871406 --icp 5 --memo 12345

    この例では、--icp コマンドラインオプションで整数を使用して、指定したアカウントに ICP トークンを転送する方法を説明します。

    • e8s と呼ばれる ICP トークンの端数は、 --e8s オプションを単独で、あるいは --icp オプションと組み合わせて指定することができます。

    • また、--amount を使用すると、転送する ICP トークンの数を小数点以下8桁まで、例えば 5.00000025 のように指定することができます。

    宛先アドレスは、Internet Computer ネットワーク上で動作する台帳 Canister のアドレス、Network Nervous System アプリケーション を使って追加したアカウント、取引所で持っているウォレットアドレスのいずれかを使用できます。

    Network Nervous System アプリケーション のアカウントに ICP トークンを転送した場合、取引が反映されるまでにブラウザを更新する必要がある場合があります。

    dfx ledger のコマンドラインオプションの使い方については、dfx ledger を参照してください。

ICP トークンを Neuron に張り付け、ロックする

ICP トークンをロックしてガバナンスに参加し、報酬を獲得したい場合は、Network Nervous System (NNS) アプリケーション または dfx canister call コマンドを使用する必要があります。

ICP トークンをロックしてステークされた Neuron を作成するのは、DFINITY Canister SDK コマンドラインインターフェイスを使用する場合、Network Nervous System(NNS)アプリケーション を使用する場合よりも複雑なので、このガイドにはその手順は含まれていません。

Network Nervous System については、Understanding the Internet Computer’s Network Nervous System, Neurons, and ICP Utility Tokens を参照してください。

Neuron のロック期間と溶解遅延の設定についての詳細は、Getting Started | Internet Computer Network Nervous System Application & Wallet を参照してください。