Tokens sind digitale Vermögenswerte, die Eigentum an verschiedenen Kategorien von Vermögenswerten repräsentieren. Tokenisierung ermöglicht die Digitalisierung von Eigentumsrechten. Tokens auf Solana werden als SPL (Solana Program Library)-Tokens bezeichnet.
Dieser Abschnitt behandelt die grundlegenden Konzepte, wie Tokens auf Solana dargestellt werden. Siehe den Abschnitt SPL Token Basics für Codebeispiele.
Wichtige Punkte
-
Token Programs enthalten die gesamte Anweisungen-Logik für die Interaktion mit Token im Netzwerk (sowohl fungible als auch nicht-fungible).
-
Ein Mint Account repräsentiert einen bestimmten Token und speichert globale Metadaten über den Token, wie z. B. das Gesamtangebot und die Mint-Autorität (Adresse, die berechtigt ist, neue Einheiten eines Tokens zu erstellen).
-
Ein Token Account verfolgt das individuelle Eigentum an Tokens für einen bestimmten mint account für einen bestimmten Besitzer.
-
Ein Associated Token Account ist ein Token Account, der mit einer Adresse erstellt wurde, die von den Adressen des Besitzers und des mint accounts abgeleitet ist.
Token Programs
Das Solana-Ökosystem hat zwei Haupt-Token Programs. Quellcode für beide Programme unten.
Token Program (Original)
- Grundlegende Token-Funktionalität (mint, transfer, etc.)
- Unveränderlich und weit verbreitet
Token Extension Program (Token 2022)
- Enthält alle Funktionen des ursprünglichen Token Programs
- Fügt Funktionen durch "Extensions" hinzu
Token Programs enthält die gesamte Anweisungen-Logik für die Interaktion mit Token im Netzwerk (sowohl fungible als auch nicht-fungible). Alle Token auf Solana sind effektiv Daten-Konten, die einem Token Program gehören.
Token Program
Mint Account
Tokens auf Solana werden eindeutig durch die Adresse eines Mint Accounts identifiziert, der dem Token Program gehört. Dieses Konto fungiert als globaler Zähler für einen bestimmten Token und speichert Daten wie:
- Supply: Gesamtangebot des Tokens
- Decimals: Dezimale Genauigkeit des Tokens
- Mint authority: Das Konto, das berechtigt ist, neue Einheiten des Tokens zu erstellen und damit das Angebot zu erhöhen
- Freeze authority: Das Konto, das berechtigt ist, Tokens in einem token account einzufrieren und damit deren Übertragung oder Verbrennung zu verhindern
Die Mint-Berechtigung wird bei der Initialisierung des mint account konfiguriert. Sie autorisiert zukünftige Prägungen, muss jedoch nicht dem Konten gehören, das das mint account erstellt oder bezahlt hat.
Mint Account
Die vollständigen Details, die auf jedem mint account gespeichert sind, umfassen Folgendes:
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 initializedpub is_initialized: bool,/// Optional authority to freeze token accounts.pub freeze_authority: COption<Pubkey>,}
Als Referenz findest du hier einen Solana Explorer Link zum USDC Mint Account.
Token account
Das Token Program erstellt Token accounts, um das individuelle Eigentum an jeder Token-Einheit zu verfolgen. Ein token account speichert Daten wie:
- Mint: Der Token, dessen Einheiten das token account hält
- Owner: Das Konto, das berechtigt ist, Tokens vom token account zu übertragen
- Amount: Anzahl der Tokens, die das token account derzeit hält
Token Account
Die vollständigen Details, die auf jedem token account gespeichert sind, umfassen Folgendes:
pub struct Account {/// The mint associated with this accountpub 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 delegatepub delegate: COption<Pubkey>,/// The account's statepub 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 delegatedpub delegated_amount: u64,/// Optional authority to close the account.pub close_authority: COption<Pubkey>,}
Eine Wallet benötigt ein token account für jeden Token (mint), den sie halten möchte, wobei die Wallet-Adresse als Eigentümer des token accounts festgelegt ist. Jede Wallet kann mehrere token accounts für denselben Token (mint) besitzen, aber ein token account kann nur einen Eigentümer haben und Einheiten eines Tokens (mint) halten.
Kontobeziehungen
Beachte, dass die Daten jedes token account ein owner-Feld enthalten, das angibt, wer die Autorität über das token account hat. Dies unterscheidet sich vom Programm-Eigentümer, der im Basis-Typ Account angegeben ist und für alle token accounts das Token Program ist.
Associated token account
Associated Token Accounts vereinfachen den Prozess, die Adresse eines token account für einen bestimmten mint und Besitzer zu finden. Betrachten Sie den Associated Token Account als den "Standard"-token account für einen bestimmten mint und Besitzer.
Ein Associated Token Account wird mit einer Adresse erstellt, die aus der Adresse des Besitzers und der Adresse des mint account abgeleitet wird. Es ist wichtig zu verstehen, dass ein Associated Token Account lediglich ein token account mit einer bestimmten Adresse ist.
Dies führt zu einem Schlüsselkonzept in der Solana-Entwicklung ein: Program Derived Address (PDA). Eine PDA leitet eine Adresse deterministisch unter Verwendung vordefinierter Eingaben ab, was es einfach macht, die Adresse eines Konten zu finden.
Associated Token Account
Beachten Sie, dass jede Wallet ihren eigenen token account benötigt, um Token vom selben mint zu halten.
Accounts Relationship Expanded
Is this page helpful?