見出し画像

猫でもわかるSuiのエアドロお触り自動化

皆さん!!! 給付金ほしいですよね!!!!
え?そんなものに労力を割いてられない?コスパが悪い??
うるせー!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

https://twitter.com/project_bbb/status/1317530697444175873

クリプト界隈で俗に言われるお触りタスクがなぜ万人受けしないのかというと、自分のようなADHD(受診済み)にとっては苦痛な作業でしかないからなんですよね。とてもじゃないですが耐えれません。ああ…でも欲しいな給付金…

じゃあどうすんのさ

答えは簡単!プログラムを書いて自動化しましょう!なんならこれを機にbotterデビューするのもありかもしれません(こんなクソ相場でやるべきことは、1日中チャートを見て上か下か考えたりすることではなく、将来的に自分にとって最高にクールで応用の効く便利なスキルを身につけることです)

本記事ではお触りを自動化するプログラムを書くまでの思考を羅列していきます。対象OSはWindowsになります。

そもそもお触りの自動化って具体的にどうするの?

プログラミングではライブラリと呼ばれる、事前に用意されたコードの断片を用いて完成まで近づけていきます。今回Suiのお触りを自動化するにあたってはこちらのts-sdkを使います。

まずは環境構築から始めましょう。

Node.jsのLTSをインストールします。

インストールが終わり次第、コマンドプロンプト(cmd)を開いてください(開き方を調べるのも学習の一環です)
開いたら npm -version と入力してエンターキーを押す。

こんな感じにインストールしたnpmのバージョンが表示されればファーストステップ突破です。おめでとうございます!

次に npm install -g typescript と入力してください。

僕の場合は既にインストールしているので表示が少ないですが、放置していれば大丈夫なはずです。

次に npm install @mysten/sui.js と入力します。

最後にこちらをダウンロードして解凍すれば、環境構築は完了です。

コードを書こう

それでは書いていきましょう。まずはフォルダ内に新規ファイルとしてairdrop-v2.tsを作ってください。airdrop.tsは事前に用意した完成品なのでコピーしたいときや、躓いたところで見ればよいです。

自分は普段Visual Studio Codeでコードを書いているので、そちらを使います。

事前準備としておまじないを書いていきましょう(ライブラリのインポート)

次に定数を設定します。

そして関数。

ここまでくれば立派なプログラムです。

次にフォルダ内でcmdを開いて tsc と入力します。airdrop-v2.jsがビルドされるはずです。

そしたら次に node airdrop-v2.js と入力します。まだ内部の処理は書いていないので何も表示されませんが、実行されれば成功です。

内部処理

さて、お触りに必要な条件を考えてみます。

  • ガス代のリクエスト

  • 複数のウォレットでお触り

  • トランザクションを発行

どうでしょう?案外少ないものですよね。では実際にコードを書いていきましょう。

ガス代のリクエスト

参考にしてみましょう。大抵のことは公式に書いています。

先ほどと同様にビルドして実行します。

素晴らしい!エクスプローラーからアドレスを見てみましょう。

しっかりとガス代をリクエストできていますね。

ウォレットに送金


おかしいですね…そう、公式にはガス代を送金するコードの例は書いていませんし、説明もされていません。しかし、基本的に大規模なプロジェクトは保守性を確保するためにテストコードなどがあるはずなので、そこから知見を得ます。

まずはSuiのウォレットからSuiを送ってみましょう。
エクスプローラーからトランザクションを開いたらEventsのタブをクリックします。

下にスクロールしてあげて…

なるほど、SuiのBalanceが変わったのは"Pay"が肝であることがわかりますね。GitHubで探してみましょう。(僕は10分かかりましたクソが)

それらしきコードがありましたね。コードを読み解くと、ガス代を算出している処理に必要な定数はcoins, splitTxn, splitCoinsであることが分かり、またRawSignerのpayで送金していることが分かります。この2つの情報さえ確認できれば、あとは書き写すだけですね!

また実行してあげて…

着金したら成功!!!やったー!!!!!!!
僕も正直まだ分かっていない処理の部分などはありますが、まずは動くことが大切です。後からいくらでも調べれるので。

トランザクションをビルド

ここは簡単ですね。公式に例があります。

説明するよりも見たほうが早いので、自分のウォレットからmintしたトランザクションと見比べてみましょう。

実行! 実行!

完成しましたね。お疲れ様でした。
本記事では基本的な考え方について説明してみたので、複数のウォレットでスパムしたり秘密鍵の保存なんやらは完成品のairdrop.tsを見て自分で弄ってみたりして楽しんでください。

分かりづらいところがあればコメント、またはDiscordでお願いします。

ワシの名はパワー!DEG鯖で毎日雑談しておる!


おまけ

Testnetでガス代を送金しようとすると、ライブラリが更新されていないのかエラーになるのでラッパーを書く必要があります。使う場合はimportにSuiExecuteTransactionResponseを追加しておいてください。

この記事が気に入ったらサポートをしてみませんか?