Biaya transaksi

Setiap transaksi Solana memerlukan biaya transaksi, dibayar dalam SOL. Biaya transaksi dibagi menjadi dua bagian: biaya dasar dan biaya prioritas. Biaya dasar mengganti validator untuk memproses transaksi. Biaya prioritas adalah biaya opsional, untuk meningkatkan peluang bahwa pemimpin saat ini akan memproses transaksi Anda.

Biaya dasar

Setiap transaksi memerlukan biaya 5000 lamports untuk setiap tanda tangan yang disertakan. Biaya ini dibayarkan oleh penandatangan pertama pada transaksi. Hanya akun yang dimiliki oleh System Program yang dapat membayar biaya transaksi. Biaya dasar dibagi sebagai berikut:

Biaya prioritas

Sebuah biaya prioritas adalah biaya opsional yang digunakan untuk meningkatkan peluang bahwa pemimpin saat ini (validator) akan memproses transaksi Anda. Validator menerima 100% dari biaya prioritas. Biaya prioritas dapat diatur dengan menyesuaikan harga unit komputasi (CU) transaksi dan batas CU. (Lihat Panduan Cara Menggunakan Biaya Prioritas untuk detail lebih lanjut tentang biaya prioritas.)

Biaya prioritas dihitung sebagai berikut:

Biaya Prioritas = Batas Unit Komputasi × Harga Unit Komputasi

Biaya prioritas digunakan untuk menentukan prioritas transaksi Anda, relatif terhadap transaksi lain. Ini dihitung menggunakan rumus berikut:

Prioritas Transaksi = Biaya Prioritas / Batas Unit Komputasi

Batas unit komputasi

Secara default, setiap instruksi dialokasikan 200.000 CU dan setiap transaksi dialokasikan 1,4 juta CU. Anda dapat mengubah default ini dengan menyertakan instruksi ComputeBudgetInstruction::set_compute_unit_limit dalam transaksi Anda.

Untuk menghitung batas CU yang sesuai untuk transaksi Anda, kami merekomendasikan langkah-langkah berikut:

  1. Perkirakan unit CU yang diperlukan dengan mensimulasikan transaksi
  2. Tambahkan margin keamanan 10% pada perkiraan ini

Biaya prioritas ditentukan oleh batas unit komputasi yang diminta dalam transaksi, bukan jumlah unit komputasi yang benar-benar digunakan. Jika Anda menetapkan batas unit komputasi yang terlalu tinggi atau menggunakan jumlah default, Anda mungkin membayar unit komputasi yang tidak digunakan.

Harga unit komputasi

Harga unit komputasi adalah jumlah opsional micro-lamports yang dibayarkan untuk setiap CU yang diminta. Anda dapat menganggap harga CU sebagai tip untuk mendorong validator memprioritaskan transaksi Anda. Untuk menetapkan harga CU, sertakan instruksi SetComputeUnitPrice dalam transaksi Anda.

Harga CU default adalah 0, yang berarti biaya prioritas default juga 0.

Untuk bantuan menentukan harga CU terbaik untuk transaksi Anda, lihat rekomendasi harga CU real-time yang tercantum dalam tabel di bawah ini.

Contoh

Contoh di bawah ini menunjukkan cara menetapkan batas CU dan harga CU pada transaksi menggunakan SDK Solana.

SDKReferensi Kode Sumber
@solana/web3.js (Typescript)ComputeBudgetProgram
solana-sdk (Rust)ComputeBudgetInstruction
const limitInstruction = ComputeBudgetProgram.setComputeUnitLimit({
units: 300_000
});
const priceInstruction = ComputeBudgetProgram.setComputeUnitPrice({
microLamports: 1
});
import {
LAMPORTS_PER_SOL,
SystemProgram,
Transaction,
Keypair,
Connection,
ComputeBudgetProgram,
sendAndConfirmTransaction
} from "@solana/web3.js";
const connection = new Connection("http://localhost:8899", "confirmed");
const sender = Keypair.generate();
const recipient = new Keypair();
const airdropSignature = await connection.requestAirdrop(
sender.publicKey,
LAMPORTS_PER_SOL
);
await connection.confirmTransaction(airdropSignature, "confirmed");
// Create compute budget instructions
const limitInstruction = ComputeBudgetProgram.setComputeUnitLimit({
units: 300_000
});
const priceInstruction = ComputeBudgetProgram.setComputeUnitPrice({
microLamports: 1
});
const transferInstruction = SystemProgram.transfer({
fromPubkey: sender.publicKey,
toPubkey: recipient.publicKey,
lamports: 0.01 * LAMPORTS_PER_SOL
});
// Add the compute budget and transfer instructions to a new transaction
const transaction = new Transaction()
.add(limitInstruction)
.add(priceInstruction)
.add(transferInstruction);
const signature = await sendAndConfirmTransaction(connection, transaction, [
sender
]);
console.log("Transaction Signature:", signature);
Console
Click to execute the code.

Is this page helpful?

Daftar Isi

Edit Halaman

Dikelola oleh

© 2025 Yayasan Solana.
Semua hak dilindungi.