【完全保存版】JupiterのV6 Swap APIを実行してみよう!
当記事は、こちらの記事の「V6 Swap API」の部分を翻訳・編集したものです。
0 始める前の注意(翻訳者による補足)
今回、実際のSOLを使用することになるため、ガス代分が消費されます。
また、秘密鍵を入力する箇所があります。
そのため、新しくウォレットを作成し、そこに少額のSOLを入れて試すことを強くお勧めします。
テストで行う場合は、自分の資産が入ったウォレットを使わないよう、十分ご注意ください。
特に、後から出てくる、dotenvの箇所などが、よくわかっていない場合には、無理やり進むのではなく、先に進まないという選択肢も大事だと思います。
また、記事の中で出てくるコードは、こちらのGithubで確認ができます。
1 はじめに
Jupiter APIは、開発者がSolana上で流動性にアクセスするための最も簡単な方法です。
希望のペア、金額、およびスリッページを指定するだけで、APIはスワップを実行するために必要なシリアライズされたトランザクションを返し、それをSolanaブロックチェーンに必要な署名と共に渡すことができます。
試してみましょう!
# Copy and paste this into your terminal!
curl -s 'https://quote-api.jup.ag/v6/quote?inputMint=So11111111111111111111111111111111111111112&outputMint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&amount=1000000&slippageBps=1' | jq '.outAmount'
2 V6 APIリファレンス
すべてのJupiterスワップはバージョン付きトランザクションとアドレスルックアップテーブルを使用しています。
しかし、すべてのウォレットがバージョン付きトランザクションをサポートしているわけではないため、バージョン付きトランザクションをサポートしていないウォレットを検出した場合、asLegacyTransactionパラメーターを使用する必要があります。
OpenAPIドキュメントでJupiter API Documentationの詳細をご覧ください。
このドキュメントにはRESTリクエストリストと組み込みのAPIプレイグラウンドが含まれています。APIプレイグラウンドを使用して、APIコールを今すぐ試してみてください!
3 V6 Swap APIのガイド
1 必要なライブラリをインストールする
この例を実行するには、NodeJS 16以上が必要です。コマンドラインターミナルで次のライブラリをインストールしてください。
npm i @solana/web3.js
npm i cross-fetch
npm i @coral-xyz/anchor
npm i bs58
2 ライブラリからインポートし、接続を設定する
次に、コードスニペットをjavascriptファイルjupiter-api-example.jsにコピーします。
コードを実行する準備ができたらnode jupiter-api-example.jsと入力します。
以下、いくつか補足です。
まずは、こちらのコマンドで、「package.json」を作りました。
npm init -y
次に、package.jsonに下のように設定しました。
最後に、中身はこのように変更し、実行しました。
import {
Connection,
Keypair,
VersionedTransaction,
clusterApiUrl,
} from "@solana/web3.js";
import fetch from "cross-fetch";
import { Wallet } from "@coral-xyz/anchor";
import bs58 from "bs58";
let connection = new Connection(clusterApiUrl("mainnet-beta"), "confirmed");
3 ウォレットを設定する
テスト目的でプライベートキーを貼り付けることができますが、本番アプリケーションでは推奨されません。
まずは、dotenvをインストールします。
次に、「.env」ファイルを作り、「PRIVATE_KEY」を設定します。
現状、git に上げる予定がない場合でも、うっかりミスを防ぐために、「.gitignore」を設定することを強くお勧めします。
最後に、下のようにして、dotenvを使用します。
4 スワップのルートを取得する
ここでは、SOLからUSDCへのスワップの見積もりを取得します。
ちなみに、量を指定しているのはこの部分です。
特定のトークン取引ペアの最良のスワップルートを、出力トークン量の多い順に取得します。
5 スワップを実行するためのシリアライズされたトランザクションを取得する
見積もりを取得したら、その見積もりをシリアライズして、チェーン上で提出できるスワップトランザクションに変換する必要があります。
6 トランザクションをデシリアライズして署名する
署名を行うために、「deserialize」を行なっています。
7 トランザクションを実行する
「serialize」でシリライズしているので、その後、「sendRawTransaction」で送付しています。
4 トランザクションの実行
では、次のコマンドで、実行してみましょう。
node jupiter-api-example.js
このように実行ができました。
このように、内部でSwapが行われていることも確認することができます。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊