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

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

Βασικό τέλος

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

  • 50% καίγεται: Το μισό καίγεται (αφαιρείται από την κυκλοφορούσα προσφορά SOL).
  • 50% διανέμεται: Το μισό πληρώνεται στον validator που επεξεργάστηκε τη συναλλαγή.

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

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

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

Τέλος προτεραιότητας = Όριο μονάδων υπολογισμού × Τιμή μονάδας υπολογισμού

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

Προτεραιότητα συναλλαγής = Τέλος προτεραιότητας / Όριο μονάδων υπολογισμού

Όριο υπολογιστικών μονάδων

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

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

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

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

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

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

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

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

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

Παράδειγμα

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

SDKΑναφορά πηγαίου κώδικα
@solana/web3.js (Typescript)ComputeBudgetProgram.setComputeUnitPrice
solana-sdk (Rust)ComputeBudgetInstruction::set_compute_unit_price
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?

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

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

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

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