見出し画像

【DEX】SolanaでアービトラージBOT構築【Rust】

本記事ではDEXでのRustを使ったアービトラージBOTのやり方を紹介します。

変更点:
・2024/4/27
一部コードを修正。

・2024/4/14
本記事は"【SolanaでのMMBOT構築】【Python】"というタイトルでしたが、Serumは現在はFTXの倒産による影響でプロジェクトを封鎖しているため記事内容を更新しています。
おまけとして、Serumでの板取引BOTのコードも付属していますが現在は動作しないことをご了承ください。

本noteではこれからDEX/DeFiでのBOT作成を目指している方向けに、Solana上のDEX aggであるJupiterを使ったアービトラージの自動化方法について解説します。

DeFiでは国内取引所のようなAPIドキュメントや構築方法についての解説がなく書籍もないため、昨今のDeFiブームによって需要が一定数あると思い作成しました。

DeFiの魅力は全てのルールはスマートコントラクトできていることです。しかし、その自由さから最初のハードルも非常に高く、なにからしていいかわからないと感じる方も多々いるかと思います。

現在の多くのDEXはイーサリアムブロックチェーン上で稼働していますので、Solanaブロックチェーンを利用することで競合との差別化を狙うこともできます。

今後本noteで紹介するトークンスワップによるアービトラージは今後のAtomic arbitrageやオンチェーンBOTなどに繋がる第一歩となります。

対象

  • Rustの基本的な使い方を理解している方

  • DeFi/DexでのBOT作成に興味ある方

コンテンツについて

  • Solanaのウォレット作成の方法

  • アービトラージ実装編

こちらからまずはウォレットを作成します。

イーサリアム周りのエコシステムではメタマスクを利用することがほとんどですが、Solanaではそのようなデファクトがまだないため、今回はSolanaコマンドとSolletを利用することとします。

まずはアカウントを作成するため、こちらのCLIをインストールします。

続いて以下のコマンドでアカウントを作成します。

コマンドで作成する理由は2つあります。1つはローカルでの処理で秘密鍵の作成を完結できるためセキュリティ上のメリットがある点と、Sollet上から作成するとパスフレーズのみでシークレットキーは見せてくれないため、パスフレーズからシークレットキーに復元する必要があり、これが難しいためです。(参考: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki)

Solana開発環境: https://solana.com/docs/core/clusters

$ solana config set --url https://api.testnet.solana.com // テストネットを設定、本番環境は https://api.mainnet-beta.solana.com
$ solana-keygen new --outfile ~/.config/solana/mainnet-beta/id.json
実行例

実行するとこのような画面で結果がでるので、一番下にある復元用のフレーズは緊急時用としてメモしておいてください。

このフレーズは銀行口座の復元パスワードのようなもので、これを紛失すると何かあった際にウォレットを復元できな買ったり、第三者から不正に利用される可能性があります。

次に指定した保存先にシークレットキーが保存されているので確認してみましょう、以下のような整数の配列があれば成功です。(以下掲載内容はフェイクです)

[133,131,105,136,93,27,253,121,230,229,200,33,75,165,211,48,88,0,2,58,248,
158,219,134,83,200,99,54,245,32,118,128,95,231,233,165,112,43,236,252,80,
254,215,34,167,31,89,232,106,97,215,96,23,221,2,69,118,8,6,256,98,136,172,246]

続いてテスト環境での資金をAirdropで調達します。

solana balance // この時点では0SOLと表示されます
solana airdrop 1 // 1SOLをテスト資金として要求します
solana balance // 1SOLと表示されれば成功です

トレードをするために

Solana上のアカウントセットアップと資金調達は以上になります。ここまではテストネットになっているため安全に試せますが、トークンスワップをする際には流動性や対象のアドレスによって本番環境ではないと動作しないこともあるため、本番動作を前提としている場合には各自BinanceやFTX、Bybitなどの開設しているアカウントからSOLを購入し、以下のSOLアドレスに送金しましょう。

solana config set --url https://api.mainnet-beta.solana.com // 本番環境に設定
solana address // SOLのアカウントアドレスが表示されるためここに送金する
solana balance // 送金が承認されるとその分がここに反映


アービトラージ実装編

ここから先は

21,130字 / 2画像

¥ 2,480

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