Tokens στο Solana

Τα tokens είναι ψηφιακά περιουσιακά στοιχεία που αντιπροσωπεύουν την κυριότητα σε διάφορες κατηγορίες περιουσιακών στοιχείων. Η tokenization επιτρέπει την ψηφιοποίηση των δικαιωμάτων ιδιοκτησίας. Τα tokens στο Solana αναφέρονται ως SPL (Solana Program Library) Tokens.

Αυτή η ενότητα καλύπτει τις βασικές έννοιες του τρόπου με τον οποίο αντιπροσωπεύονται τα tokens στο Solana. Ανατρέξτε στην ενότητα SPL Token Basics για παραδείγματα κώδικα.

Βασικά σημεία

  • Τα Token Programs περιέχουν όλη τη λογική εντολών για την αλληλεπίδραση με tokens στο δίκτυο (τόσο ανταλλάξιμα όσο και μη ανταλλάξιμα).

  • Ένα Mint Account αντιπροσωπεύει ένα συγκεκριμένο token και αποθηκεύει καθολικά μεταδεδομένα σχετικά με το token, όπως η συνολική προσφορά και η αρχή έκδοσης (διεύθυνση εξουσιοδοτημένη να δημιουργεί νέες μονάδες ενός token).

  • Ένα Token Account παρακολουθεί την ατομική κυριότητα των tokens για ένα συγκεκριμένο mint account για έναν συγκεκριμένο ιδιοκτήτη.

  • Ένα Associated Token Account είναι ένα Token Account που δημιουργείται με διεύθυνση που προέρχεται από τις διευθύνσεις του ιδιοκτήτη και του mint account.

Token Programs

Το οικοσύστημα του Solana διαθέτει δύο κύρια Token Programs. Ο πηγαίος κώδικας και για τα δύο προγράμματα παρακάτω.

Το Token Program περιέχει όλη τη λογική εντολών για την αλληλεπίδραση με tokens στο δίκτυο (τόσο ανταλλάξιμα όσο και μη ανταλλάξιμα). Όλα τα tokens στο Solana είναι ουσιαστικά data accounts που ανήκουν σε ένα Token Program.

Token ProgramToken Program

Mint Account

Τα tokens στο Solana αναγνωρίζονται μοναδικά από τη διεύθυνση ενός Mint Account που ανήκει στο Token Program. Αυτός ο λογαριασμός λειτουργεί ως καθολικός μετρητής για ένα συγκεκριμένο token και αποθηκεύει δεδομένα όπως:

  • Supply: Συνολική προσφορά του token
  • Decimals: Δεκαδική ακρίβεια του token
  • Mint authority: Ο λογαριασμός που έχει εξουσιοδότηση να δημιουργεί νέες μονάδες του token, αυξάνοντας την προσφορά
  • Freeze authority: Ο λογαριασμός που έχει εξουσιοδότηση να παγώνει tokens σε ένα Token Account, εμποδίζοντάς τα να μεταφερθούν ή να καούν

Mint AccountMint Account

Οι πλήρεις λεπτομέρειες που αποθηκεύονται σε κάθε Mint Account περιλαμβάνουν τα εξής:

Mint Account State
pub struct Mint {
/// Optional authority used to mint new tokens. The mint authority may only
/// be provided during mint creation. If no mint authority is present
/// then the mint has a fixed supply and no further tokens may be
/// minted.
pub mint_authority: COption<Pubkey>,
/// Total supply of tokens.
pub supply: u64,
/// Number of base 10 digits to the right of the decimal place.
pub decimals: u8,
/// Is `true` if this structure has been initialized
pub is_initialized: bool,
/// Optional authority to freeze token accounts.
pub freeze_authority: COption<Pubkey>,
}

Για αναφορά, εδώ είναι ένας σύνδεσμος Solana Explorer προς το USDC Mint Account.

Token Account

Το Token Program δημιουργεί Token Accounts για να παρακολουθεί την ατομική ιδιοκτησία κάθε μονάδας token. Ένα Token Account αποθηκεύει δεδομένα όπως:

  • Mint: Το token του οποίου το Token Account κατέχει μονάδες
  • Owner: Ο λογαριασμός που έχει εξουσιοδότηση να μεταφέρει tokens από το Token Account
  • Amount: Αριθμός των tokens που το Token Account κατέχει αυτή τη στιγμή

Token AccountToken Account

Οι πλήρεις λεπτομέρειες που αποθηκεύονται σε κάθε Token Account περιλαμβάνουν τα εξής:

Token Account State
pub struct Account {
/// The mint associated with this account
pub mint: Pubkey,
/// The owner of this account.
pub owner: Pubkey,
/// The amount of tokens this account holds.
pub amount: u64,
/// If `delegate` is `Some` then `delegated_amount` represents
/// the amount authorized by the delegate
pub delegate: COption<Pubkey>,
/// The account's state
pub state: AccountState,
/// If is_native.is_some, this is a native token, and the value logs the
/// rent-exempt reserve. An Account is required to be rent-exempt, so
/// the value is used by the Processor to ensure that wrapped SOL
/// accounts do not drop below this threshold.
pub is_native: COption<u64>,
/// The amount delegated
pub delegated_amount: u64,
/// Optional authority to close the account.
pub close_authority: COption<Pubkey>,
}

Ένα πορτοφόλι χρειάζεται ένα token account για κάθε token (mint) που θέλει να κατέχει, με τη διεύθυνση του πορτοφολιού να ορίζεται ως ιδιοκτήτης του token account. Κάθε πορτοφόλι μπορεί να κατέχει πολλαπλά token accounts για το ίδιο token (mint), αλλά ένα token account μπορεί να έχει μόνο έναν ιδιοκτήτη και να κατέχει μονάδες ενός token (mint).

Account RelationshipAccount Relationship

Σημειώστε ότι τα δεδομένα κάθε Token Account περιλαμβάνουν ένα πεδίο owner που προσδιορίζει ποιος έχει εξουσία πάνω στο Token Account. Αυτό διαφέρει από τον ιδιοκτήτη προγράμματος που καθορίζεται στον βασικό τύπο Account, ο οποίος είναι το Token Program για όλα τα Token Accounts.

Associated Token Account

Οι Associated Token Accounts απλοποιούν τη διαδικασία εύρεσης της διεύθυνσης ενός token account για ένα συγκεκριμένο mint και ιδιοκτήτη. Σκεφτείτε τον Associated Token Account ως τον "προεπιλεγμένο" token account για ένα συγκεκριμένο mint και ιδιοκτήτη.

Ένας Associated Token Account δημιουργείται με μια διεύθυνση που προέρχεται από τη διεύθυνση του ιδιοκτήτη και τη διεύθυνση του mint account. Είναι σημαντικό να κατανοήσετε ότι ένας Associated Token Account είναι απλώς ένας token account με μια συγκεκριμένη διεύθυνση.

Αυτό εισάγει μια βασική έννοια στην ανάπτυξη Solana: το Program Derived Address (PDA). Ένα PDA παράγει μια διεύθυνση ντετερμινιστικά χρησιμοποιώντας προκαθορισμένες εισόδους, διευκολύνοντας την εύρεση της διεύθυνσης ενός λογαριασμού.

Associated Token AccountAssociated Token Account

Σημειώστε ότι κάθε πορτοφόλι χρειάζεται το δικό του token account για να κατέχει tokens από το ίδιο mint.

Επεκταμένη σχέση λογαριασμώνΕπεκταμένη σχέση λογαριασμών

Παραδείγματα Token CLI

Το spl-token CLI σας βοηθά να πειραματιστείτε με SPL tokens. Τα παρακάτω παραδείγματα χρησιμοποιούν το τερματικό του Solana Playground για να εκτελέσουν εντολές CLI απευθείας στο πρόγραμμα περιήγησης χωρίς τοπική εγκατάσταση.

Η δημιουργία tokens και λογαριασμών απαιτεί SOL για καταθέσεις rent λογαριασμών και τέλη συναλλαγών. Για χρήστες Solana Playground που το χρησιμοποιούν για πρώτη φορά, δημιουργήστε ένα πορτοφόλι Playground και εκτελέστε την εντολή solana airdrop στο τερματικό Playground. Μπορείτε επίσης να λάβετε devnet SOL από τη δημόσια web faucet.

Terminal
$
solana airdrop 2

Εκτελέστε spl-token --help για να δείτε όλες τις διαθέσιμες εντολές.

Terminal
$
spl-token --help

Για να εγκαταστήσετε το spl-token CLI τοπικά, εκτελέστε:

Terminal
$
cargo install spl-token-cli

Βρείτε περισσότερα παραδείγματα στην τεκμηρίωση του spl-token.

Οι διευθύνσεις λογαριασμών που εμφανίζονται στην έξοδο του τερματικού σας διαφέρουν από τα παρακάτω παραδείγματα. Χρησιμοποιήστε τις διευθύνσεις από το τερματικό Playground σας όταν ακολουθείτε. Για παράδειγμα, η εντολή create-token εξάγει μια διεύθυνση mint account με το πορτοφόλι Playground σας ως mint authority.

Δημιουργία νέου token

Για να δημιουργήσετε ένα νέο token (mint account), εκτελέστε:

Terminal
$
spl-token create-token

Η έξοδος μοιάζει με:

Terminal Output
Creating token 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg
Address: 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg
Decimals: 9
Signature: 44fvKfT1ezBUwdzrCys3fvCdFxbLMnNvBstds76QZyE6cXag5NupBprSXwxPTzzjrC3cA6nvUZaLFTvmcKyzxrm1

Ένας νέος mint account ξεκινά με μηδενική προσφορά. Ελέγξτε την τρέχουσα προσφορά με:

Terminal
$
spl-token supply <TOKEN_ADDRESS>

Η εντολή supply για ένα νέο token επιστρέφει 0:

Example
spl-token supply 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg

Η δημιουργία ενός νέου Mint Account απαιτεί μια συναλλαγή με δύο οδηγίες. Ακολουθεί ένα παράδειγμα σε Javascript στο Solana Playground.

  1. Το System Program δημιουργεί έναν νέο λογαριασμό με χώρο για τα δεδομένα του Mint Account και μεταφέρει την ιδιοκτησία στο Token Program.

  2. Το Token Program αρχικοποιεί τα δεδομένα του νέου λογαριασμού ως Mint Account

Δημιουργία token account

Για να κρατήσετε tokens ενός συγκεκριμένου mint, δημιουργήστε ένα token account:

Terminal
$
spl-token create-account <TOKEN_ADDRESS>

Παράδειγμα εντολής:

Example
spl-token create-account 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg

Έξοδος:

Terminal Output
Creating account AfB7uwBEsGtrrBqPTVqEgzWed5XdYfM1psPNLmf7EeX9
Signature: 2BtrynuCLX9CNofFiaw6Yzbx6hit66pup9Sk7aFjwU2NEbFz7NCHD9w9sWhrCfEd73XveAGK1DxFpJoQZPXU9tS1

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

Για να δημιουργήσετε ένα token account με διαφορετικό κάτοχο:

Terminal
$
spl-token create-account --owner <OWNER_ADDRESS> <TOKEN_ADDRESS>

Σημείωση: το <TOKEN_ADDRESS> καθορίζει τον mint account για το token account.

Παράδειγμα εντολής:

Example
spl-token create-account --owner 2i3KvjDCZWxBsqcxBHpdEaZYQwQSYE6LXUMx5VjY5XrR 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg

Έξοδος:

Terminal Output
Creating account Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt
Signature: 44vqKdfzspT592REDPY4goaRJH3uJ3Ce13G4BCuUHg35dVUbHuGTHvqn4ZjYF9BGe9QrjMfe9GmuLkQhSZCBQuEt

Η δημιουργία ενός Associated Token Account απαιτεί μία εντολή που καλεί το Associated Token Program. Εδώ είναι ένα παράδειγμα Javascript στο Solana Playground.

Το Associated Token Program χρησιμοποιεί Cross Program Invocations για να:

Για να δημιουργήσετε ένα νέο Token Account με ένα νέο keypair αντί για μια διεύθυνση Associated Token Account, στείλτε μια συναλλαγή με δύο εντολές. Εδώ είναι ένα παράδειγμα Javascript στο Solana Playground.

  1. Το System Program δημιουργεί έναν νέο λογαριασμό με χώρο για τα δεδομένα του Token Account και μεταφέρει την ιδιοκτησία στο Token Program.

  2. Το Token Program αρχικοποιεί τα δεδομένα ως Token Account

Έκδοση tokens

Για να δημιουργήσετε νέες μονάδες ενός token, εκδώστε tokens σε ένα Token Account:

Terminal
$
spl-token mint [OPTIONS] <TOKEN_ADDRESS> <TOKEN_AMOUNT> [--] [RECIPIENT_TOKEN_ACCOUNT_ADDRESS]

Παράδειγμα εντολής:

Example
spl-token mint 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100

Έξοδος:

Terminal Output
Minting 100 tokens
Token: 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg
Recipient: AfB7uwBEsGtrrBqPTVqEgzWed5XdYfM1psPNLmf7EeX9
Signature: 2NJ1m7qCraPSBAVxbr2ssmWZmBU9Jc8pDtJAnyZsZJRcaYCYMqq1oRY1gqA4ddQno3g3xcnny5fzr1dvsnFKMEqG

Για να εκδώσετε tokens σε διαφορετικό token account:

Example
spl-token mint 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100 -- Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt

Έξοδος:

Terminal Output
Minting 100 tokens
Token: 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg
Recipient: Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt
Signature: 3SQvNM3o9DsTiLwcEkSPT1Edr14RgE2wC54TEjonEP2swyVCp2jPWYWdD6RwXUGpvDNUkKWzVBZVFShn5yntxVd7

Η εντολή MintTo στο Token Program δημιουργεί νέα tokens. Η αρχή έκδοσης πρέπει να υπογράψει τη συναλλαγή. Η εντολή εκδίδει tokens σε ένα Token Account και αυξάνει τη συνολική προσφορά στο Mint Account. Εδώ είναι ένα παράδειγμα Javascript στο Solana Playground.

Μεταφορά tokens

Για να μεταφέρετε tokens μεταξύ token accounts:

Terminal
spl-token transfer [OPTIONS] <TOKEN_ADDRESS> <TOKEN_AMOUNT> <RECIPIENT_ADDRESS or RECIPIENT_TOKEN_ACCOUNT_ADDRESS>

Παράδειγμα εντολής:

Example
spl-token transfer 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100 Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt

Έξοδος:

Terminal Output
Transfer 100 tokens
Sender: AfB7uwBEsGtrrBqPTVqEgzWed5XdYfM1psPNLmf7EeX9
Recipient: Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt
Signature: 5y6HVwV8V2hHGLTVmTmdySRiEUCZnWmkasAvJ7J6m7JR46obbGKCBqUFgLpZu5zQGwM4Xy6GZ4M5LKd1h6Padx3o

Η εντολή Transfer στο Token Program διαχειρίζεται τις μεταφορές tokens. Ο κάτοχος του Token Account του αποστολέα πρέπει να υπογράψει τη συναλλαγή. Η εντολή μετακινεί tokens μεταξύ Token Accounts. Ακολουθεί ένα παράδειγμα σε Javascript στο Solana Playground.

Τόσο ο αποστολέας όσο και ο παραλήπτης χρειάζονται token accounts για το συγκεκριμένο token (mint). Ο αποστολέας μπορεί να συμπεριλάβει εντολές για τη δημιουργία του token account του παραλήπτη στην ίδια συναλλαγή.

Δημιουργία Token Metadata

Το Token Extensions Program σας επιτρέπει να αποθηκεύετε metadata (όνομα, σύμβολο, σύνδεσμο εικόνας) απευθείας στο Mint Account.

Για να δημιουργήσετε ένα token με επέκταση metadata:

Example
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --enable-metadata

Έξοδος:

Terminal Output
Creating token BdhzpzhTD1MFqBiwNdrRy4jFo2FHFufw3n9e8sVjJczP under program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
To initialize metadata inside the mint, please run `spl-token initialize-metadata BdhzpzhTD1MFqBiwNdrRy4jFo2FHFufw3n9e8sVjJczP <YOUR_TOKEN_NAME> <YOUR_TOKEN_SYMBOL> <YOUR_TOKEN_URI>`, and sign with the mint authority.
Address: BdhzpzhTD1MFqBiwNdrRy4jFo2FHFufw3n9e8sVjJczP
Decimals: 9
Signature: 5iQofFeXdYhMi9uTzZghcq8stAaa6CY6saUwcdnELST13eNSifiuLbvR5DnRt311frkCTUh5oecj8YEvZSB3wfai

Για να αρχικοποιήσετε τα metadata:

Terminal
spl-token initialize-metadata <TOKEN_MINT_ADDRESS> <YOUR_TOKEN_NAME> <YOUR_TOKEN_SYMBOL> <YOUR_TOKEN_URI>

Το token URI συνδέεται με off-chain metadata. Δείτε ένα παράδειγμα μορφής JSON εδώ.

Παράδειγμα εντολής:

Example
spl-token initialize-metadata BdhzpzhTD1MFqBiwNdrRy4jFo2FHFufw3n9e8sVjJczP "TokenName" "TokenSymbol" "https://raw.githubusercontent.com/solana-developers/opos-asset/main/assets/DeveloperPortal/metadata.json"

Δείτε τα metadata στο Solana Explorer.

Μάθετε περισσότερα στον οδηγό Metadata Extension. Για λεπτομέρειες σχετικά με τα Token Extensions, δείτε τον οδηγό Getting Started για τα Token Extensions και την τεκμηρίωση SPL.

Is this page helpful?

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

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

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

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