
Kemacetan Solana: Cara Terbaik Mengirim Transaksi Solana
Bersainglah dalam setiap perdagangan menggunakan Sender, layanan pengiriman transaksi dengan latensi sangat rendah. Baca dokumentasinya untuk memproses transaksi Solana lebih cepat dan memperoleh keunggulan dalam perdagangan.
Pendahuluan
"Simulasi transaksi gagal: Blockhash tidak ditemukan." "Gagal mengirim transaksi." Pesan kesalahan ini sudah terlalu sering dijumpai. Kemacetan jaringan telah mengubah transaksi paling dasar sekalipun menjadi permainan untung-untungan. Masalah ini sebenarnya tidak perlu terjadi.
Panduan ini membahas strategi sederhana untuk menangani periode lalu lintas tinggi secara efektif agar transaksi Anda berhasil diproses. Kami akan membahas pendekatan menyeluruh untuk menangani kemacetan jaringan, termasuk biaya prioritas, pengoptimalan unit komputasi, dan trik rahasia eksklusif Helius agar transaksi Anda selalu berhasil diproses.
Dalam panduan ini, kita akan membahas:
- Menggunakan transaksi terserialisasi untuk biaya prioritas
- Menggunakan kunci akun untuk biaya prioritas
- Strategi biaya prioritas tingkat lanjut
- Teknik pengoptimalan transaksi
- Memanfaatkan endpoint dengan stake untuk menjamin pengiriman
Biaya Prioritas
Biaya prioritas berfungsi sebagai mekanisme penawaran yang memungkinkan Anda menunjukkan tingkat kepentingan transaksi kepada validator. Biaya ini, yang dihitung dalam micro-lamport per unit komputasi, ditentukan oleh akun tertentu yang berinteraksi dengan transaksi Anda sehingga menciptakan pasar biaya independen untuk setiap akun. Dengan menetapkan biaya ini secara strategis berdasarkan kemacetan khusus akun, Anda dapat meningkatkan peluang transaksi untuk disertakan dalam blok berikutnya secara signifikan.
Selanjutnya, kita akan membahas cara menetapkan biaya prioritas dengan benar melalui berbagai pendekatan menggunakan Priority Fee API dari Helius:
Transaksi Terserialisasi
Metode paling praktis untuk menetapkan biaya prioritas adalah menggunakan transaksi terserialisasi. Transaksi terserialisasi adalah representasi biner dari transaksi yang dikonversi menjadi buffer berformat wire agar dapat dikirimkan melalui jaringan.
- Serialisasikan transaksi Anda dan teruskan ke API:
const serializedTx = transaction.serialize();
const response = await fetch(heliusEndpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 'helius-example',
method: 'getPriorityFeeEstimate',
params: [{
transaction: serializedTx,
options: { recommended: true }
}]
}),
});
const { result } = await response.json();
const priorityFee = result.priorityFeeEstimate;- Tambahkan biaya yang direkomendasikan ke transaksi Anda — urutan instruksi tidak menjadi masalah:
transaction.add(
ComputeBudgetProgram.setComputeUnitPrice({
microLamports: priorityFee
})
);Kunci Akun
Pendekatan alternatifnya adalah memberikan daftar kunci akun yang terlibat dalam transaksi kepada Priority Fee API:
- Ekstrak kunci akun dari transaksi Anda:
const transaction = new Transaction();
// Add your instructions to the transaction
// Extract all account keys from the transaction
const accountKeys = transaction.compileMessage().accountKeys;
// Convert PublicKeys to base58 strings
const publicKeys = accountKeys.map(key => key.toBase58());- Teruskan kunci akun ke Priority Fee API:
const response = await fetch(heliusEndpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 'helius-example',
method: 'getPriorityFeeEstimate',
params: [{
accountKeys: publicKeys,
options: { recommended: true }
}]
}),
});
const { result } = await response.json();
const priorityFee = result.priorityFeeEstimate;- Tambahkan biaya yang direkomendasikan ke transaksi Anda:
transaction.add(
ComputeBudgetProgram.setComputeUnitPrice({
microLamports: priorityFee
})
);Meskipun kedua metode dapat digunakan, metode transaksi terserialisasi lebih direkomendasikan. Penggunaan kunci akun mengharuskan Anda melacak dan menyertakan semua akun yang relevan secara manual. Hal ini dapat menghasilkan perkiraan biaya yang tidak akurat jika ada akun yang terlewat.
Metode transaksi terserialisasi menghilangkan risiko ini dengan otomatis menyertakan semua akun yang diperlukan dan memberikan perkiraan biaya yang lebih akurat berdasarkan konteks transaksi secara lengkap.
Strategi Biaya Prioritas Tingkat Lanjut
Untuk sebagian besar skenario, penggunaan transaksi terserialisasi dengan biaya prioritas yang direkomendasikan sudah memadai. Namun, untuk kontrol yang lebih terperinci, Priority Fee API memungkinkan Anda meminta perkiraan untuk berbagai tingkat prioritas dan mengaktifkan evaluasi slot kosong.
Tingkat Prioritas
Berikut contoh cara meminta semua tingkat biaya prioritas:
const response = await fetch(heliusEndpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 'helius-example',
method: 'getPriorityFeeEstimate',
params: [{
transaction: serializedTx,
options: {
includeAllPriorityFeeLevels: true
}
}]
}),
});
const { result } = await response.json();
console.log(result.priorityFeeLevels);Tindakan ini akan mengembalikan objek dengan berbagai tingkat prioritas:
{
"priorityFeeLevels": {
"min": 10000.0,
"low": 10000.0,
"medium": 10000.0,
"high": 100000.0,
"veryHigh": 5483924.800000011,
"unsafeMax": 8698904817.0
}
}Tingkat prioritas tersebut sesuai dengan berbagai persentil biaya transaksi terbaru:
min: persentil ke-0low: persentil ke-25medium: persentil ke-50high: persentil ke-75veryHigh: persentil ke-95unsafeMax: persentil ke-100 (gunakan dengan hati-hati)
Untuk lebih meningkatkan tingkat keberhasilan pemrosesan transaksi, pertimbangkan penggunaan tingkat prioritas high atau very high. Namun, berhati-hatilah saat menggunakan tingkat prioritas yang lebih tinggi, khususnya veryHigh dan unsafeMax, karena tingkat tersebut dapat meningkatkan biaya transaksi secara signifikan.
Saat menggunakan opsi recommended: true, API mengembalikan biaya prioritas medium (persentil ke-50) jika nilainya melebihi 10.000. Jika nilai medium kurang dari 10.000, API akan mengembalikan 10.000. Hal ini memastikan adanya biaya prioritas dasar untuk transaksi Anda.
Evaluasi Slot Kosong
Pembaruan terbaru pada Priority Fee API memungkinkan perkiraan biaya yang lebih cerdas dengan mempertimbangkan slot kosong. Saat blok tidak memuat transaksi untuk akun tertentu, Anda dapat mengonfigurasi API untuk mengevaluasi slot tersebut sebagai slot dengan biaya nol, sehingga menghasilkan perkiraan yang lebih akurat saat aktivitas jaringan rendah:
const response = await fetch(heliusEndpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 'helius-example',
method: 'getPriorityFeeEstimate',
params: [{
transaction: serializedTx,
options: {
recommended: true,
evaluateEmptySlotAsZero: true
}
}]
}),
});Saat evaluateEmptySlotAsZero diaktifkan, API akan:
- Mengidentifikasi blok tanpa transaksi untuk akun Anda
- Menghitung slot kosong tersebut sebagai slot dengan biaya nol
- Menurunkan perkiraan saat kemacetan rendah
- Mencegah pembayaran berlebih saat aktivitas jaringan rendah
Strategi Pengoptimalan Transaksi
Selain biaya prioritas, pengoptimalan transaksi melibatkan beberapa komponen utama yang bekerja bersama untuk meningkatkan tingkat keberhasilan pemrosesan:
Pengelolaan Unit Komputasi
- Gunakan Helius SDK untuk mendapatkan unit komputasi yang optimal bagi transaksi Anda:
const response = await helius.rpc.getComputeUnits({
transaction: serializedTransaction
});
const computeUnits = response.computeUnits;- Tambahkan batas unit komputasi ke transaksi Anda:
transaction.add(
ComputeBudgetProgram.setComputeUnitLimit({
units: computeUnits
})
);Tingkat Commitment
Untuk sebagian besar aplikasi, penggunaan tingkat commitment processed memberikan keseimbangan terbaik. Tingkat ini:
- Memberikan waktu konfirmasi tercepat
- Menyediakan keamanan yang memadai untuk sebagian besar kasus penggunaan
- Mengurangi risiko kedaluwarsa hash blok
- Meminimalkan transaksi yang dibatalkan saat terjadi kemacetan
Selalu gunakan tingkat commitment yang sama untuk mengirim dan mengonfirmasi transaksi agar perilaku aplikasi Anda tetap konsisten.
Konfigurasi RPC
Atur maxRetries ke 0 dan terapkan logika percobaan ulang Anda sendiri agar memiliki kontrol lebih baik atas pengiriman ulang transaksi. Gunakan skipPreflight: true untuk mengurangi latensi. Hal ini sangat berguna selama periode kemacetan tinggi:
const signature = await connection.sendTransaction(transaction, {
maxRetries: 0,
skipPreflight: true
});Menggunakan Endpoint dengan Stake
Endpoint dengan stake dari Helius menyediakan akses langsung dan terjamin ke koneksi dengan stake, sehingga tidak perlu mengoptimalkan biaya prioritas secara manual:
const connection = new Connection(
'https://staked.helius-rpc.com?api-key=YOUR_API_KEY'
);
// Transaction will be processed with optimal priority
const signature = await connection.sendTransaction(transaction);Endpoint dengan stake tersebut:
- Memberikan bandwidth dengan stake yang terjamin
- Mengurangi kegagalan transaksi saat terjadi kemacetan
- Menawarkan propagasi transaksi yang lebih cepat melalui infrastruktur khusus
Kesimpulan
Penggunaan biaya prioritas secara efektif sangat penting agar transaksi berhasil diproses di Solana, terutama saat terjadi kemacetan jaringan. Dengan memanfaatkan Helius Priority Fee API dan menerapkan strategi yang dibahas, Anda dapat meningkatkan tingkat keberhasilan transaksi secara signifikan sambil tetap mempertimbangkan keseimbangan biaya. Terus ikuti perkembangan dan sesuaikan strategi dengan kondisi jaringan untuk memperoleh hasil yang optimal.
Jika Anda telah membaca sampai sejauh ini, terima kasih! Kami harap panduan ini membantu Anda memahami cara mengoptimalkan transaksi di Solana. Pastikan Anda berlangganan nawala kami agar tidak pernah melewatkan kabar terbaru tentang perkembangan di Solana.
Siap mempelajari lebih lanjut?
Jelajahi artikel terbaru di blog Helius dan lanjutkan perjalanan Solana Anda hari ini.
Artikel Terkait
Berlangganan Helius
Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan


