Πώς λειτουργούν οι πληρωμές στο Solana

Πριν δημιουργήσετε ροές πληρωμών στο Solana, θα πρέπει να κατανοήσετε πέντε βασικές έννοιες: πορτοφόλια, stablecoins, λογαριασμούς tokens, προμήθειες και συναλλαγές. Οι πληρωμές στο Solana αντιστοιχίζονται καθαρά σε συστήματα πληρωμών πολλαπλών νομισμάτων:

Παραδοσιακό μοντέλο πληρωμώνSolanaΠεριγραφή
Αναγνωριστικό πελάτη / Αριθμός λογαριασμούΔιεύθυνση πορτοφολιούΜοναδικό αναγνωριστικό για έναν κάτοχο λογαριασμού
Νόμισμα (USD, EUR)Token Mint (USDG, USDC)Ο τύπος περιουσιακού στοιχείου που μεταφέρεται
Υπόλοιπο ανά νόμισμαToken Account (ATA)Διατηρεί υπόλοιπο συγκεκριμένου νομίσματος/mint

Όπως ακριβώς ένας τραπεζικός πελάτης έχει μία ταυτότητα αλλά διατηρεί ξεχωριστά υπόλοιπα για κάθε νόμισμα, ένα πορτοφόλι Solana έχει μία διεύθυνση αλλά ξεχωριστό λογαριασμό token για κάθε περιουσιακό στοιχείο που κατέχει. Ας αναλύσουμε κάθε στοιχείο.

Πορτοφόλια: αποστολείς και παραλήπτες

Κάθε πληρωμή περιλαμβάνει δύο μέρη, το καθένα από τα οποία προσδιορίζεται από μία διεύθυνση πορτοφολιού—ένα μοναδικό δημόσιο κλειδί 32 bytes (π.χ., 7EcDhS...).

  • Αποστολέας: Το πορτοφόλι που ξεκινά την πληρωμή. Πρέπει να διαθέτει επαρκές υπόλοιπο λογαριασμού stablecoin και να υπογράψει τη συναλλαγή.
  • Παραλήπτης: Το πορτοφόλι προορισμού. Δεν χρειάζεται να υπογράψει ή να διατηρεί υπάρχον υπόλοιπο.
  • Πληρωτής προμήθειας: Το προαιρετικό πορτοφόλι πληρωτή προμήθειας. Μπορεί να χρησιμοποιηθεί για επιδότηση ή ενεργοποίηση συναλλαγών μόνο με stablecoin μεταξύ χρηστών.

Σκεφτείτε τις διευθύνσεις πορτοφολιών όπως τους τραπεζικούς αριθμούς λογαριασμών: δημόσιες, ασφαλείς για κοινοποίηση και απαραίτητες για την αποστολή ή λήψη κεφαλαίων.

Stablecoins

Τα stablecoins αναφέρονται ως "tokens" στο Solana. Τα tokens αντιπροσωπεύουν έναν τύπο περιουσιακού στοιχείου στο δίκτυο. Κάθε token έχει ένα μοναδικό αναγνωριστικό που ονομάζεται "διεύθυνση mint". Όταν δημιουργείτε συστήματα πληρωμών, θα αναφέρεστε σε αυτές τις διευθύνσεις mint για να προσδιορίσετε το περιουσιακό στοιχείο με το οποίο αλληλεπιδράτε. Ακολουθούν μερικά κοινά stablecoin mints στο mainnet:

TokenΕκδότηςΔιεύθυνση mint
USDCCircleEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDTTetherEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
PYUSDPayPal2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo
USDGPaxos2u1tszSeqZ3qBWF3uNGPFc8TzMk2tdiwknnRMWGWjGWH

Για περισσότερες πληροφορίες σχετικά με τα stablecoins στο Solana, δείτε τη σελίδα λύσεων Stablecoins.

Όταν δέχεστε πληρωμές, επικυρώνετε πάντα τη διεύθυνση mint και το Token Program. Τα tokens μπορεί να έχουν κοινά ονόματα αλλά διαφορετικούς εκδότες και υποκείμενα περιουσιακά στοιχεία.

Token accounts

Τα πορτοφόλια δεν κρατούν απευθείας tokens. Αντίθετα, κάθε πορτοφόλι έχει εξουσία πάνω σε έναν token account για κάθε τύπο token που κατέχει. Οι πληρωμές πραγματοποιούνται μεταφέροντας tokens από τον token account του αποστολέα στον token account του παραλήπτη του ίδιου mint:

Token accountsToken accounts

Ένας Associated Token Account είναι ένας ντετερμινιστικός token account που συνδέεται με ένα συγκεκριμένο πορτοφόλι και mint. Δεδομένης μιας διεύθυνσης πορτοφολιού και mint, η διεύθυνση ATA είναι πάντα η ίδια.

  1. Ένας ATA ανά mint. Ένα πορτοφόλι έχει ακριβώς έναν ATA για USDC, έναν για USDT, κ.λπ.
  2. Πρέπει να υπάρχει πριν τη λήψη. Δεν μπορείτε να στείλετε tokens σε έναν ATA που δεν υπάρχει.
  3. Ο αποστολέας συνήθως δημιουργεί. Εάν ο ATA του παραλήπτη δεν υπάρχει, ο αποστολέας μπορεί να τον δημιουργήσει ως μέρος της συναλλαγής πληρωμής.
import { findAssociatedTokenPda } from "@solana-program/token";
const [receiverATA] = await findAssociatedTokenPda({
mint: USDG_MINT_ADDRESS,
owner: receiverWallet.address,
tokenProgram: TOKEN_PROGRAM_ADDRESS
});

Token Programs

Στο Solana, τα programs είναι εκτελέσιμη λογική που διέπει την κατάσταση των accounts. Οι token accounts διαχειρίζονται από ένα Token Program—τον on-chain κώδικα που επαληθεύει τις μεταφορές και ενημερώνει τα υπόλοιπα ατομικά.

Το Solana έχει δύο Token Programs:

ΠρόγραμμαΔιεύθυνσηΠαραδείγματα tokens που
χρησιμοποιούν αυτό το πρόγραμμα
Token ProgramTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DAUSDC, USDT
Token-2022TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEbPYUSD, USDG

Το Token-2022 (επίσης γνωστό ως "Token Extensions") προσθέτει λειτουργίες όπως transfer hooks, τέλη μεταφοράς και εμπιστευτικές μεταφορές. Και τα δύο προγράμματα λειτουργούν παρόμοια για βασικές μεταφορές, αλλά πρέπει να χρησιμοποιήσετε το σωστό κατά την παραγωγή ATAs.

Γιατί αυτό έχει σημασία

Το Token Program που χρησιμοποιείται για τη δημιουργία ενός token διέπει τις οδηγίες και την κατάσταση λογαριασμού για το token. Εάν χρησιμοποιήσετε το λάθος πρόγραμμα, δεν θα μπορέσετε να μεταφέρετε το token.

Τα ATAs παράγονται από τρεις εισόδους: wallet + mint + token_program. Η χρήση του λάθος προγράμματος παράγει μια εντελώς διαφορετική διεύθυνση:

import {
findAssociatedTokenPda,
TOKEN_PROGRAM_ADDRESS
} from "@solana-program/token";
import { TOKEN_2022_PROGRAM_ADDRESS } from "@solana-program/token-2022";
// USDC uses Token Program
const [usdcAta] = await findAssociatedTokenPda({
mint: USDC_MINT,
owner: walletAddress,
tokenProgram: TOKEN_PROGRAM_ADDRESS // ✓ Correct
});
// ❌ This will produce a different address because it uses the wrong program
const [wrongUsdcAta] = await findAssociatedTokenPda({
mint: USDC_MINT,
owner: walletAddress,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS // ❌ Wrong program
});
// PYUSD uses Token-2022
const [pyusdAta] = await findAssociatedTokenPda({
mint: PYUSD_MINT,
owner: walletAddress,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS // ✓ Correct
});

Η παραγωγή ενός ATA με το λάθος πρόγραμμα θα δημιουργήσει μια μη έγκυρη διεύθυνση. Πάντα να ταιριάζετε το πρόγραμμα με το mint του token.

Η ίδια αρχή ισχύει για τις οδηγίες μεταφοράς. Κάθε token program έχει τη δική του οδηγία μεταφοράς και πρέπει να καλέσετε τη σωστή:

import { getTransferInstruction } from "@solana-program/token";
import { getTransferInstruction as getTransferInstruction22 } from "@solana-program/token-2022";
// For USDC (Token Program)
const usdcTransferIx = getTransferInstruction({
source: senderUsdcAta,
destination: receiverUsdcAta,
authority: senderWallet,
amount: 1_000_000n // 1 USDC (6 decimals)
});
// For PYUSD (Token-2022)
const pyusdTransferIx = getTransferInstruction22({
source: senderPyusdAta,
destination: receiverPyusdAta,
authority: senderWallet,
amount: 1_000_000n // 1 PYUSD (6 decimals)
});
// *Note*: Most token program JS Client functions include the ability
// to specify the token program address. Generally, defining it is a
// good practice to ensure you are fully aware of the program you are using
const usdcTransferIx2 = getTransferInstruction(
{
source: senderUsdcAta,
destination: receiverUsdcAta,
authority: senderWallet,
amount: 1_000_000n // 1 USDC (6 decimals)
},
{ tokenProgram: TOKEN_PROGRAM_ADDRESS }
);

Η αποστολή οδηγίας μεταφοράς στο λάθος πρόγραμμα θα αποτύχει. Το πρόγραμμα επικυρώνει ότι κατέχει τους token accounts που εμπλέκονται—οι λογαριασμοί που δημιουργήθηκαν από το Token Program δεν μπορούν να μεταφερθούν μέσω Token-2022, και αντίστροφα.

Για να επαληθεύσετε ποιο πρόγραμμα χρησιμοποιεί ένα token ή token account, ανακτήστε το mint ή τον token account και ελέγξτε το πεδίο owner του:

import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
const accountInfo = await rpc.getAccountInfo(address(mintAddress)).send();
// The owner field tells you which program manages this token
const tokenProgram = accountInfo.value?.owner;
// Returns: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA (Token Program)
// or: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb (Token-2022)

Για εφαρμογές πληρωμών, αποθηκεύστε τη σωστή διεύθυνση προγράμματος μαζί με κάθε υποστηριζόμενο token:

const SUPPORTED_TOKENS = {
USDC: {
mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
program: TOKEN_PROGRAM_ADDRESS,
decimals: 6
},
PYUSD: {
mint: "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo",
program: TOKEN_2022_PROGRAM_ADDRESS,
decimals: 6
}
};

Επεκτάσεις token

Το Token Extensions Program (Token 2022) παρέχει περισσότερες λειτουργίες μέσω επιπλέον οδηγιών που αναφέρονται ως επεκτάσεις. Οι επεκτάσεις είναι προαιρετικά χαρακτηριστικά που μπορείτε να προσθέσετε σε ένα token mint ή token account.

Για περισσότερες πληροφορίες σχετικά με τις Token Extensions, δείτε την τεκμηρίωση Token Extensions.

Χρεώσεις

Οι πληρωμές στο Solana περιλαμβάνουν έως τρία στοιχεία κόστους:

Τύπος χρέωσηςSOLUSD (εκτίμηση)Πότε
Βασική χρέωση συναλλαγής5.000 lamports*~$0.0007Κάθε συναλλαγή (ομαδοποιήστε πολλαπλές πληρωμές για απόσβεση)
Χρέωση προτεραιότηταςΜεταβλητήΜεταβλητήΠροαιρετική· ταχύτερη συμπερίληψη κατά τη συμφόρηση
Δημιουργία λογαριασμού (rent)~0.0029 SOL~$0.40Μόνο κατά τη δημιουργία νέου token account

Συνολικό κόστος ανά πληρωμή: Κάτω από $0.001 για τις περισσότερες μεταφορές. Εάν δημιουργείτε νέο token account, αναμένετε ~$0.40 συνολικά.

Το Solana χρησιμοποιεί τοπικές αγορές χρεώσεων—οι συναλλαγές κάθε προγράμματος ανταγωνίζονται μόνο με άλλες συναλλαγές που στοχεύουν την ίδια κατάσταση. Αυτό σημαίνει ότι οι χρεώσεις πληρωμών παραμένουν χαμηλές και προβλέψιμες ακόμη και κατά τις περιόδους υψηλής δραστηριότητας δικτύου αλλού. Το κόστος rent επίσης σχεδιάζεται να μειωθεί κατά 50% στο εγγύς μέλλον.

Μπορείτε να αφαιρέσετε εντελώς τις χρεώσεις ώστε οι χρήστες να μην αλληλεπιδρούν ποτέ με SOL. Δείτε το Fee Abstraction για μοτίβα υλοποίησης.

Συναλλαγές και οδηγίες

Μια συναλλαγή είναι η ατομική μονάδα εκτέλεσης στο Solana—είτε κάθε λειτουργία επιτυγχάνει, είτε καμία δεν επιτυγχάνει. Κάθε συναλλαγή περιέχει μία ή περισσότερες οδηγίες, οι οποίες είναι μεμονωμένες εντολές (π.χ., "μεταφορά 10 USDC", "δημιουργία token account").

Μια τυπική συναλλαγή πληρωμής μπορεί να περιλαμβάνει δύο οδηγίες: δημιουργία του token account του παραλήπτη (εάν χρειάζεται), στη συνέχεια μεταφορά tokens. Και οι δύο εκτελούνται ατομικά—χωρίς μερικές καταστάσεις. Όπως θα δείτε στο Payment Processing, μπορείτε να ομαδοποιήσετε πολλαπλές πληρωμές σε μία συναλλαγή για να μειώσετε το κόστος και να αυξήσετε τη διεκπεραίωση.

Συνδυάζοντας τα πάντα

Μια τυπική ροή πληρωμής:

  1. Συλλογή δεδομένων. Λάβετε τις διευθύνσεις πορτοφολιού αποστολέα και παραλήπτη και τη διεύθυνση mint του token που μεταφέρεται.
  2. Παραγωγή ATAs. Προσδιορίστε τους λογαριασμούς token και για τα δύο μέρη.
  3. Κατασκευή και υπογραφή. Δημιουργήστε τη συναλλαγή με τις απαραίτητες οδηγίες μεταφοράς, υπογράψτε με το κλειδί του αποστολέα.
  4. Αποστολή & επιβεβαίωση. Η συναλλαγή ολοκληρώνεται σε λιγότερο από ένα δευτερόλεπτο.

Επόμενα βήματα


* ένα lamport είναι η μικρότερη μονάδα του SOL και ισούται με 0,000000001 SOL

Is this page helpful?

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

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