4.4 ICP トークンを Cycle に変換する(作業時間:約5分)

このオプションはすでに Cycle ウォレット を使い果たしてしまった人や、将来的に Cycle を追加するために環境をセットアップしたい人に最適なものです。

このセクションの基本的なサマリー

ICP から Cycle を作成するための基本的な手順:

  1. トークンを dfx が管理する Ledger アカウントに転送する。

  2. IC Ledger に ICP トークンを Cycle に変換するよう指示する。

4.4.1 トークンを dfx が管理する Ledger アカウントに転送する(ターミナル B )

最初に dfx をインストールすると、Ledger の account id を含む "developer identity" が作成されローカルに保存されます。このアカウントには dfx が管理する ICP トークンが保存されます。

1. Ledger account id を見つけるには

dfx ledger account-id

アウトプットの例

03e3d86f29a069c6f2c5c48e01bc084e4ea18ad02b0eec8fccadf4487183c223

2. トークンを Ledger の account id に転送する

ICP トークンは 複数の取引所 で取得することができます。

どの取引所、ウォレット、または NNS Frontend Dapp からも上記のステップ #1 の account id に ICP トークンを送ることで送金できます。このチュートリアルのために 2ICP を送ることをお勧めします。

3. アカウントに ICP があることを確認する

dfx ledger --network ic balance

アカウントに ICP が存在しない場合、残りのチュートリアルは動作しません。

4.4.2 Ledger にトークンを Cycle に変換するよう指示する(ターミナル B )

account id に ICP トークンがあることが確認できたら、Ledger Canister に Cycle に変換するように指示する必要があります。

dfx ledger --network ic create-canister "$(dfx identity get-principal)" --amount 1.998

トランザクションが成功した場合、台帳にはそのイベントが記録され以下のような出力が表示されます。

Transfer sent at BlockHeight: 3054581
Canister created with id: "gastn-uqaaa-aaaae-aaafq-cai"

この Canister id は後で必要になりますので保存してください。

上記の Canister gastn-uqaaa-aaaae-aaafq-caiこのチュートリアルで作成する Hello Dapp ではありません。 これはたった一つの目的のために作られたあなたのための Canister です。その目的は Cycle を保持し Dapp に転送 することです。

この新しい Canister を作成する理由は簡単で、設計上 Cycle は Canister の中にしか格納することができないからです。この 「Cycle を保管する Canister」 は他の用途がないため、「Cycle ウォレット」と呼ばれています。

Cycle wallet

上記で作成した Canister は(そのままでも Cycle を保持しますが)一般的な Canister で、「 Cycle ウォレット」 に必要なすべての機能があるわけではありません。そこで dfx を使ってすべての Cycle ウォレットの機能を保持できるようにコードを更新します。

この例では、$CYCLES_WALLET_CANISTER_ID は gastn-uqaaa-aaaae-aaafq-cai なので以下の構造を使用することにします:

// This is just an example, this will only work with YOUR CYCLE WALLET principal from above
dfx identity --network ic deploy-wallet $CYCLES_WALLET_CANISTER_ID

この例では、コマンドは以下のようにします:

// This is just an example, this will only work with YOUR principal
dfx identity --network ic deploy-wallet gastn-uqaaa-aaaae-aaafq-cai

トランザクションが成功した場合、台帳にはそのイベントが記録され以下のような出力が表示されます。

Creating a wallet canister on the ic network.
The wallet canister on the "ic" network for user "default" is "gastn-uqaaa-aaaae-aaafq-cai"

結論

これで ICP を Cycle に変換し、Cycle ウォレットに保存できました。これで Dapp をオンチェーンにデプロイする準備が整いました。

メインチュートリアルのパート 4 に進みます:ページタイトル「オンチェーンデプロイのための Cycle 取得」、リンク先は Cycle の取得 です。

トラブルシューティング

dfx で Cycle が正しく設定されていることを確認する(ターミナル B )

Cycle ウォレット( Canister )が正しく設定され必要な Cycle の残高があることを確認します。このチュートリアルでは少なくとも3兆 Cycle (3,000,000,000,000)あることを確認するために以下を実行します。

dfx wallet --network ic balance

実行するのに十分な ICP トークンを Cycle に変換できなかった場合、次のようなコマンドを実行して Cycle ウォレットに Cycle を追加することができます:

dfx ledger --network ic top-up gastn-uqaaa-aaaae-aaafq-cai --amount 1.005

このコマンドは 4.3.2 のステップ2で作成した gastn-uqaaa-aaaaafq-cai Cycle ウォレットに対して追加の1.005 ICP トークンを Cycle に変換します。このコマンドは次のような出力を返します:

Transfer sent at BlockHeight: 81520
Canister was topped up!