Token adalah aset digital yang mewakili kepemilikan atas berbagai kategori aset. Tokenisasi memungkinkan digitalisasi hak properti. Token di Solana disebut sebagai SPL (Solana Program Library) Token.
Bagian ini mencakup konsep dasar tentang bagaimana token direpresentasikan di Solana. Lihat bagian SPL Token Basics untuk contoh kode.
Poin-poin kunci
-
Token Programs berisi semua logika instruksi untuk berinteraksi dengan token di jaringan (baik fungible maupun non-fungible).
-
Mint Account mewakili token tertentu dan menyimpan metadata global tentang token seperti total pasokan dan mint authority (alamat yang berwenang membuat unit baru dari sebuah token).
-
Token Account melacak kepemilikan individu token untuk mint account tertentu untuk pemilik tertentu.
-
Associated Token Account adalah token account yang dibuat dengan alamat yang diturunkan dari alamat pemilik dan alamat mint account.
Token Programs
Ekosistem Solana memiliki dua Token Programs utama. Kode sumber untuk kedua program di bawah ini.
Token Program (Original)
- Kemampuan token dasar (mint, transfer, dll.)
- Immutable dan banyak digunakan
Token Extension Program (Token 2022)
- Mencakup semua fitur Token Program original
- Menambahkan fitur melalui "extensions"
Token Programs berisi semua logika instruksi untuk berinteraksi dengan token di jaringan (baik fungible maupun non-fungible). Semua token di Solana secara efektif merupakan akun data yang dimiliki oleh Token Program.
Token Program
Mint Account
Token di Solana diidentifikasi secara unik oleh alamat Mint Account yang dimiliki oleh Token Program. Account ini bertindak sebagai penghitung global untuk token tertentu dan menyimpan data seperti:
- Supply: Total supply token
- Decimals: Presisi desimal token
- Mint authority: Akun yang berwenang membuat unit baru dari token, meningkatkan supply
- Freeze authority: Akun yang berwenang membekukan token dalam token account, mencegahnya untuk ditransfer atau dibakar
Otoritas mint dikonfigurasi saat mint diinisialisasi. Otoritas ini mengizinkan pembuatan mint di masa mendatang, namun tidak harus berupa akun yang membuat atau membayar mint account.
Mint Account
Detail lengkap yang disimpan pada setiap mint account mencakup hal-hal berikut:
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>,}
Sebagai referensi, berikut adalah link Solana Explorer ke USDC Mint Account.
Token Account
Token Program membuat token account untuk melacak kepemilikan individual dari setiap unit token. Token account menyimpan data seperti:
- Mint: Token yang dipegang oleh token account dalam bentuk unit
- Owner: Akun yang berwenang mentransfer token dari token account
- Amount: Jumlah token yang saat ini dipegang oleh token account
Token Account
Detail lengkap yang disimpan pada setiap token account mencakup hal-hal berikut:
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>,}
Sebuah dompet memerlukan token account untuk setiap token (mint) yang ingin dipegangnya, dengan alamat dompet ditetapkan sebagai pemilik token account. Setiap dompet dapat memiliki beberapa token account untuk token (mint) yang sama, tetapi token account hanya dapat memiliki satu pemilik dan menyimpan unit dari satu token (mint).
Account Relationship
Perlu diperhatikan bahwa data setiap Token Account menyertakan field owner yang mengidentifikasi siapa
yang memiliki otoritas atas Token Account tersebut. Hal ini berbeda dari pemilik program
yang ditentukan dalam tipe
Account dasar, yang
merupakan Token Program untuk semua Token Account.
Associated Token Account
Associated Token Account menyederhanakan proses pencarian alamat token account untuk mint dan pemilik tertentu. Anggap Associated Token Account sebagai token account "default" untuk mint dan pemilik tertentu.
Associated Token Account dibuat dengan alamat yang diturunkan dari alamat pemilik dan alamat mint account. Penting untuk memahami bahwa Associated Token Account hanyalah token account dengan alamat tertentu.
Ini memperkenalkan konsep kunci dalam pengembangan Solana: Program Derived Address (PDA). PDA menurunkan alamat secara deterministik menggunakan input yang telah ditentukan, sehingga memudahkan pencarian alamat akun.
Associated Token Account
Perhatikan bahwa setiap dompet memerlukan token account sendiri untuk menyimpan token dari mint yang sama.
Hubungan Akun Diperluas
Is this page helpful?