Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Lingkungan
anchorpy terkadang tertinggal dari versi anchor-lang; untuk program Raydium yang baru di-deploy, pastikan IDL dapat dikompilasi dengan anchorpy yang Anda gunakan sebelum commit.
Koneksi dan keypair
AsyncClient adalah varian async; Client sinkron tersedia untuk skrip cepat, tetapi async lebih disarankan untuk aplikasi yang mengirim beberapa request.
Membaca state pool
Kebanyakan penggunaan produksi membaca state pool yang sudah didekode dari Raydium REST API (lihatsdk-api/rest-api) daripada mendekode data on-chain secara manual — ini lebih sederhana dan latensinya dapat diterima untuk sebagian besar kasus.
src/raydium/cpmm/layout.ts (sumber TS); sesuaikan ke construct sesuai kebutuhan. anchorpy dapat melakukan ini secara otomatis berdasarkan IDL — lihat di bawah.
Membangun dan mengirim swap
Untuk kesederhanaan, gunakan endpoint server-built-transaction Raydium. Server mengembalikan transaksi yang siap ditandatangani; Anda hanya perlu menambahkan signature Anda:Membangun swap client-side (via anchorpy)
Untuk latensi lebih rendah atau ketika Anda tidak dapat menjangkau API Raydium (wilayah yang disanksi, setup air-gapped):
anchorpy tidak menderivasi mereka secara otomatis.
Arsitektur bot tipikal
Struktur bot Raydium Python yang umum:- RPC provider. Public mainnet RPC membatasi rate secara agresif. Gunakan provider dedicated (Helius, QuickNode, Triton) untuk lalu lintas berkelanjutan.
- WebSocket untuk state pool.
client.account_subscribe(pool_id)mengirim update pada setiap perubahan state. Jauh lebih ketat daripada polling. - Priority fee provider. Helius memiliki endpoint
getPriorityFeeEstimate; Triton punya milik mereka sendiri. Ukur fee Anda berdasarkan persentil 75 dari fee terbaru di program target. - Bundle untuk trade sensitif MEV. Rute melalui block engine Jito jika Anda tidak dapat mentoleransi risiko sandwich. Library Python:
jito-sdk-python(pihak ketiga, kualitas bervariasi).
Membaca state farm
.account["X"].decode(bytes) anchorpy memberikan objek Python native yang cocok dengan struct IDL.
Jebakan umum
1. Penanganan desimal
float native Python adalah IEEE-754 double; jumlah di mint 9-desimal (1 SOL = 1e9 unit) tetap akurat tetapi rasio dan produk kehilangan presisi. Gunakan int (solders mengembalikan int untuk semua amount field) dan rute melalui decimal.Decimal untuk aritmetika harga apa pun.
2. Penalaran berbasis slot vs berbasis timestamp
Beberapa versi farm menggunakan counter slot; LaunchLab menggunakan timestamp.solana-py mengembalikan slot dalam respons RPC, tetapi mengonversi slot → timestamp itu lossy (bervariasi berdasarkan leader schedule). Jika Anda memerlukan waktu wall-clock, panggil get_block_time(slot) secara eksplisit.
3. Kelelahan pool koneksi
AsyncClient membuka satu koneksi HTTP per request secara default. Di bawah beban tinggi, gunakan kembali session httpx.AsyncClient dan atur limits=httpx.Limits(max_connections=100) yang sesuai.
4. Batas ukuran transaksi
Transaksi yang dibangun Python tidak lebih kecil daripada yang dibangun TS — batas 1232 byte berlaku sama. Gunakan V0 transaction (address lookup table) untuk apa pun yang melewati lebih dari ~2 pool.Rujukan
sdk-api/rest-api— endpoint HTTP yang digunakan di atas.sdk-api/anchor-idl— tempat mendapatkan IDL untukanchorpy.integration-guides/routing-and-mev— pola bundle Jito.

