見出し画像

【完全保存版】 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 トランザクションの実行

こちらの実行前に、ウォレットにガス代として「Shibuya」を入れる必要があります。

「makeTransaction」でトランザクションを実行しています。

「walletInstance」から署名社を取得し、「sendTransaction」を実行しています。

こちらの「Make transaction」を実行します。

すると、このように実行されました。

トランザクションはこちらになります。

現時点では、私は読み解くことができませんでした。

Fromの「0x48…b5」がバンドラーアドレス
Toの「0x5F..89」はエントリーポイントコントラクト

であると当初考えました。
しかし、「0x5F..89」はコントラクトアドレスでなかったので、エントリーポイントではないと考えています。

ここはわかり次第、追記します。

https://blockscout.com/shibuya/address/0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789

7 メッセージの署名

「signMessage」メッセージの署名を行っています。

署名者がメッセージに対し、「signBananaMessage」を行っています。

「Sign message」でメッセージの署名ができました。

今回は以上です。

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