NNS Dappを使用して初めてキャニスタースマートコントラクトをデプロイする方法(日本語訳)

tokuryoo
DfinityJP
Published in
7 min readFeb 26, 2022

Medium の DFINITY 公式の記事 How to Deploy Your First Canister Smart Contract Using the NNS Dapp(2021/7/2) の日本語訳です。

NNS のフロントエンド dapp のインターフェイスを利用して、キャニスターをスピンアップするためのステップバイステップガイドです。

By Kyle Peacock, Software Engineer | DFINITY

例えば、ICP ユーティリティトークンをいくつか持っていて、Internet Computer 上であなたの最初のキャニスタースマートコントラクトをスピンアップしたいとします。このガイドでは、必要なものをすべて用意し、NNS のフロントエンド dapp を利用して、必要となる手順をすべて説明します。

前提条件

  • https://nns.ic0.app ウォレットに、ログイン済み。
  • ~ $5 ドル相当の ICP があなたのウォレットアドレスへ転送済み。
  • https://sdk.dfinity.org から dfx sdk をインストールしたパソコン。

キャニスターを作成する

まず、あなたの https://nns.ic0.app のアカウントにログインし、残高を確認します。

NNSのダッシュボードに資金を投入したアカウント

次に、右上の「Canisters」タブに移動します。下記の画面が表示されるはずです。

Canister view キャニスター画面

ページ下部の青い「Create or Link Canister」ボタンをクリックすると、ダイアログが表示されます。

キャニスター作成ダイアログ

「Create New Canister」ボタンをクリックします。次に、あなたの新しいキャニスターに資金を提供するのに使用したい ICP アカウントを選択します。

ICP 提供元アカウントの選択

その後、金額を入力する画面が表示されます。とりあえず、T Cycles(1兆サイクル)の入力欄に 5 を入力してみます。5兆サイクルは、1Tあたり約65¢、つまり約 $3.25ドルに相当します。

キャニスターの作成には 1T の手数料がかかるので、キャニスターを動かすと 4T のサイクルが残ることになります。

あなたのキャニスターに提供する金額を入力

「Review Cycles Purchase」をクリックし、下記の画面で確認します。

Review Canister Creation

もう一度「Confirm」をクリックすれば、準備完了です!

キャニスターの作成に成功

コンピュータとの接続

この例では、デプロイするアプリとして、超ミニマムなウェブサイトを使用することにします。

アプリは重要ではありませんが、次の命令のために、有効なdfxプロジェクトがあるディレクトリにいる必要があります。このサンプルプロジェクトをクローンすることで、真似ることができます。

git clone https://github.com/krpeacock/ic-static-minimal.git
cd ic-static-minimal

次に、下記を実行することでコンピュータからプリンシパルを取得する必要があります。

dfx identity get-principal
ターミナルを使ったプリンシパルの取得(ディレクトリ名は無視する)

そのプリンシパル ID をコピーし、新しく作成したキャニスターのあるタブに戻ります。青い 「Change Controllers」ボタンをクリックし、controller management UIを開きます。

コントローラとしてプリンシパルIDを入力する

空欄の2番目の入力にプリンシパルを入力し、「Perform Controller Change」をクリックします。この手順により、あなたのコンピュータ上の dfx が新しく作成されたあなたのキャニスターへデプロイすることを認可します。

コントローラ変更確認

確認を受け入れた後、あなたのキャニスターIDをコピーしてください。これからそれを使用して、あなたの最初のキャニスターをデプロイします。

キャニスターをデプロイする

サンプルプロジェクトを開き、canister_ids.jsonファイル を開きます。<canister-id>を、クォートで囲んだあなたのキャニスターIDに置き換えて、ファイルを保存します。

canister_ids.jsonの<canister-id>を置き換えます。

それから、下記を実行する必要があります。

dfx deploy --network ic --no-wallet

アセットキャニスターをデプロイすることで、/assets の下の index.html ファイルをホスティングします。これにより、非常にシンプルな静的Webサイトが Internet Computer へデプロイされます。

コマンドをブレイクダウンすると、dfx は dfx.json の config を使用してプロジェクトをデプロイしています。ネットワークが IC となるようフラグを立てています。この IC は、あなたのキャニスターを作成した場所が本番用レプリカということです。次に、--no-walletとすることで、あなたのプリンシパルを使用して既存のキャニスターにあなたのキャニスターを直接デプロイしていることを DFX に示しています。

サイトのデプロイ

最後に、デプロイが成功したら、あなたのブラウザで <canister-id>.ic0.app のタブを開き、もう一度 <canister-id> をあなたのキャニスターIDに置き換えてみてください。

稼働しているサイト

すべてがうまくいっているのであれば、おめでとうございます!あなたの新しいサイトは、Internet Computer 上で公開されているはずです。

index.html を変更して、dfx deploy --network ic --no-wallet で再デプロイしてみると、Internet Computer のブロックチェーン上で直接実行され、更新が行われることを確認できます。
____

smartcontracts.org で構築を開始し、forum.dfinity.org の開発者コミュニティに参加しましょう。

--

--