Asset su Solana

I token sono asset digitali che rappresentano la proprietà su diverse categorie di asset. La tokenizzazione consente la digitalizzazione dei diritti di proprietà. I token su Solana sono chiamati token SPL (Solana Program Library).

The Token Program updates a mint and its token accounts while owners authorize balance changes

Questa sezione copre i concetti di base su come i token sono rappresentati su Solana. Consulta la sezione nozioni di base sui token SPL per esempi di codice.

Punti chiave

  • I Token Program contengono tutta la logica delle istruzioni per interagire con i token sulla rete (sia fungibili che non fungibili).

  • Un mint account rappresenta un token specifico e memorizza metadati globali sul token come l'offerta totale e l'autorità di mint (indirizzo autorizzato a creare nuove unità di un token).

  • Un token account traccia la proprietà individuale dei token per uno specifico mint account per uno specifico proprietario.

  • Un associated token account è un token account creato con un indirizzo derivato dagli indirizzi del proprietario e del mint account.

Token Program

L'ecosistema Solana ha due Token Program principali. Il codice sorgente per entrambi i programmi è disponibile qui sotto.

Token Program contiene tutta la logica delle istruzioni per interagire con i token sulla rete (sia fungibili che non fungibili). Tutti i token su Solana sono effettivamente account di dati di proprietà di un Token Program.

Token ProgramToken Program

Mint account

I token su Solana sono identificati in modo univoco dall'indirizzo di un mint account di proprietà del Token Program. Questo account funge da contatore globale per un token specifico e memorizza dati come:

  • Supply: Fornitura totale del token
  • Decimals: Precisione decimale del token
  • Mint authority: L'account autorizzato a creare nuove unità del token, aumentando la fornitura
  • Freeze authority: L'account autorizzato a congelare i token in un token account, impedendone il trasferimento o la distruzione

La mint authority viene configurata al momento dell'inizializzazione del mint. Autorizza le future operazioni di minting, ma non deve necessariamente corrispondere all'account che ha creato o pagato per il mint account.

Mint AccountMint Account

I dettagli completi memorizzati su ogni mint account includono quanto segue:

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

Per riferimento, ecco un link di Solana Explorer al USDC Mint Account.

Token Account

Il Token Program crea token account per tracciare la proprietà individuale di ogni unità di token. Un token account memorizza dati come:

  • Mint: Il token di cui il token account detiene unità
  • Owner: L'account autorizzato a trasferire token dal token account
  • Amount: Numero di token che il token account detiene attualmente

Token AccountToken Account

I dettagli completi memorizzati su ogni token account includono quanto segue:

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

Un wallet necessita di un token account per ogni token (mint) che desidera detenere, con l'indirizzo del wallet impostato come proprietario del token account. Ogni wallet può possedere più token account per lo stesso token (mint), ma un token account può avere un solo proprietario e detenere unità di un solo token (mint).

Account RelationshipAccount Relationship

Nota che i dati di ogni token account includono un campo owner che identifica chi detiene l'autorità sul token account. Questo è diverso dal program owner specificato nel tipo base Account, che è il Token Program per tutti i token account.

Associated Token Account

Gli Associated Token Account semplificano il processo di ricerca dell'indirizzo di un token account per uno specifico mint e proprietario. Considera l'Associated Token Account come il token account "predefinito" per uno specifico mint e proprietario.

Un Associated Token Account viene creato con un indirizzo derivato dall'indirizzo del proprietario e dall'indirizzo del mint account. È importante comprendere che un Associated Token Account è semplicemente un token account con un indirizzo specifico.

Questo introduce un concetto chiave nello sviluppo su Solana: Program Derived Address (PDA). Un PDA deriva un indirizzo in modo deterministico utilizzando input predefiniti, rendendo facile trovare l'indirizzo di un account.

Associated Token AccountAssociated Token Account

Nota che ogni wallet necessita del proprio token account per detenere token dallo stesso mint.

Relazione tra account espansaRelazione tra account espansa

Is this page helpful?

Indice dei contenuti

Modifica pagina
© 2026 Solana Foundation. Tutti i diritti riservati.