Tokens auf Solana

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 Instruktionslogik für die Interaktion mit Tokens 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 Programs enthalten die gesamte Instruktionslogik für die Interaktion mit Tokens im Netzwerk (sowohl fungible als auch nicht-fungible). Alle Tokens auf Solana sind effektiv Data Accounts, die einem Token Program gehören.

Token ProgramToken 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

Mint AccountMint Account

Die vollständigen Details, die auf jedem mint account gespeichert sind, umfassen Folgendes:

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>,
}

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 AccountToken Account

Die vollständigen Details, die auf jedem token account gespeichert sind, umfassen Folgendes:

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>,
}

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.

KontobeziehungenKontobeziehungen

Beachte, dass die Daten jedes token accounts ein owner-Feld enthalten, das angibt, wer die Berechtigung über das token account hat. Dies unterscheidet sich vom Programmeigentümer, der im Basis-Konto-Typ angegeben ist, welcher 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 AccountAssociated Token Account

Beachten Sie, dass jede Wallet ihren eigenen token account benötigt, um Token vom selben mint zu halten.

Accounts Relationship ExpandedAccounts Relationship Expanded

Token CLI Beispiele

Die spl-token CLI hilft Ihnen, mit SPL-Token zu experimentieren. Die folgenden Beispiele verwenden das Solana Playground-Terminal, um CLI-Befehle direkt im Browser ohne lokale Installation auszuführen.

Das Erstellen von Token und Konten erfordert SOL für rent-Einlagen und Transaktionsgebühren. Für Solana Playground-Erstnutzer erstellen Sie eine Playground-Wallet und führen den Befehl solana airdrop im Playground-Terminal aus. Sie können auch devnet SOL vom öffentlichen Web-Faucet erhalten.

Terminal
$
solana airdrop 2

Führen Sie spl-token --help aus, um alle verfügbaren Befehle anzuzeigen.

Terminal
$
spl-token --help

Um die spl-token CLI lokal zu installieren, führen Sie aus:

Terminal
$
cargo install spl-token-cli

Weitere Beispiele finden Sie in der spl-token Dokumentation.

Die in Ihrer Terminal-Ausgabe angezeigten Kontenadressen unterscheiden sich von den folgenden Beispielen. Verwenden Sie die Adressen aus Ihrem Playground-Terminal, wenn Sie mitmachen. Beispielsweise gibt der Befehl create-token eine mint account-Adresse mit Ihrer Playground-Wallet als mint authority aus.

Einen neuen Token erstellen

Um einen neuen Token (mint account) zu erstellen, führen Sie aus:

Terminal
$
spl-token create-token

Die Ausgabe sieht folgendermaßen aus:

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

Ein neues mint account beginnt mit null Angebot. Überprüfen Sie das aktuelle Angebot mit:

Terminal
$
spl-token supply <TOKEN_ADDRESS>

Der supply Befehl für einen neuen Token gibt 0 zurück:

Example
spl-token supply 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg

Das Erstellen eines neuen Mint Account erfordert eine Transaktion mit zwei Anweisungen. Hier ist ein Javascript-Beispiel auf Solana Playground.

  1. Das System Program erstellt ein neues Konto mit Platz für die Mint Account Daten und überträgt die Eigentümerschaft an das Token Program.

  2. Das Token Program initialisiert die Daten des neuen Konten als Mint Account

Token Account erstellen

Um Token eines bestimmten mint zu halten, erstellen Sie einen token account:

Terminal
$
spl-token create-account <TOKEN_ADDRESS>

Beispielbefehl:

Example
spl-token create-account 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg

Ausgabe:

Terminal Output
Creating account AfB7uwBEsGtrrBqPTVqEgzWed5XdYfM1psPNLmf7EeX9
Signature: 2BtrynuCLX9CNofFiaw6Yzbx6hit66pup9Sk7aFjwU2NEbFz7NCHD9w9sWhrCfEd73XveAGK1DxFpJoQZPXU9tS1

Der create-account Befehl erstellt einen associated token account mit Ihrer Wallet-Adresse als Eigentümer.

Um einen token account mit einem anderen Eigentümer zu erstellen:

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

Hinweis: <TOKEN_ADDRESS> gibt das mint account für den token account an.

Beispielbefehl:

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

Ausgabe:

Terminal Output
Creating account Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt
Signature: 44vqKdfzspT592REDPY4goaRJH3uJ3Ce13G4BCuUHg35dVUbHuGTHvqn4ZjYF9BGe9QrjMfe9GmuLkQhSZCBQuEt

Das Erstellen eines Associated Token Account erfordert eine Anweisung, die das Associated Token Program aufruft. Hier ist ein Javascript-Beispiel auf Solana Playground.

Das Associated Token Program verwendet Cross Program Invocations, um:

Um ein neues Token Account mit einem neuen Keypair anstelle einer Associated Token Account Adresse zu erstellen, senden Sie eine Transaktion mit zwei Anweisungen. Hier ist ein Javascript-Beispiel auf Solana Playground.

  1. Das System Program erstellt ein neues Konto mit Platz für die Token Account Daten und überträgt die Eigentümerschaft an das Token Program.

  2. Das Token Program initialisiert die Daten als Token Account

Tokens minten

Um neue Einheiten eines Tokens zu erstellen, minten Sie Tokens zu einem Token Account:

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

Beispielbefehl:

Example
spl-token mint 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100

Ausgabe:

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

Um Tokens zu einem anderen Token Account zu minten:

Example
spl-token mint 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100 -- Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt

Ausgabe:

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

Die MintTo Anweisung im Token Program erstellt neue Tokens. Die Mint Authority muss die Transaktion signieren. Die Anweisung mintet Tokens zu einem Token Account und erhöht den Gesamtvorrat im mint account. Hier ist ein Javascript-Beispiel auf Solana Playground.

Tokens übertragen

Um Tokens zwischen Token Accounts zu übertragen:

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

Beispielbefehl:

Example
spl-token transfer 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100 Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt

Ausgabe:

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

Die Transfer Anweisung im Token Program verarbeitet Token-Transfers. Der Eigentümer des Sender-Token-Kontos muss die Transaktion signieren. Die Anweisung verschiebt Token zwischen Token-Konten. Hier ist ein Javascript-Beispiel auf Solana Playground.

Sowohl Sender als auch Empfänger benötigen Token-Konten für den spezifischen Token (Mint). Der Sender kann Anweisungen zum Erstellen des Token-Kontos des Empfängers in derselben Transaktion einschließen.

Token-Metadaten erstellen

Das Token Extensions Program ermöglicht es Ihnen, Metadaten (Name, Symbol, Bild-Link) direkt auf dem Mint-Konto zu speichern.

Um einen Token mit Metadaten-Erweiterung zu erstellen:

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

Ausgabe:

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

Um die Metadaten zu initialisieren:

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

Die Token-URI verlinkt auf Off-Chain-Metadaten. Siehe ein Beispiel-JSON-Format hier.

Beispielbefehl:

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

Sehen Sie sich die Metadaten im Solana Explorer an.

Erfahren Sie mehr im Metadata Extension Guide. Für Details zu Token Extensions siehe den Token Extensions Getting Started Guide und die SPL-Dokumentation.

Is this page helpful?

Inhaltsverzeichnis

Seite bearbeiten

Verwaltet von

© 2026 Solana Foundation.
Alle Rechte vorbehalten.
Verbinden Sie sich