5. オンチェーンへデプロイ(作業時間:約1分)
5.1 dfx でDapp をオンチェーンにデプロイする(ターミナル B )
Cycle を手に入れ、dfx
が Cycle を転送するように設定されたので Hello
Dapp をチェーン上にデプロイする準備ができています。
npm install
dfx deploy --network ic --with-cycles 1000000000000
--network
オプションを使って Dapp をデプロイするためのネットワークエイリアスまたは URL を指定します。このオプションは Internet Computer のブロックチェーンメインネットにインストールするために必要です。--with-cycles
は明示的に dfx
に使用する Cycle を指定します。しない場合はデフォルトの3兆 Cycle が指定されます。
成功するとターミナルは以下のように出力されます:
Deploying all canisters.
Creating canisters...
Creating canister "hello"...
"hello" canister created on network "ic" with canister id: "5o6tz-saaaa-aaaaa-qaacq-cai"
Creating canister "hello_assets"...
"hello_assets" canister created on network "ic" with canister id: "5h5yf-eiaaa-aaaaa-qaada-cai"
Building canisters...
Building frontend...
Installing canisters...
Installing code for canister hello, with canister_id 5o6tz-saaaa-aaaaa-qaacq-cai
Installing code for canister hello_assets, with canister_id 5h5yf-eiaaa-aaaaa-qaada-cai
Authorizing our identity (default) to the asset canister...
Uploading assets to asset canister...
/index.html 1/1 (472 bytes)
/index.html (gzip) 1/1 (314 bytes)
/index.js 1/1 (260215 bytes)
/index.js (gzip) 1/1 (87776 bytes)
/main.css 1/1 (484 bytes)
/main.css (gzip) 1/1 (263 bytes)
/sample-asset.txt 1/1 (24 bytes)
/logo.png 1/1 (25397 bytes)
/index.js.map 1/1 (842511 bytes)
/index.js.map (gzip) 1/1 (228404 bytes)
/index.js.LICENSE.txt 1/1 (499 bytes)
/index.js.LICENSE.txt (gzip) 1/1 (285 bytes)
Deployed canisters.
URLs:
Frontend:
hello_assets: https://5h5yf-eiaaa-aaaaa-qaada-cai.ic0.app/
Candid:
hello: https://a4gq6-oaaaa-aaaab-qaa4q-cai.raw.ic0.app/?id=5o6tz-saaaa-aaaaa-qaacq-cai
メッセージの一番下に URL が返されており、ここからあなたの Canister のフロントエンドがオンチェーンにデプロイされていることを確認できます:https://5h5yf-eiaaa-aaaaa-qaada-cai.ic0.app/
上の例では、2つの Canister で構成される Hello
という Dapp を作成しました:
-
hello
Canister5o6tz-saaaa-aaa-qaacq-cai
:バックエンドロジックを構成 -
hello_assets
Canister5h5yf-eiaaa-aaa-qaada-cai
:フロントエンドのアセット(例:HTML、JS、CSS )を構成
5.2 ブラウザを通じてオンチェーンで動作する自分の Dapp を見てみる
https://5h5yf-eiaaa-aaaaa-qaada-cai.ic0.app/ に移動し、名前を入力します。
Dapp がロードされる前に、ブラウザにはすぐに次のようなメッセージが表示されます:Installing "Internet Computer Validating Service Worker"。この service worker は IC から来たもので、ユーザーが見るウェブアプリが正しく、改ざんされていないフロントエンドであることを確認するために使用されます。一度読み込まれるとブラウザはサービスワーカーをキャッシュし、ウェブアプリはより速く読み込まれるようになります。
サービスワーカーをロードした後 Dapp がロードされます:
5.3 コマンドライン(ターミナル B )でオンチェーンの Dapp をテストする
Canister には、(パラメータとして文字列を受け取る)greet
というメソッドがあるので 、dfx
を介してメッセージを送ることができます。
dfx canister --network ic call hello greet '("everyone": text)'
メッセージの構成に注目してください:
-
dfx canister --network ic call
は IC 上の Canister を呼び出すための設定です。 -
hello greet
はhello
という名前の Canister にメッセージを送信し、その Canister のgreet
メソッドを呼び出すことを意味します。hello
と Canister id のマッピングがローカルの.dfx/local/canister_ids.json
に保存されているため、dfx
は呼び出したいhello
Canister が(IC 内のたくさんの Canister のうち)どれであるか分かります。 -
'("everyone": text)'
はgreet
に送るパラメータです(このパラメータはText
だけを入力として受け取ります)。
結論
これで Dapp をオンチェーンにデプロイできました! チュートリアルの最後まで読むことができました。
本題のチュートリアルに戻ります。 quickstart イントロダクション をご覧ください。
3. ウォレット経由のプロキシを試す
時々、(特に 0.9.0 より前のバージョンの dfx
で Canister を作成した場合)あなたのウォレットが Canister のコントローラーとして設定されていることがあります。ウォレットをデプロイ指示の送信元にするには、デプロイやコールコマンドに --wallet <insert-your-wallet-id-here>
というフラグを追加してください。
これがうまくいって自分の Principal をCanister のコントローラーとして追加したい場合(そうすればもう --wallet
オプションを使う必要はありません)次のように実行します:
dfx canister --wallet "$(dfx identity get-wallet)" update-settings --all --add-controller "$(dfx identity get-principal)"