Tokens op Solana

Tokens zijn digitale activa die eigendom vertegenwoordigen over diverse categorieën van activa. Tokenisatie maakt de digitalisering van eigendomsrechten mogelijk. Tokens op Solana worden SPL (Solana Program Library) tokens genoemd.

Deze sectie behandelt de basisconcepten van hoe tokens worden weergegeven op Solana. Raadpleeg de sectie SPL Token Basics voor codevoorbeelden.

Belangrijkste punten

  • Token Programs bevatten alle instructielogica voor interactie met tokens op het netwerk (zowel fungibel als niet-fungibel).

  • Een mint account vertegenwoordigt een specifieke token en slaat globale metadata over de token op, zoals de totale voorraad en mint authority (adres dat geautoriseerd is om nieuwe eenheden van een token te creëren).

  • Een token account houdt individueel eigendom van tokens bij voor een specifiek mint account voor een specifieke eigenaar.

  • Een associated token account is een token account dat is gemaakt met een adres dat is afgeleid van de adressen van de eigenaar en het mint account.

Token Programs

Het Solana-ecosysteem heeft twee belangrijkste Token Programs. Broncode voor beiden programma's hieronder.

Token Programs bevatten alle instructielogica voor interactie met tokens op het netwerk (zowel fungibel als niet-fungibel). Alle tokens op Solana zijn in feite data accounts die eigendom zijn van een Token Program.

Token ProgramToken Program

Mint account

Tokens op Solana worden uniek geïdentificeerd door het adres van een mint account dat eigendom is van het Token Program. Dit account fungeert als een globale teller voor een specifieke token en slaat gegevens op zoals:

  • Supply: Totale voorraad van de token
  • Decimals: Decimale precisie van de token
  • Mint authority: Het account dat geautoriseerd is om nieuwe eenheden van de token te creëren, waardoor de voorraad toeneemt
  • Freeze authority: Het account dat geautoriseerd is om tokens in een token account te bevriezen, waardoor ze niet kunnen worden overgedragen of verbrand

Mint AccountMint Account

De volledige details die op elk mint account worden opgeslagen zijn de volgende:

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

Ter referentie, hier is een Solana Explorer link naar het USDC Mint Account.

Token Account

Het Token Program maakt token accounts aan om individueel eigendom van elke tokeneenheid bij te houden. Een token account slaat gegevens op zoals:

  • Mint: De token waarvan het token account eenheden bevat
  • Owner: Het account dat geautoriseerd is om tokens over te dragen vanuit het token account
  • Amount: Aantal tokens dat het token account momenteel bevat

Token AccountToken Account

De volledige details die op elk token account worden opgeslagen zijn de volgende:

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

Een wallet heeft een token account nodig voor elke token (mint) die het wil bewaren, waarbij het walletadres is ingesteld als de eigenaar van het token account. Elke wallet kan meerdere token accounts bezitten voor dezelfde token (mint), maar een token account kan slechts één eigenaar hebben en eenheden van één token (mint) bevatten.

Account RelationshipAccount Relationship

Merk op dat de data van elk token account een owner veld bevat dat aangeeft wie autoriteit heeft over het token account. Dit verschilt van de programma-eigenaar die is gespecificeerd in het basis Account type, wat het Token Program is voor alle token accounts.

Associated Token Account

Associated token accounts vereenvoudigen het proces van het vinden van het adres van een token account voor een specifieke mint en eigenaar. Beschouw het associated token account als het "standaard" token account voor een specifieke mint en eigenaar.

Een associated token account wordt aangemaakt met een adres dat is afgeleid van het adres van de eigenaar en het adres van het mint account. Het is belangrijk om te begrijpen dat een associated token account gewoon een token account is met een specifiek adres.

Dit introduceert een belangrijk concept in Solana-ontwikkeling: Program Derived Address (PDA). Een PDA leidt deterministisch een adres af met behulp van vooraf gedefinieerde invoer, waardoor het gemakkelijk wordt om het adres van een account te vinden.

Associated Token AccountAssociated Token Account

Merk op dat elke wallet zijn eigen token account nodig heeft om tokens van dezelfde mint te bezitten.

Accounts Relationship ExpandedAccounts Relationship Expanded

Token CLI voorbeelden

De spl-token CLI helpt je om te experimenteren met SPL-tokens. De onderstaande voorbeelden gebruiken de Solana Playground terminal om CLI-commando's direct in de browser uit te voeren zonder lokale installatie.

Het aanmaken van tokens en accounts vereist SOL voor rent-deposito's van accounts en transactiekosten. Voor nieuwe gebruikers van Solana Playground: maak een Playground-wallet aan en voer het solana airdrop commando uit in de Playground-terminal. Je kunt ook devnet SOL krijgen van de publieke web faucet.

Terminal
$
solana airdrop 2

Voer spl-token --help uit om alle beschikbare commando's te zien.

Terminal
$
spl-token --help

Om de spl-token CLI lokaal te installeren, voer je uit:

Terminal
$
cargo install spl-token-cli

Vind meer voorbeelden in de spl-token documentatie.

De accountadressen die in je terminaluitvoer worden weergegeven, verschillen van de onderstaande voorbeelden. Gebruik de adressen uit je Playground-terminal wanneer je meevolgt. Het create-token commando geeft bijvoorbeeld een mint account adres weer met je Playground-wallet als de mint authority.

Een nieuwe token aanmaken

Om een nieuwe token (mint account) aan te maken, voer je uit:

Terminal
$
spl-token create-token

De uitvoer ziet er als volgt uit:

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

Een nieuw mint account begint met een voorraad van nul. Controleer de huidige voorraad met:

Terminal
$
spl-token supply <TOKEN_ADDRESS>

Het supply commando voor een nieuwe token geeft 0 terug:

Example
spl-token supply 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg

Het aanmaken van een nieuw mint account vereist een transactie met twee instructies. Hier is een Javascript-voorbeeld op Solana Playground.

  1. Het System Program maakt een nieuw account aan met ruimte voor de mint account data en draagt het eigendom over aan het Token Program.

  2. Het Token Program initialiseert de data van het nieuwe account als een mint account

Token account aanmaken

Om tokens van een specifiek mint account te kunnen houden, maak je een token account aan:

Terminal
$
spl-token create-account <TOKEN_ADDRESS>

Voorbeeld commando:

Example
spl-token create-account 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg

Uitvoer:

Terminal Output
Creating account AfB7uwBEsGtrrBqPTVqEgzWed5XdYfM1psPNLmf7EeX9
Signature: 2BtrynuCLX9CNofFiaw6Yzbx6hit66pup9Sk7aFjwU2NEbFz7NCHD9w9sWhrCfEd73XveAGK1DxFpJoQZPXU9tS1

Het create-account commando maakt een associated token account aan met jouw wallet-adres als eigenaar.

Om een token account aan te maken met een andere eigenaar:

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

Opmerking: <TOKEN_ADDRESS> specificeert het mint account voor het token account.

Voorbeeld commando:

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

Uitvoer:

Terminal Output
Creating account Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt
Signature: 44vqKdfzspT592REDPY4goaRJH3uJ3Ce13G4BCuUHg35dVUbHuGTHvqn4ZjYF9BGe9QrjMfe9GmuLkQhSZCBQuEt

Het aanmaken van een associated token account vereist één instructie die het Associated Token Program oproept. Hier is een Javascript-voorbeeld op Solana Playground.

Het Associated Token Program gebruikt cross program invocations om:

Om een nieuw token account aan te maken met een nieuw keypair in plaats van een associated token account adres, verstuur je een transactie met twee instructies. Hier is een Javascript-voorbeeld op Solana Playground.

  1. Het System Program maakt een nieuw account aan met ruimte voor de token account gegevens en draagt het eigendom over aan het Token Program.

  2. Het Token Program initialiseert de gegevens als een token account

Tokens minten

Om nieuwe eenheden van een token aan te maken, mint je tokens naar een token account:

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

Voorbeeldopdracht:

Example
spl-token mint 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100

Uitvoer:

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

Om tokens te minten naar een ander token account:

Example
spl-token mint 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100 -- Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt

Uitvoer:

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

De MintTo instructie op het Token Program maakt nieuwe tokens aan. De mint authority moet de transactie ondertekenen. De instructie mint tokens naar een token account en verhoogt de totale supply op het Mint Account. Hier is een Javascript-voorbeeld op Solana Playground.

Tokens overmaken

Om tokens over te maken tussen token accounts:

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

Voorbeeldopdracht:

Example
spl-token transfer 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100 Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt

Uitvoer:

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

De Transfer-instructie in het Token Program verwerkt tokenoverdrachten. De eigenaar van het token account van de verzender moet de transactie ondertekenen. De instructie verplaatst tokens tussen token accounts. Hier is een Javascript-voorbeeld op Solana Playground.

Zowel verzender als ontvanger hebben token accounts nodig voor het specifieke token (mint). De verzender kan instructies toevoegen om het token account van de ontvanger aan te maken in dezelfde transactie.

Tokenmetadata aanmaken

Het Token Extensions Program stelt je in staat om metadata (naam, symbool, afbeeldingslink) direct op het mint account op te slaan.

Om een token aan te maken met metadata-extensie:

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

Uitvoer:

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

Om de metadata te initialiseren:

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

De token-URI verwijst naar off-chain metadata. Zie een voorbeeld van het JSON-formaat hier.

Voorbeeldopdracht:

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

Bekijk de metadata op Solana Explorer.

Lees meer in de Metadata Extension Guide. Voor details over Token Extensions, zie de Getting Started Guide voor Token Extensions en de SPL-documentatie.

Is this page helpful?

Inhoudsopgave

Pagina Bewerken

Beheerd door

© 2026 Solana Foundation.
Alle rechten voorbehouden.
Blijf Verbonden