【完全保存版】 Banana SDKを使って、AstarのAccount Abstractionを作ってみよう!
この記事は、こちらのドキュメントをもとに作成しています。
また、今回使用しているコードは、元のGithubから若干コードを修正しています。(「await」が抜けていると思われた箇所があったため。)
元のGithubはこちらです。
1 チュートリアルを立ち上げてみよう
まずは、立ち上げてみましょう。
1 git clone
まずは、git cloneを行います。
git clone https://github.com/ytakahashi2020/astar_banana_sdk_tutorial.git
下のようになりました。
2 依存関係を入れる
次に、依存関係を入れていきます。
cd astar_banana_sdk_tutorial
npm install
下のように、依存関係が入りました。
3 立ち上げる
最後に、立ち上げてみましょう。
npm start
このように、無事に立ち上がりました。
2 コードを見てみよう
1 インスタンスの取得
まずは、下のようにして「Banana」インスタンスを取得します。
チェーン情報として、「shibuyaTestnet」を渡していることがわかります。
そして、useEffectが使われ、依存性配列が[]なので、マウント時に一度だけ実行されます。
また、後ほど使用するコントラクトは、こちらを使用しています。
サンプルコードはこちらになります。
ただし、このコントラクトはセキュリティ上の問題があるように見えます。
あくまでもサンプルとしてのご活用をお勧めします。
2 ウォレットの作成
「createWallet」でウォレットを作成しています。
1節で取得したインスタンス(bananaSdkInstance)を用いてウォレットを作っていることがわかります。
実際に見てみましょう。
こちらを選択します。
すると、「Banana Wallet」のページに遷移します。
任意のユーザー名を入れて「Connect」を選択します。
すると、このようにウォレットを作成することができました。
3 ウォレット接続
まずは、インスタンスに対し、「getWalletName」でウォレット名を取得します。
次に、取得したウォレット名を引数として、「connectWallet」を実行しています。
また、今回取得した、「wallet」は下のように「walletInstance」にsetされています。
以降、この「walletInstance」を使っていくことになります。
実際に「Connect Wallet」から接続が確認できます。
4 チェーンIDの取得
ウォレット接続の時に取得した、「walletInstance」を使っていきます。
getSignerで署名者を取得し、そこからチェーンIDを取得します。
下のようになりました。
この81は「Shibuya」のチェーンIDです。
5 ネットワークの取得
ウォレット接続時に取得した、「walletInstance」から「プロバイダー」を取得します。
そこからネットワークを取得しています。
下のように、取得できました。
6 トランザクションの実行
「makeTransaction」でトランザクションを実行しています。
「walletInstance」から署名社を取得し、「sendTransaction」を実行しています。
こちらの「Make transaction」を実行します。
すると、このように実行されました。
トランザクションはこちらになります。
7 メッセージの署名
「signMessage」でメッセージの署名を行っています。
署名者がメッセージに対し、「signBananaMessage」を行っています。
「Sign message」でメッセージの署名ができました。
今回は以上です。