Βασική πληρωμή

Το Solana επιτρέπει άμεσες, παγκόσμιες μεταφορές token με χρεώσεις κάτω από $0.001. Είτε δημιουργείτε διασυνοριακά εμβάσματα, καταβολές μισθοδοσίας ή λειτουργίες ταμείου, μια βασική πληρωμή σε stablecoin διακανονίζεται σε λιγότερο από ένα δευτερόλεπτο και κοστίζει ένα κλάσμα του σεντ.

Πώς λειτουργεί

Μια πληρωμή μεταφέρει stablecoins από το token account του αποστολέα στο token account του παραλήπτη. Εάν ο παραλήπτης λαμβάνει αυτό το token για πρώτη φορά, το token account του μπορεί να δημιουργηθεί ως μέρος της ίδιας συναλλαγής.

Δείτε το How Payments Work on Solana για βασικές έννοιες πληρωμών.

Το plugin token2022Program() από το @solana-program/token-2022 επεκτείνει τον @solana/kit client σας με έναν βοηθό client.token2022. Η μέθοδος transferToATA χειρίζεται αυτόματα την εξαγωγή ATA και τη δημιουργία συναλλαγών, κάτι που είναι ιδανικό για μεμονωμένες μεταφορές πληρωμών.

Τα παρακάτω βήματα δείχνουν τη βασική ροή. Δείτε το Demo για πλήρη εκτελέσιμο κώδικα.

Δημιουργήστε το Token Helper

Προσθέστε το plugin token2022Program() στον client σας με .use(token2022Program()). Αυτό εκθέτει το client.token2022, του οποίου τα instructions παρέχουν μεθόδους για συνηθισμένες λειτουργίες token.

Χρησιμοποιήστε το token2022Program() για mints που ανήκουν στο πρόγραμμα Token-2022, ή tokenProgram() από το @solana-program/token για mints που ανήκουν στο αρχικό Token Program.

Στείλτε την πληρωμή

Χρησιμοποιήστε το transferToATA() για τη μεταφορά token μεταξύ πορτοφολιών. Η μέθοδος χειρίζεται:

  • Επίλυση ATA: Εξάγει αυτόματα Associated Token Accounts (ATAs) για τον αποστολέα και τον παραλήπτη. Εάν το ATA του παραλήπτη δεν υπάρχει, η εντολή δημιουργίας του λογαριασμού προστίθεται αυτόματα στην ίδια συναλλαγή.
  • Επαληθευμένα Ποσά: Περάστε amount σε βασικές μονάδες μαζί με τα decimals του mint. Η μεταφορά ελέγχεται έναντι των δεκαδικών του mint on-chain (π.χ. 250000 βασικές μονάδες -> 0,25 token, εάν το mint έχει 6 δεκαδικά ψηφία)
  • Δημιουργία Συναλλαγής: Το sendTransaction() δημιουργεί, υπογράφει και αποστέλλει τη συναλλαγή, επιλύοντας σε ένα αποτέλεσμα του οποίου το context.signature περιέχει την υπογραφή της συναλλαγής
Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());
const result = await client.token2022.instructions
.transferToATA({
mint: mint.address,
authority: sender,
recipient: recipient.address,
amount: 250_000n,
decimals: 6
})
.sendTransaction();

Επαλήθευση υπολοίπων

Αφού ολοκληρωθεί η μεταφορά, διαβάστε τα υπόλοιπα token από το RPC. Εξάγετε το ATA κάθε πορτοφολιού με το findAssociatedTokenPda(), και στη συνέχεια καλέστε getTokenAccountBalance() για να ανακτήσετε το υπόλοιπο για αυτόν τον λογαριασμό.

Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());
const result = await client.token2022.instructions
.transferToATA({
mint: mint.address,
authority: sender,
recipient: recipient.address,
amount: 250_000n,
decimals: 6
})
.sendTransaction();
const [senderAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: sender.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const [recipientAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: recipient.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const senderBalance = await client.rpc.getTokenAccountBalance(senderAta).send();
const recipientBalance = await client.rpc
.getTokenAccountBalance(recipientAta)
.send();

Δημιουργήστε το Token Helper

Προσθέστε το plugin token2022Program() στον client σας με .use(token2022Program()). Αυτό εκθέτει το client.token2022, του οποίου τα instructions παρέχουν μεθόδους για συνηθισμένες λειτουργίες token.

Χρησιμοποιήστε το token2022Program() για mints που ανήκουν στο πρόγραμμα Token-2022, ή tokenProgram() από το @solana-program/token για mints που ανήκουν στο αρχικό Token Program.

Στείλτε την πληρωμή

Χρησιμοποιήστε το transferToATA() για τη μεταφορά token μεταξύ πορτοφολιών. Η μέθοδος χειρίζεται:

  • Επίλυση ATA: Εξάγει αυτόματα Associated Token Accounts (ATAs) για τον αποστολέα και τον παραλήπτη. Εάν το ATA του παραλήπτη δεν υπάρχει, η εντολή δημιουργίας του λογαριασμού προστίθεται αυτόματα στην ίδια συναλλαγή.
  • Επαληθευμένα Ποσά: Περάστε amount σε βασικές μονάδες μαζί με τα decimals του mint. Η μεταφορά ελέγχεται έναντι των δεκαδικών του mint on-chain (π.χ. 250000 βασικές μονάδες -> 0,25 token, εάν το mint έχει 6 δεκαδικά ψηφία)
  • Δημιουργία Συναλλαγής: Το sendTransaction() δημιουργεί, υπογράφει και αποστέλλει τη συναλλαγή, επιλύοντας σε ένα αποτέλεσμα του οποίου το context.signature περιέχει την υπογραφή της συναλλαγής

Επαλήθευση υπολοίπων

Αφού ολοκληρωθεί η μεταφορά, διαβάστε τα υπόλοιπα token από το RPC. Εξάγετε το ATA κάθε πορτοφολιού με το findAssociatedTokenPda(), και στη συνέχεια καλέστε getTokenAccountBalance() για να ανακτήσετε το υπόλοιπο για αυτόν τον λογαριασμό.

Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());

Επίδειξη

Demo
// Generate signers for sender and recipient
const sender = await generateKeyPairSigner();
const recipient = await generateKeyPairSigner();
console.log("Sender Address:", sender.address);
console.log("Recipient Address:", recipient.address);
// Demo Setup: Create client, mint account, and fund the sender with initial tokens
const { client, mint } = await demoSetup(sender);
console.log("\nMint Address:", mint.address);
// =============================================================================
// Basic Token Payment Demo
// =============================================================================
// Transfer tokens from sender to recipient. The source and destination ATAs are
// derived automatically, and the recipient's ATA is created if it does not exist.
const result = await client.token2022.instructions
.transferToATA({
mint: mint.address,
authority: sender,
recipient: recipient.address,
amount: 250_000n, // 0.25 tokens (base units for a mint with 6 decimals)
decimals: 6
})
.sendTransaction();
console.log("\n=== Token Payment Complete ===");
console.log("Transaction Signature:", result.context.signature);
// Derive the sender and recipient ATAs to read their balances
const [senderAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: sender.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const [recipientAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: recipient.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
// Fetch final token account balances via RPC
const senderBalance = await client.rpc.getTokenAccountBalance(senderAta).send();
const recipientBalance = await client.rpc
.getTokenAccountBalance(recipientAta)
.send();
console.log(
"\nSender Token Account Balance:",
senderBalance.value.uiAmountString
);
console.log(
"Recipient Token Account Balance:",
recipientBalance.value.uiAmountString
);
// =============================================================================
// Demo Setup Helper Function
// =============================================================================
Console
Click to execute the code.

Is this page helpful?

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

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