Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Dompet yang mengintegrasikan Raydium biasanya perlu menjawab empat pertanyaan per pengguna: pool LP apa yang dimiliki pengguna ini? posisi apa (NFT CLMM) yang mereka pegang? farm apa yang mereka taruhkan? berapa nilai semuanya? Halaman ini mendokumentasikan masing-masing.
Mendeteksi posisi Raydium
Token LP klasik (CPMM, AMM v4)
Token ini terlihat seperti SPL Token lainnya: ATA pengguna memegang saldo. Dompet menampilkan ini sebagai token lain secara default. Untuk mengungkapnya sebagai posisi LP Raydium:- Enumerasi akun token pengguna:
connection.getParsedTokenAccountsByOwner(user, { programId: TOKEN_PROGRAM_ID }). - Untuk setiap mint, periksa daftar mint Raydium:
GET https://api-v3.raydium.io/pools/info/lps?lps=<LP_MINT>,...(batch hingga ~50 LP mint per panggilan). - Untuk mint yang cocok, API mengembalikan referensi pool. Gunakan untuk menghitung nilai posisi yang dinyatakan dalam token:
NFT posisi CLMM
Posisi CLMM adalah NFT. PDAPersonalPositionState setiap posisi diturunkan dari mint NFT. Untuk mendeteksi:
- Enumerasi NFT pengguna. Untuk NFT Metaplex warisan: filter akun token ke yang memiliki supply 1 dan desimal 0.
- Untuk setiap mint NFT, coba turunkan PDA PersonalPositionState:
-
Enumerasi posisi dompet dengan
raydium.clmm.getOwnerPositionInfo({ programId })dan cocokkan padanftMint(tidak adagetPositionInfo). Setiap entri memberi Anda:poolId→ ambil pool untuk menyelesaikan minttickLower,tickUpper→ tampilkan rentangliquidity,tokensOwedA/B→ hitung nilai posisi + biaya yang tertundarewardInfos→ reward per-stream yang tertunda
-
Untuk NFT posisi yang dikeluarkan di bawah Token-2022 (
OpenPositionWithToken22Nft), program mint NFT adalah Token-2022 bukan SPL Token. Enumerasi keduanya saat memindai.
Taruhan farm
Farm v3 / v5 / v6 masing-masing memiliki PDA ledger per-pengguna. Penurunan:UserLedger yang mungkin dengan hash pengguna dengan daftar farm ID yang dikurasi “kemungkinan”. Menumerasi semua farm ID secara lengkap tidak praktis (ribuan ada); gunakan API.
Menghitung nilai posisi
LP CPMM / AMM v4
Ketiga modul tidak berbagi tanda tangan:liquidity.getPoolInfoFromRpc mengambil { poolId }, sementara cpmm.getPoolInfoFromRpc dan clmm.getPoolInfoFromRpc mengambil string base58 posisional.
raydium.token atau oracle harga).
Posisi CLMM
- Nilai likuiditas (harga saat ini)
- Biaya yang tidak dikumpulkan
- Reward yang tertunda per aliran
- Rentang:
[tickLower_price, tickUpper_price]dengan batang visual yang menunjukkan apakah harga saat ini dalam rentang
Taruhan farm
reward_per_share_x64 dengan formula pembaruan malas sebelum menghitung (waktu yang telah berlalu × tingkat emisi ÷ total_staked).
Simulasi transaksi untuk pratinjau
Sebelum pengguna menandatangani, dompet biasanya menampilkan pratinjau perubahan saldo. GunakansimulateTransaction:
accounts meminta validator untuk mengembalikan status akun pasca-simulasi untuk alamat yang terdaftar. Jauh lebih akurat daripada mencoba memprediksi perubahan saldo dari bentuk instruksi saja.
Jebakan simulasi
- Swap CLMM memerlukan array tick yang valid. Jika ukuran input pengguna akan memasuki array tick yang tidak diinisialisasi, simulasi kembali (sama seperti eksekusi). Tampilkan ini dengan jelas di UI.
- Biaya prioritas. Simulasi berjalan tanpa instruksi compute-budget yang diterapkan. Untuk transaksi besar yang akan melebihi 200k CU default, simulasi gagal tetapi eksekusi aktual dengan batas CU eksplisit berhasil. Selalu atur batas CU pada tx yang disimulasikan juga.
- Blockhash segar. Simulasi menggunakan blockhash saat ini; jika penandatanganan memakan waktu >60 detik tx menjadi tidak valid. Simulasi ulang jika pengguna ragu.
Tampilan Token-2022
Token di bawah program Token-2022 harus diberi label sebagai demikian dalam daftar token dompet, karena mereka memiliki permukaan risiko yang berbeda:- Mint dengan biaya transfer: tampilkan
transferFeeBasisPointssaat ini sebagai “Biaya transfer: X%” di sebelah saldo. Peringatkan saat menerima — pengguna mungkin tidak menyadari mereka akan menerima lebih sedikit dari yang dikirim pengirim. - Mint dengan transfer-hook: tampilkan ID program hook. Hook yang berbahaya dapat memblokir transfer keluar; pengguna harus memverifikasi hook adalah yang mereka harapkan.
- Mint yang tidak dapat ditransfer: tampilkan “Tidak dapat ditransfer” dan nonaktifkan swap/kirim. Ini biasanya token terikat jiwa atau kredensial.
- Mint yang menghasilkan bunga: saldo UI yang diturunkan dari
TokenAccount.amounttidak mencerminkan bunga yang terkumpul. GunakanamountToUiAmountdari@solana/spl-token(yang menerapkan faktor penskalaan) untuk nilai yang ditampilkan.
Tampilan APR Farm
APR yang ditampilkan kepada pengguna harus menggabungkan semua aliran reward langsung, dikonversi ke USD, dan tahunan:APR: X.Y%. Jika mint staking adalah token LP, juga hitung APR biaya dasar LP yang mendasar dan beri label jumlahnya sebagai “Total APR” atau “APR + biaya”.
Penunjuk
products/clmm/ticks-and-positions— penurunan nilai posisi.products/farm-staking/accounts— field status farm.algorithms/token-2022-transfer-fees— semantik tampilan untuk token dengan biaya transfer.
- Raydium SDK v2 — pembantu posisi/farm.
- Endpoint posisi-pengguna di
api-v3.raydium.io.

