見出し画像

【完全保存版】AstarのWASMのフロント実装について(ウォレット接続・書き込み)


0 はじめに

本日は、WASMのコントラクトを作り、それをフロントエンドと繋ぎ込みます。

この記事では、ウォレット接続・コントラクトの書き込みを中心に説明していきます。

1 コントラクトのデプロイ〜立ち上げ

まずは、git cloneを行います。

git clone https://github.com/ytakahashi2020/wasm_frontend_connect_wallet.git

ちなみに、こちらをgit cloneしていました。

できましたら、コントラクトのデプロイと、フロントエンドの立ち上げを行います。

この流れは、こちらの記事の第1章第2節から第2章の終わりまでと全く同じ流れになるので、こちらをご参照ください。

2 操作してみよう

1 ウォレット接続

ウォレットの接続の前に、コンソールを表示させます。

右クリックから「検証」を選択

こちらの「Console」を選択します。

これで準備完了です。

こちらの「CONNECT WALLET」ボタンから接続を行います。

すると、このように、ポップアップが立ち上がりますので、承認します。

「my dapp」というdAppsが許可を求めていました。

なお、私の場合は、「Talisman」というウォレットもインストールしていました。

接続を拒否すると、右の赤の部分のように、拒否された旨が表示されました。(ここは参考です)

下のように、表示されました。

「Web3Enable」では、「Polkadot.js」という一つのウォレットが接続されている旨を表しています。

「Web3Accounts」では合計で2つのアカウントが接続されている旨を表しています。(私はPolkadot.jsに2つのアカウントがあります。)

下の部分では、接続しているアカウントのアドレスと、ソース(どのウォレットか)を表示しています。

2 コントラクトの取得について

こちらは、下の記事の第3章第1節をご確認ください。

3 読み込み関数の実行について(get関数)

こちらは、下の記事の第3章第2節をご確認ください。

4 書き込み関数の実行について(flip関数)

では、「flip」関数を実行してみましょう。

ポップアップが立ち上がるので、トランザクションを実行します。

しばらくすると、下のように、完了した旨の表示が出ました。

なお、「flip」の前は、下のように、結果は「true」でした。

では、「GET CONTRACT INFORMATION」ボタンを押します。

すると、「true」が反転し、「false」になっていることが確認できました。

4 ソースコードを確認しよう

では、以上の内容のコードを確認してみましょう。

1 ウォレット接続について

まずは、「webEnable」についてです。

ここで、「Polkadot.js」「Talisman」などの接続可能かのポップアップ表示させます。

「'my dapp'」の部分はdApp名を入れ、ウォレットに許可を求めるときに表示されます。

公式のページとしては、こちらになります。

https://polkadot.js.org/docs/extension/cookbook#get-all-extensions-accounts

なお、「web3Enable」は下のように、「@polkadot/extension-dapp」から取得しています。

次に、ユーザーが対応しているウォレットを持っていないか、許可をしなかった場合は、関数を終了させます。

続いて、「web3Accounts」接続されているウォレットの全てのアカウントを取得します。

例えば、「Polkadot.js」に3つのアカウントがあれば、3つとも取得できます。(もちろん、見えない設定にしていれば、取得できません。)

公式はこちらになります。

https://polkadot.js.org/docs/extension/usage

次は、取得したアカウントの最初のアカウントを「account」に入れています。

下の部分で、アドレスウォレットのソース(「Polkadot.js」「Talisman」かなど)を取得しています。

ここは、参考として、コンソールで確認するためです。

2 コントラクトの接続とGet関数について

こちらについては、下の記事の第4章で解説しております。

3 Flip関数について

では、flip関数を見てみましょう。

下の部分で、「Web3FromSource」を用いて、アカウントからinjectorを取得します。

これは署名の際に用いられます。

こちらになります。

https://polkadot.js.org/docs/extension/cookbook

なお、「Web3FromSource」は下のように、「@polkadot/extension-dapp」から取得しています。

ちなみに、使用している場所はこちらです。

injectorから署名者を取得しています。

次に、トランザクションの作成部分を見てみましょう。

下のように、「contract.tx[メソッド名]」としています。

公式はこちらになります。

https://polkadot.js.org/docs/api-contract/start/contract.tx

次に、gasLimitstorageDepositLimtを設定しています。

この辺りの詳細は、下の記事の第4章第4・5節をご確認ください。

次に、「signAndSend」を確認します。

その名の通り、作成したトランザクションを「署名」し、ブロックチェーンに送付しています。

下のように、署名アカウント(誰が実行)署名オプションを設定します。

③のコールバック関数も見てみましょう。

statusの値を監視し、ブロックに入ったときに、その旨がコンソールに表示できるようにしています。

今回は以上です。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊