NNSを使ってサイクルウォレットを作成する方法

サイクルウォレットのバージョンアップなどは基本的にコマンドから行われます。

ただ、dfx 0.84時点でコマンドだけでサイクルウォレットを作成してしまうと、サイクルウォレットをホストしているキャニスターの管理権限の操作がしづらく、ミスると制御不能になります。

この記事ではNNSを利用してサイクルウォレットのキャニスターの管理者権限をGUI操作できるようにする作り方です。

サイクルウォレットを共同で管理する場合や、複数の環境を持っている場合に有効な方法ですので紹介します。

※CLIが好きすぎるひとには向きません。

用意するもの

事前に用意するものは次のとおり

  1. NNSアカウント
  2. dfxインストール・開発環境構築
  3. ICP

NNSにログインするインターネットアイデンティティアカウント

NNS(Nerwork Nervous System)はインターネットコンピューターのガバナンスシステムで、ICPをステーキングして投票を行うことができます。ガバナンスの他にもキャニスターを制御できる画面があるので今回利用します。

NNSにログインするには、インターネットアイデンティティでアカウントを作成しておきます。

>>インターネットコンピューターのアカウントを作ろう

dfxのインストール

dfxはSDKです。インターネットコンピューターの一連の開発作業で使います。その中にはサイクルウォレットを構築したり、バージョンアップしたりする機能が含まれるのでインストールしておきます。

sh -ci "$(curl -fsSL https://sdk.dfinity.org/install.sh)"

>>参考:開発環境構築

ICP

サイクル・トークンを取得するにはICPを燃やす必要があるので、事前に手に入れましょう。ICPを手に入れたら、NNSアカウントのICPウォレットに保管しておきます。

>> ICPの購入方法

サイクルウォレット用のキャニスターを作成するのに最低で2兆サイクル(2兆サイクル=大体380円くらい)があれば足ります。ただキャニスター作成代金としていくらかサイクルが燃えるので、余裕をもたせて2Tサイクル以上のICP用意するのもありです。

サイクルウォレット作成手順

サイクルウォレットは、大きくは次の手順で作っていきます。

  1. NNSで空のキャニスターの作成
  2. キャニスターコントローラーの割り当て
  3. サイクルウォレットのデプロイ

NNSで空のキャニスターの作成

まずはNNSで操作です。https://nns.ic0.app/にアクセスをしログインします。

ログイン後、タブにある「CANISTERS」を選びます。

画面下部の「Create or Link Canister」を押し、

「Create New Canister」を選びます。

ICPウォレットの選択

サイクルに変換するICPウォレットを選びます。

サイクルの交換

最低 2T サイクル以上になるようにします。もちろん、2T以上に変換しても大丈夫です。

空のキャニスターの生成確認

今回は2Tサイクルを指定してキャニスターを作成しました。キャニスター作成にサイクルが消費されたの少しへってますね。

事前に用意したICPでサイクルに変換します。

キャニスターコントローラーの割り当て(管理者の変更)

空のキャニスターを作成した時点で、キャニスターのコントローラー(管理者)はNNSのプリンシパルIDになっています。実際にサイクルウォレットを作成するために、開発環境のプリンシパルIDを追加します。

開発用プリンシパルIDの確認

まずは、次のコマンドでプリンシパルIDを確認します。



dfx identity --network ic get-principal

コントローラーの変更

先ほどのNNSの「Change Controllers」からコントローラーを変更します。

すでにNNSのプリンシパルIDが設定されていますが、そちらは変えずに開発に使用するプリンシパルIDを追加しましょう。

入力したら「Perform Controller Change」を押します。

確認画面がでてくるので、問題なければ「Yes, I’m sure」で確定させます。

なお、キャニスター画面でコントローラーの変更が反映されているか確認できます。

サイクルウォレットのデプロイ

空のキャニスターを作成したら、つぎにサイクルウォレットキャニスターにするためにサイクルウォレットのプログラムをインストールします。

開発環境にて次のコマンドを打てばインストールできます。

dfx identity deploy-wallet キャニスターID

例: dfx identity –network ic deploy-wallet uuuuu-aaaaa-aaaaa-aaaaa-cai

無事に登録できると


Creating a wallet canister on the ic network.
The wallet canister on the "ic" network for user "default" is "キャニスターID"

と出力されます。

これでサイクルウォレットが作成されました。

追加の設定:サイクルウォレットのID連携

なお、インターネットアイデンティティによる認証を使えば、サイクルウォレットをWEB画面から操作できます。

次のURLでアクセスできます。

https://キャニスターID.raw.ic0.app/

インターネットアイデンティティとの連携したい場合は以下のリンクをご確認ください。

>> サイクルウォレットとインターネットアイデンティティの連携

今回のサイクルのウォレット作成方法のメリット

今回の方法でウォレットを作成するには2つのメリットがあります。

ICPとサイクル操作のGUI操作

サイクルウォレットはWEB画面から操作できる一方で、dfxのICPウォレットではWEB画面がありません。

NNSを使うことでサイクルの補充までを画面操作で行えるようにします。

キャニスターコントローラー(管理者)の安全な変更

dfxでもコントローラーの制御ができます。

注意点としてはのコントローラー管理のコマンドが上書きのため、失敗すると制御不能のキャニスターが出来上がります。

dfx canister –network ic update-settings -- controller A  -- controller B – controller C…

既存のコントローラーを改めて指定しないと制御を失います。私自身も意図せずコントローラーを削除しまった経験があります。

この手のものは変更したいIDだけを対象とする、新規追加、削除で行うほうが事故がすくないのですけども、現状上書きのコマンドしかありません。

dfxの今後のバージョンアップに期待。

NNSを使えば、視覚的にコントローラーを確認できるので不要な変更をしないで済みます。

まとめ

最後に記事のまとめです。

  • キャニスターを作成するには最低2T サイクル必要
  • NNSとサイクルウォレットの組み合わせでサイクルチャージが容易になる
  • コマンドでのコントローラー変更には注意、オススメはNNSでのコントローラー変更

まだインターネットコンピューターは黎明期ですので、GUIが充実していないです。利用者が増えればGUIのニーズがでてきて、使いやすい開発者の用のDAppsなんかが出てくるのではと思ってます。

インターネットコンピューターの仮想敵であるAWS、AzureもGUIが充実してますし。あって損はないかと。