Token'lar, çeşitli varlık kategorileri üzerindeki mülkiyeti temsil eden dijital varlıklardır. Tokenizasyon, mülkiyet haklarının dijitalleştirilmesini sağlar. Solana'daki token'lara SPL (Solana Program Library) token'ları denir.
Bu bölüm, token'ların Solana'da nasıl temsil edildiğine dair temel kavramları kapsar. Kod örnekleri için SPL token temelleri bölümüne bakın.
Önemli noktalar
-
Token Programs, ağdaki token'larla (hem değiştirilebilir hem de değiştirilemez) etkileşim için tüm talimat mantığını içerir.
-
Mint account, belirli bir token'ı temsil eder ve token hakkında toplam arz ve mint yetkisi (bir token'ın yeni birimlerini oluşturmaya yetkili adres) gibi global meta verileri saklar.
-
Token account, belirli bir sahip için belirli bir mint account'a ait token'ların bireysel sahipliğini takip eder.
-
Associated token account, sahip ve mint account adreslerinden türetilen bir adresle oluşturulan bir token account'tır.
Token Program'lar
Solana ekosisteminin iki ana Token Program'ı vardır. Her iki programın kaynak kodu aşağıdadır.
Token Program (orijinal)
- Temel token yetenekleri (mint, transfer vb.)
- Değiştirilemez ve yaygın olarak kullanılır
Token Extension Program (Token 2022)
- Orijinal Token Program'ın tüm özelliklerini içerir
- "Uzantılar" aracılığıyla özellikler ekler
Token Programs, ağdaki token'larla (hem değiştirilebilir hem de değiştirilemez) etkileşim için tüm talimat mantığını içerir. Solana'daki tüm token'lar, bir Token Program tarafından sahiplenilen veri hesaplarıdır.
Token Program
Mint account
Solana'daki token'lar, Token Program'a ait bir mint account adresine göre benzersiz şekilde tanımlanır. Bu hesap, belirli bir token için global bir sayaç görevi görür ve şu gibi verileri saklar:
- Supply: Token'ın toplam arzı
- Decimals: Token'ın ondalık hassasiyeti
- Mint authority: Token'ın yeni birimlerini oluşturmaya yetkili hesap, arzı artırır
- Freeze authority: Token Account'taki tokenları dondurmaya yetkili hesap, transfer edilmelerini veya yakılmalarını engeller
Mint yetkisi, mint başlatıldığında yapılandırılır. Gelecekteki basım işlemlerini yetkilendirir; ancak mint account'ı oluşturan veya bunun ücretini ödeyen hesap olmak zorunda değildir.
Mint Account
Her Mint Account'ta saklanan tam detaylar şunları içerir:
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>,}
Referans olarak, işte USDC Mint Account'a ait Solana Explorer bağlantısı.
Token Account
Token Program, her token biriminin bireysel sahipliğini takip etmek için Token Account'lar oluşturur. Bir Token Account şu gibi verileri saklar:
- Mint: Token Account'ın birimlerini tuttuğu token
- Owner: Token Account'tan token transfer etmeye yetkili hesap
- Amount: Token Account'ın şu anda tuttuğu token sayısı
Token Account
Her Token Account'ta saklanan tam detaylar şunları içerir:
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>,}
Bir cüzdanın tutmak istediği her token (mint) için bir token hesabına ihtiyacı vardır ve cüzdan adresi token hesabının sahibi olarak ayarlanır. Her cüzdan aynı token (mint) için birden fazla token hesabına sahip olabilir, ancak bir token hesabının yalnızca bir sahibi olabilir ve bir token'ın (mint) birimlerini tutabilir.
Hesap İlişkisi
Her Token Account'ın verilerinin, Token Account üzerinde kimin yetkiye sahip olduğunu tanımlayan bir owner alanı içerdiğine dikkat edin. Bu durum, temel Account türünde belirtilen ve tüm Token Account'lar için Token Program olan program sahibinden farklıdır.
Associated Token Account
Associated Token Account'lar, belirli bir mint ve sahip için bir token account adresini bulma sürecini basitleştirir. Associated Token Account'u, belirli bir mint ve sahip için "varsayılan" token account olarak düşünün.
Bir Associated Token Account, sahibin adresinden ve mint account'un adresinden türetilen bir adresle oluşturulur. Bir Associated Token Account'un, belirli bir adrese sahip sadece bir token account olduğunu anlamak önemlidir.
Bu, Solana geliştirmede önemli bir kavramı ortaya koyar: Program Derived Address (PDA). Bir PDA, önceden tanımlanmış girdileri kullanarak deterministik olarak bir adres türetir ve bu da bir hesabın adresini bulmayı kolaylaştırır.
Associated Token Account
Her cüzdanın aynı mint'ten token tutmak için kendi token account'una ihtiyacı olduğunu unutmayın.
Genişletilmiş Hesap İlişkileri
Is this page helpful?