Τέλη συναλλαγών

Κάθε συναλλαγή Solana απαιτεί τέλος συναλλαγής, που καταβάλλεται σε SOL. Τα τέλη συναλλαγών χωρίζονται σε δύο μέρη: το βασικό τέλος και το τέλος προτεραιότητας. Το βασικό τέλος αποζημιώνει τους validators για την επεξεργασία της συναλλαγής. Το τέλος προτεραιότητας είναι ένα προαιρετικό τέλος, για να αυξηθεί η πιθανότητα ο τρέχων leader να επεξεργαστεί τη συναλλαγή σας.

Βασικό τέλος

Κάθε συναλλαγή κοστίζει 5000 lamports ανά συμπεριλαμβανόμενη υπογραφή. Αυτό το τέλος καταβάλλεται από τον πρώτο υπογράφοντα της συναλλαγής. Μόνο λογαριασμοί που ανήκουν στο System Program μπορούν να πληρώσουν τέλη συναλλαγών. Το βασικό τέλος κατανέμεται ως εξής:

Τέλος προτεραιότητας

Το τέλος προτεραιότητας είναι ένα προαιρετικό τέλος που χρησιμοποιείται για να αυξηθεί η πιθανότητα ο τρέχων leader (validator) να επεξεργαστεί τη συναλλαγή σας. Ο validator λαμβάνει το 100% του τέλους προτεραιότητας. Τα τέλη προτεραιότητας μπορούν να οριστούν προσαρμόζοντας την τιμή μονάδας υπολογισμού (CU) και το όριο CU της συναλλαγής. (Δείτε τον οδηγό Πώς να χρησιμοποιήσετε τα τέλη προτεραιότητας για περισσότερες λεπτομέρειες σχετικά με τα τέλη προτεραιότητας.)

Το τέλος προτεραιότητας υπολογίζεται ως εξής:

Prioritization fee formula
Prioritization fee = CU limit * CU price

Το τέλος προτεραιότητας χρησιμοποιείται για να καθοριστεί η προτεραιότητα της συναλλαγής σας, σε σχέση με άλλες συναλλαγές. Υπολογίζεται χρησιμοποιώντας τον ακόλουθο τύπο:

Transaction priority formula
Priority = (Prioritization fee + Base fee) / (1 + CU limit + Signature CUs + Write lock CUs)

Όριο μονάδων υπολογισμού

Από προεπιλογή, σε κάθε εντολή εκχωρούνται 200.000 CUs και σε κάθε συναλλαγή εκχωρούνται 1,4 εκατομμύρια CUs. Μπορείτε να αλλάξετε αυτές τις προεπιλογές συμπεριλαμβάνοντας μια εντολή SetComputeUnitLimit στη συναλλαγή σας.

Για να υπολογίσετε το κατάλληλο όριο CU για τη συναλλαγή σας, συνιστούμε τα ακόλουθα βήματα:

  1. Εκτιμήστε τις απαιτούμενες μονάδες CU προσομοιώνοντας τη συναλλαγή
  2. Προσθέστε ένα περιθώριο ασφαλείας 10% σε αυτήν την εκτίμηση

Η προτεραιότητα χρέωσης καθορίζεται από το αιτούμενο όριο μονάδων υπολογισμού της συναλλαγής, όχι από τον πραγματικό αριθμό μονάδων υπολογισμού που χρησιμοποιήθηκαν. Εάν ορίσετε ένα όριο μονάδων υπολογισμού που είναι πολύ υψηλό ή χρησιμοποιήσετε την προεπιλεγμένη ποσότητα, ενδέχεται να πληρώσετε για μη χρησιμοποιούμενες μονάδες υπολογισμού.

Τιμή μονάδας υπολογισμού

Η τιμή μονάδας υπολογισμού είναι ένα προαιρετικό ποσό micro-lamports που καταβάλλεται για κάθε αιτούμενη CU. Μπορείτε να σκεφτείτε την τιμή CU ως ένα φιλοδώρημα για να ενθαρρύνετε τον validator να δώσει προτεραιότητα στη συναλλαγή σας. Για να ορίσετε την τιμή CU, συμπεριλάβετε μια εντολή SetComputeUnitPrice στη συναλλαγή σας.

Η προεπιλεγμένη τιμή CU είναι 0, που σημαίνει ότι η προεπιλεγμένη χρέωση προτεραιότητας είναι επίσης 0.

Για βοήθεια στον προσδιορισμό της καλύτερης τιμής CU για τη συναλλαγή σας, δείτε τη σύσταση τιμής CU σε πραγματικό χρόνο που παρέχεται στον παρακάτω πίνακα.

ΠάροχοςAPI χρέωσης προτεραιότητας
HeliusΤεκμηρίωση
QuickNodeΤεκμηρίωση
TritonΤεκμηρίωση

Παράδειγμα

Τα παρακάτω παραδείγματα δείχνουν πώς να ορίσετε το όριο CU και την τιμή CU σε μια συναλλαγή χρησιμοποιώντας τα Solana SDK.

SDKΑναφορά πηγαίου κώδικα
@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?

Πίνακας Περιεχομένων

Επεξεργασία Σελίδας

Διαχειρίζεται από

© 2026 Ίδρυμα Solana.
Με επιφύλαξη παντός δικαιώματος.
Συνδεθείτε