Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Anatomi transaksi
Transaksi Solana memiliki tiga komponen inti:- Message: daftar instruksi terurut, akun yang dirujuk, dan blockhash terbaru.
- Signatures: satu per penandatangan, membuktikan transaksi telah diotorisasi.
- Recent blockhash: membuktikan transaksi baru; transaksi dengan blockhash lama (>150 slot) ditolak.
Instruksi
Instruksi menentukan:program_id— program yang akan dipanggil.accounts— akun (dan flag writable/signer) yang dapat disentuh program.data— byte opak yang diinterpretasi oleh program.
ComputeBudget::SetComputeUnitLimit— naikkan batas CU default.ComputeBudget::SetComputeUnitPrice— atur biaya prioritas.- Opsional
CreateAssociatedTokenAccount— buat ATA output jika pengguna belum memilikinya. Raydium::SwapBaseInput— jalankan swap.- Opsional
CloseAccount— tutup ATA wrapped-SOL.
raydium.trade.swap().
Akun dalam transaksi
Setiap akun yang disentuh oleh instruksi apa pun dalam transaksi harus terdaftar dalam kunci akun transaksi. Setiap akun ditandai:- Signer / non-signer: harus pemilik akun menandatangani transaksi?
- Writable / read-only: dapat transaksi memodifikasi akun?
solana-fundamentals/account-model). Swap CLMM dengan beberapa cross tick array dapat memiliki 20+.
Batas ukuran transaksi
Solana membatasi transaksi pada 1232 byte termasuk signature, message, dan header. Ini adalah hambatan paling umum untuk transaksi kompleks — CLMM Raydium dengan routing multi-hop secara teratur mendorong batas ini. Rincian swap Raydium tipikal ~1000-byte:| Komponen | Ukuran |
|---|---|
| Signature | 64 B |
| Signature count | 1 B |
| Message header | 3 B |
| Blockhash | 32 B |
| Account keys (13 × 32 B) | 416 B |
| Instructions (4 × ~100-150 B) | 400–600 B |
| Total | ~900–1100 B |
Address Lookup Tables (ALTs)
ALT memungkinkan transaksi merujuk akun dengan indeks 1-byte ke dalam tabel yang diterbitkan daripada pubkey 32-byte penuh. Ini mengompresi transaksi secara drastis:- Transaksi merujuk 20 akun secara langsung: ~640 B pubkey.
- Transaksi yang sama menggunakan ALT: ~20 B indeks + referensi ALT.
Budget komputasi
Setiap transaksi memiliki budget compute unit (CU). Melampaui batas menghentikan eksekusi dan gagal transaksi.- Default: 200.000 CU per transaksi.
- Maximum: 1.400.000 CU per transaksi (dinaikkan melalui
ComputeBudget::SetComputeUnitLimit). - Per-block ceiling: 48M CU per blok (level protokol).
integration-guides/priority-fee-tuning untuk tabel lengkap):
| Instruksi | CU |
|---|---|
| CPMM swap | ~140.000 |
| CLMM swap (no tick crossings) | ~170.000 |
| CLMM swap (4 tick crossings) | ~320.000 |
| Farm v6 stake | ~130.000 |
| CPMM pool creation | ~250.000 |
ComputeBudget; jika tidak, Anda mendapatkan default 200k, yang terlalu rendah untuk sebagian besar instruksi Raydium.
Biaya prioritas
Di luar biaya transaksi dasar (5000 lamport per signature), validator semakin memprioritaskan transaksi yang membayar biaya prioritas: tip per-CU dalam microlamport.integration-guides/priority-fee-tuning untuk cara mengukurnya secara dinamis.
Batas jumlah instruksi dan jumlah akun
Selain batas total 1232-byte:- Max akun per transaksi: 128.
- Max akun per instruksi (CPI): 64.
- Max instruksi per transaksi: tidak ada batas keras, hanya dibatasi oleh batas ukuran.
- Max CPI depth: 4 (program dapat memanggil program lain, yang dapat memanggil program lain, 4 level dalam).
Kategori biaya dalam swap Raydium
Transaksi swap pengguna membayar biaya dalam dua kategori:Biaya jaringan Solana
Dibayarkan kepada validator dalam SOL.- Biaya signature dasar: 5000 lamport per signature. Hampir selalu 1 signature = 0,000005 SOL.
- Biaya prioritas: CU-price × CU-limit dalam microlamport. Bervariasi dengan kemacetan; lihat
integration-guides/priority-fee-tuning.
Biaya protokol Raydium
Dipotong dari jumlah swap.- Biaya swap: persentase dari input (CPMM 0,25% tipikal, CLMM 0,01%–1% per tier). Dibagi antara LP dan tujuan protokol. Lihat
ray/protocol-fees.
Contoh: $1000 USDC → SOL via CPMM 0,25% tier
| Kategori biaya | Jumlah | Ke |
|---|---|---|
| Biaya signature dasar | 0,000005 SOL (~$0,0007) | Validator |
| Biaya prioritas (10k µL × 300k CU) | 0,003 SOL (~$0,45) | Validator |
| Biaya swap CPMM (0,25%) | $2,50 | LP + protokol |
| Total biaya pengguna | ~$2,95 |
Transaksi versioned
Solana memiliki dua format transaksi:- Legacy: format asli, tidak ada dukungan ALT.
- v0 (Versioned): mendukung ALT, dapat diperluas ke versi masa depan.
Kesegaran blockhash
Transaksi harus menyertakan blockhash dari dalam ~150 slot terakhir (~60 detik). Di luar jendela itu, validator menolaknya. Untuk loop retry, ambil blockhash segar di setiap retry:integration-guides/priority-fee-tuning untuk pola retry-with-escalating-fees lengkap.
Eksekusi paralel
Solana mengeksekusi transaksi non-konflik secara paralel pada validator multi-core. Dua transaksi berkonflik jika keduanya menulis akun yang sama. Implikasi untuk Raydium:- Dua swap di pool yang sama tidak dapat dieksekusi secara paralel — keduanya menulis state pool.
- Swap di Pool A dan swap di Pool B dieksekusi secara paralel jika daftar akun tidak tumpang tindih.
- Transaksi read-only tidak pernah memblokir penulis pada akun yang sama (read-only bersamaan dengan dirinya sendiri tetapi bukan dengan penulisan).
Tingkat konfirmasi transaksi
Saat mengirimkan transaksi, Anda memilih tingkat konfirmasi:| Level | Tunggu | Finalitas |
|---|---|---|
processed | ~400 ms | Tidak finalized; dapat rollback |
confirmed | ~1 s | Supermajority voted |
finalized | ~13 s | Supermajority rooted |
confirmed adalah standar. Untuk operasi menangani nilai besar (pembuatan pool, top-up reward), finalized lebih aman.
Simulasi
Solana mendukung simulasi transaksi sebelum mengirimkan:getBestSwapInfo untuk memverifikasi rute yang dipilih benar-benar berhasil. Simulasi bukan gratis — mengonsumsi kapasitas RPC — tetapi menangkap kesalahan sebelum membayarnya.
Penunjuk
solana-fundamentals/account-model— akun dalam transaksi.solana-fundamentals/pdas-and-cpis— bagaimana program memanggil satu sama lain.integration-guides/priority-fee-tuning— mengukur batas CU dan biaya prioritas.ray/protocol-fees— struktur biaya protokol Raydium.

