Bersedia untuk menyepadukan pengagregatan DEX ke dalam DApp Solana anda? Tutorial ini menunjukkan kepada anda cara berinteraksi dengan API OKX DEX untuk melakukan pertukaran token pada rantaian Solana. Pelaksanaan anda akan menggunakan Web3.js dan OKX DEX API untuk mencipta pengendalian yang mantap bagi petikan dan pelaksanaan swap. Secara lalai, pelaksanaan ini menunjukkan:
Tutorial ini memfokuskan pada pelaksanaan dexUtils.js, fail utiliti yang mengandungi semua fungsi yang diperlukan untuk berinteraksi dengan API OKX DEX pada Solana. Fail ini mengendalikan:
Sebelum bermula, anda perlu:
Anda mempunyai dua pilihan untuk bermula:
git clone https://github.com/Julian-dev28/okx-os-evm-swap-app.git cd okx-os-evm-swap-app git checkout solana-cross-chain-swap
npm install
REACT_APP_API_KEY=your_api_key REACT_APP_SECRET_KEY=your_secret_key REACT_APP_API_PASSPHRASE=your_passphrase REACT_APP_PROJECT_ID=your_project_id REACT_APP_USER_ADDRESS=your_wallet_address REACT_APP_PRIVATE_KEY=your_private_key
Fork the Replit project:
OKX Solana Swap App
Tambahkan pembolehubah persekitaran anda dalam tab Rahsia Replit (terletak dalam panel Alat):
Klik "Jalankan" untuk memulakan persekitaran pembangunan anda
Mari kita sediakan konfigurasi kita untuk berinteraksi dengan Solana:
import { Connection } from "@solana/web3.js"; import base58 from "bs58"; import cryptoJS from "crypto-js"; // Constants for tokens and chain export const NATIVE_SOL = "11111111111111111111111111111111"; export const WRAPPED_SOL = "So11111111111111111111111111111111111111112"; export const USDC_SOL = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; export const SOLANA_CHAIN_ID = "501"; // Initialize Solana connection export const connection = new Connection("https://mainnet.helius-rpc.com/?api-key=<API_KEY>", { confirmTransactionInitialTimeout: 5000, wsEndpoint: "wss://mainnet.helius-rpc.com/?api-key=<API_KEY>", }); // Environment variables for API authentication const apiKey = process.env.REACT_APP_API_KEY; const secretKey = process.env.REACT_APP_SECRET_KEY; const apiPassphrase = process.env.REACT_APP_API_PASSPHRASE; const projectId = process.env.REACT_APP_PROJECT_ID; // Base URL for API requests const apiBaseUrl = "https://www.okx.com/api/v5/dex";
Sebelum melaksanakan pertukaran, kita perlu mendapatkan sebut harga. Berikut ialah cara untuk melaksanakan fungsi petikan:
/** * Gets swap data and optimal route from the OKX DEX API * Note: Requires API credentials from OKX Developer Portal * * @param {Object} params * @param {string} params.chainId - "501" for Solana * @param {string} params.amount - Amount in lamports (1 SOL = 1e9 lamports) * @param {string} params.fromTokenAddress - Source token (e.g., NATIVE_SOL) * @param {string} params.toTokenAddress - Destination token (e.g., USDC_SOL) * @param {string} params.slippage - Slippage tolerance ("0.5" for 0.5%) * @param {string} params.userWalletAddress - Solana wallet address * @returns {Promise<Object>} Contains routerResult.toTokenAmount and transaction data */ export async function getSingleChainSwap(params) { if (!apiKey || !secretKey || !apiPassphrase || !projectId) { throw new Error("Missing API credentials"); } const timestamp = new Date().toISOString(); const requestPath = "/api/v5/dex/aggregator/swap"; const queryString = "?" + new URLSearchParams(params).toString(); const headers = getHeaders(timestamp, "GET", requestPath, queryString); console.log("Requesting swap quote with params:", params); const response = await fetch( `https://www.okx.com${requestPath}${queryString}`, { method: "GET", headers } ); const data = await response.json(); if (data.code !== "0") { throw new Error(`API Error: ${data.msg}`); } if (!data.data?.[0]?.routerResult?.toTokenAmount) { throw new Error("Invalid or missing output amount"); } return data.data[0]; }
Berikut ialah pelaksanaan untuk melaksanakan transaksi swap pada Solana:
/** * Executes a Solana transaction with retry logic and compute budget * @param {Object} txData - Transaction data from the API * @returns {Promise<Object>} Transaction result with explorer URL */ export async function executeTransaction(txData) { if (!userPrivateKey) { throw new Error("Private key not found"); } try { // Get recent blockhash for transaction validity const recentBlockHash = await connection.getLatestBlockhash(); const decodedTransaction = base58.decode(txData.data); // Create transaction object const tx = solanaWeb3.Transaction.from(decodedTransaction); tx.recentBlockhash = recentBlockHash.blockhash; // Create and add keypair for signing const feePayer = solanaWeb3.Keypair.fromSecretKey( base58.decode(userPrivateKey) ); tx.partialSign(feePayer); // Send transaction with retry options const txId = await connection.sendRawTransaction(tx.serialize(), { skipPreflight: false, maxRetries: 5 }); // Wait for confirmation const confirmation = await connection.confirmTransaction({ signature: txId, blockhash: recentBlockHash.blockhash, lastValidBlockHeight: recentBlockHash.lastValidBlockHeight }, 'confirmed'); return { success: true, transactionId: txId, explorerUrl: `https://solscan.io/tx/${txId}`, confirmation }; } catch (error) { console.error("Transaction failed:", error); throw error; } }
Komponen SolanaSwapTransaction menunjukkan cara melaksanakan panggilan API DEX dalam antara muka React:
git clone https://github.com/Julian-dev28/okx-os-evm-swap-app.git cd okx-os-evm-swap-app git checkout solana-cross-chain-swap
Temui ini membantu? Jangan lupa untuk menyemak kod boilerplate dan dokumentasi yang dipautkan di atas. Sertai Komuniti OS OKX untuk berhubung dengan pembangun lain, dan ikuti Julian di Twitter untuk lebih banyak kandungan pembangunan Solana!
Kandungan ini disediakan untuk tujuan maklumat sahaja dan mungkin meliputi produk yang tidak tersedia di rantau anda. Ia mewakili pandangan pengarang dan ia tidak mewakili pandangan OKX. Ia tidak bertujuan untuk memberikan (i) nasihat pelaburan atau cadangan pelaburan; (ii) tawaran atau permintaan untuk membeli, menjual atau memegang aset digital, atau (iii) nasihat kewangan, perakaunan, undang-undang atau cukai. Pegangan aset digital, termasuk stablecoin dan NFT, melibatkan tahap risiko yang tinggi dan boleh berubah-ubah dengan banyaknya. Anda harus mempertimbangkan dengan teliti sama ada berdagang atau memegang aset digital sesuai untuk anda berdasarkan keadaan kewangan anda. Sila rujuk profesional undang-undang/cukai/pelaburan anda untuk pertanyaan tentang keadaan khusus anda. Maklumat (termasuk data pasaran dan maklumat statistik, jika ada) yang dipaparkan dalam siaran ini adalah untuk tujuan maklumat am sahaja. Walaupun semua penjagaan yang munasabah telah diambil dalam menyediakan data dan graf ini, tiada tanggungjawab atau liabiliti diterima untuk sebarang kesilapan fakta atau peninggalan yang dinyatakan di sini. Kedua-dua OKX Web3 Wallet dan OKX NFT Marketplace tertakluk kepada syarat perkhidmatan yang berasingan di www.okx.com.
© 2024 OKX. Artikel ini boleh diterbitkan semula atau diedarkan secara keseluruhannya, atau petikan 100 patah perkataan atau kurang daripada artikel ini boleh digunakan, dengan syarat penggunaan tersebut bukan komersial. Sebarang pengeluaran semula atau pengedaran keseluruhan artikel juga mesti menyatakan dengan jelas: "Artikel ini adalah © 2024 OKX dan digunakan dengan kebenaran." Petikan yang dibenarkan mesti memetik nama artikel dan menyertakan atribusi, contohnya "Sepadukan Widget OKX DEX dalam Hanya 30 Minit, Julian Martinez, © 2024 OKX." Tiada karya terbitan atau penggunaan lain artikel ini dibenarkan.
© 2024 OKX. Hak cipta terpelihara.
Atas ialah kandungan terperinci Panduan API OKX DEX: Membina Antara Muka Pertukaran Token Solana. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!