Tokenit Solanassa
Tokenit ovat digitaalisia omaisuuseriä, jotka edustavat omistajuutta erilaisissa omaisuusluokissa. Tokenisaatio mahdollistaa omistusoikeuksien digitalisoinnin. Solanan tokeneita kutsutaan SPL (Solana Program Library) -tokeneiksi.
Tämä osio kattaa peruskäsitteet siitä, miten tokenit esitetään Solanassa. Katso koodiesimerkkejä SPL Token -perusteet -osiosta.
Avainasiat
-
Token Program sisältää kaikki ohjekäskyt tokenien käsittelyyn verkossa (sekä vaihdettavat että ei-vaihdettavat).
-
Mint Account edustaa tiettyä tokenia ja tallentaa globaalia metatietoa tokenista, kuten kokonaistarjontaa ja mint-auktoriteettia (osoite, jolla on valtuudet luoda uusia tokenin yksiköitä).
-
Token Account seuraa yksittäistä tokenien omistusta tietylle mint-tilille tietyn omistajan osalta.
-
Associated Token Account on Token Account, joka on luotu osoitteella, joka on johdettu omistajan ja mint-tilin osoitteista.
Token Programs
Solana-ekosysteemissä on kaksi pääasiallista Token Program -ohjelmaa. Molempien ohjelmien lähdekoodi alla.
Token Program (Alkuperäinen)
- Perustoiminnallisuudet tokeneille (mint, siirto, jne.)
- Muuttumaton ja laajasti käytetty
Token Extension Program (Token 2022)
- Sisältää kaikki alkuperäisen Token Program -ohjelman ominaisuudet
- Lisää ominaisuuksia "laajennusten" kautta
Token Program sisältää kaikki ohjekäskyt tokenien käsittelyyn verkossa (sekä vaihdettavat että ei-vaihdettavat). Kaikki Solanan tokenit ovat käytännössä data-tilejä, jotka omistaa Token Program.
Token Program
Mint Account
Tokenit Solanassa tunnistetaan yksilöllisesti Token Program -ohjelman omistaman Mint Account -tilin osoitteella. Tämä tili toimii globaalina laskurina tietylle tokenille ja tallentaa tietoja kuten:
- Supply: Token-rahan kokonaismäärä
- Decimals: Token-rahan desimaalitarkkuus
- Mint authority: Tili, jolla on valtuudet luoda uusia token-yksiköitä, kasvattaen kokonaismäärää
- Freeze authority: Tili, jolla on valtuudet jäädyttää token-rahoja Token Account -tilillä, estäen niiden siirtämisen tai polttamisen
Mint Account
Mint Account -tilille tallennetut täydelliset tiedot sisältävät seuraavat:
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>,}
Viitteeksi, tässä on Solana Explorer -linkki USDC Mint Account -tiliin.
Token Account
Token Program luo Token Accounts -tilejä seuratakseen yksittäisten token-yksiköiden omistusta. Token Account tallentaa tietoja kuten:
- Mint: Token, jonka yksiköitä Token Account sisältää
- Owner: Tili, jolla on valtuudet siirtää token-rahoja Token Account -tililtä
- Amount: Token-rahojen määrä, jonka Token Account tällä hetkellä sisältää
Token Account
Jokaiseen Token Account -tiliin tallennetut täydelliset tiedot sisältävät seuraavat:
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>,}
Lompakko tarvitsee token account -tilin jokaiselle tokenille (mint), jota se haluaa säilyttää, ja lompakon osoite asetetaan token account -tilin omistajaksi. Jokainen lompakko voi omistaa useita token account -tilejä samalle tokenille (mint), mutta token account -tilillä voi olla vain yksi omistaja ja se voi sisältää vain yhden tokenin (mint) yksiköitä.
Account Relationship
Huomaa, että jokaisen Token Account -tilin tiedot sisältävät owner
-kentän,
joka määrittää, kenellä on valtuudet Token Account -tiliin. Tämä eroaa perus
Account -tyypin määrittämästä ohjelman
omistajasta, joka on Token Program kaikille Token Account -tileille.
Associated Token Account
Associated Token Account -tilit yksinkertaistavat token account -tilin osoitteen löytämisprosessia tietylle mintille ja omistajalle. Ajattele Associated Token Account -tiliä "oletusarvoisena" token account -tilinä tietylle mintille ja omistajalle.
Associated Token Account luodaan osoitteella, joka johdetaan omistajan osoitteesta ja mint-tilin osoitteesta. On tärkeää ymmärtää, että Associated Token Account on vain token account, jolla on tietty osoite.
Tämä esittelee keskeisen käsitteen Solana-kehityksessä: Program Derived Address (PDA). PDA johtaa osoitteen deterministisesti käyttäen ennalta määritettyjä syötteitä, mikä helpottaa tilin osoitteen löytämistä.
Associated Token Account
Huomaa, että jokainen lompakko tarvitsee oman token accountin säilyttääkseen tokeneita samasta mintistä.
Tilien suhteet laajennettuna
Token CLI -esimerkit
spl-token
CLI auttaa sinua kokeilemaan SPL-tokeneita. Alla olevat
esimerkit käyttävät Solana Playground -päätettä
suorittaakseen CLI-komentoja suoraan selaimessa ilman paikallista asennusta.
Tokenien ja tilien luominen vaatii SOLia tilien vuokratalletuksiin ja
tapahtumamaksuihin. Ensimmäistä kertaa Solana Playgroundia käyttäville, luo
Playground- lompakko ja suorita solana airdrop
-komento
Playground-päätteessä. Voit myös hankkia devnet SOLia julkisesta
web-faucetista.
$solana airdrop 2
Suorita spl-token --help
nähdäksesi kaikki saatavilla olevat komennot.
$spl-token --help
Asentaaksesi spl-token
CLI:n paikallisesti, suorita:
$cargo install spl-token-cli
Löydät lisää esimerkkejä spl-token
dokumentaatiosta.
Päätteessäsi näkyvät tiliosoitteet eroavat alla olevista esimerkeistä. Käytä
Playground-päätteestäsi saatuja osoitteita, kun seuraat ohjeita. Esimerkiksi
create-token
-komento tulostaa mint-tilin osoitteen, jossa
Playground-lompakkosi on mint-auktoriteettina.
Uuden tokenin luominen
Luodaksesi uuden tokenin (mint-tilin), suorita:
$spl-token create-token
Tuloste näyttää tältä:
Creating token 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTgAddress: 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTgDecimals: 9Signature: 44fvKfT1ezBUwdzrCys3fvCdFxbLMnNvBstds76QZyE6cXag5NupBprSXwxPTzzjrC3cA6nvUZaLFTvmcKyzxrm1
Uusi mint account alkaa nollasaldolla. Tarkista nykyinen saldo komennolla:
$spl-token supply <TOKEN_ADDRESS>
Komento supply
uudelle tokenille palauttaa 0
:
spl-token supply 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg
Uuden Mint Accountin luominen vaatii transaktion, jossa on kaksi ohjetta. Tässä on Javascript-esimerkki Solana Playgroundissa.
-
System Program luo uuden tilin, jossa on tilaa Mint Account -tiedoille ja siirtää omistajuuden Token Programille.
-
Token Program alustaa uuden tilin tiedot Mint Accountiksi
Token Accountin luominen
Luodaksesi token accountin tietyn mintin tokeneita varten:
$spl-token create-account <TOKEN_ADDRESS>
Esimerkkikomento:
spl-token create-account 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg
Tuloste:
Creating account AfB7uwBEsGtrrBqPTVqEgzWed5XdYfM1psPNLmf7EeX9Signature: 2BtrynuCLX9CNofFiaw6Yzbx6hit66pup9Sk7aFjwU2NEbFz7NCHD9w9sWhrCfEd73XveAGK1DxFpJoQZPXU9tS1
Komento create-account
luo associated token accountin, jonka omistaja on
lompakkosi osoite.
Luodaksesi token accountin eri omistajalla:
$spl-token create-account --owner <OWNER_ADDRESS> <TOKEN_ADDRESS>
Huomaa: <TOKEN_ADDRESS>
määrittää mint accountin token accountille.
Esimerkkikomento:
spl-token create-account --owner 2i3KvjDCZWxBsqcxBHpdEaZYQwQSYE6LXUMx5VjY5XrR 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg
Tuloste:
Creating account Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmtSignature: 44vqKdfzspT592REDPY4goaRJH3uJ3Ce13G4BCuUHg35dVUbHuGTHvqn4ZjYF9BGe9QrjMfe9GmuLkQhSZCBQuEt
Associated Token Accountin luominen vaatii yhden ohjeen, joka kutsuu Associated Token Programia. Tässä on Javascript-esimerkki Solana Playgroundissa.
Associated Token Program käyttää Cross Program Invocations -kutsuja:
- Kutsuu System Programia luodakseen uuden tilin käyttäen annettua PDA:ta osoitteena
- Kutsuu Token Programia alustaakseen Token Account -tiedot
Uuden Token Accountin luomiseksi uudella keypairilla Associated Token Accountin osoitteen sijaan, lähetä transaktio kahdella ohjeella. Tässä on Javascript- esimerkki Solana Playgroundissa.
-
System Program luo uuden tilin, jossa on tilaa Token Account -tiedoille ja siirtää omistajuuden Token Programille.
-
Token Program alustaa tiedot Token Accountiksi
Tokenien luominen (Mint)
Luodaksesi uusia tokenin yksiköitä, mintaa tokeneita Token Accountiin:
$spl-token mint [OPTIONS] <TOKEN_ADDRESS> <TOKEN_AMOUNT> [--] [RECIPIENT_TOKEN_ACCOUNT_ADDRESS]
Esimerkkikomento:
spl-token mint 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100
Tuloste:
Minting 100 tokensToken: 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTgRecipient: AfB7uwBEsGtrrBqPTVqEgzWed5XdYfM1psPNLmf7EeX9Signature: 2NJ1m7qCraPSBAVxbr2ssmWZmBU9Jc8pDtJAnyZsZJRcaYCYMqq1oRY1gqA4ddQno3g3xcnny5fzr1dvsnFKMEqG
Tokenien mintaaminen toiseen token accountiin:
spl-token mint 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100 -- Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt
Tuloste:
Minting 100 tokensToken: 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTgRecipient: Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmtSignature: 3SQvNM3o9DsTiLwcEkSPT1Edr14RgE2wC54TEjonEP2swyVCp2jPWYWdD6RwXUGpvDNUkKWzVBZVFShn5yntxVd7
Token Programin MintTo
-ohje luo uusia tokeneita. Mint authorityn on
allekirjoitettava transaktio. Ohje mintaa tokeneita Token Accountiin ja
kasvattaa kokonaistarjontaa Mint Accountissa. Tässä on Javascript- esimerkki
Solana Playgroundissa.
Tokenien siirtäminen
Tokenien siirtäminen token accountien välillä:
spl-token transfer [OPTIONS] <TOKEN_ADDRESS> <TOKEN_AMOUNT> <RECIPIENT_ADDRESS or RECIPIENT_TOKEN_ACCOUNT_ADDRESS>
Esimerkkikomento:
spl-token transfer 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100 Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt
Tuloste:
Transfer 100 tokensSender: AfB7uwBEsGtrrBqPTVqEgzWed5XdYfM1psPNLmf7EeX9Recipient: Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmtSignature: 5y6HVwV8V2hHGLTVmTmdySRiEUCZnWmkasAvJ7J6m7JR46obbGKCBqUFgLpZu5zQGwM4Xy6GZ4M5LKd1h6Padx3o
Token Programin Transfer
-ohje käsittelee tokenien siirtoja. Lähettäjän
Token Accountin omistajan on allekirjoitettava transaktio. Ohje siirtää
tokeneita Token Accountien välillä. Tässä on Javascript-esimerkki
Solana Playgroundissa.
Sekä lähettäjä että vastaanottaja tarvitsevat token accountit kyseiselle tokenille (mint). Lähettäjä voi sisällyttää ohjeet vastaanottajan token accountin luomiseksi samaan transaktioon.
Token-metadatan luominen
Token Extensions -ohjelma mahdollistaa metadatan (nimi, symboli, kuvalinkki) tallentamisen suoraan Mint Account -tilille.
Luodaksesi tokenin metadata-laajennuksella:
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --enable-metadata
Tuloste:
Creating token BdhzpzhTD1MFqBiwNdrRy4jFo2FHFufw3n9e8sVjJczP under program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEbTo 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: BdhzpzhTD1MFqBiwNdrRy4jFo2FHFufw3n9e8sVjJczPDecimals: 9Signature: 5iQofFeXdYhMi9uTzZghcq8stAaa6CY6saUwcdnELST13eNSifiuLbvR5DnRt311frkCTUh5oecj8YEvZSB3wfai
Metadatan alustamiseksi:
spl-token initialize-metadata <TOKEN_MINT_ADDRESS> <YOUR_TOKEN_NAME> <YOUR_TOKEN_SYMBOL> <YOUR_TOKEN_URI>
Token URI linkittää ketjun ulkopuoliseen metadataan. Katso esimerkki JSON-muodosta täältä.
Esimerkkikomento:
spl-token initialize-metadata BdhzpzhTD1MFqBiwNdrRy4jFo2FHFufw3n9e8sVjJczP "TokenName" "TokenSymbol" "https://raw.githubusercontent.com/solana-developers/opos-asset/main/assets/DeveloperPortal/metadata.json"
Tarkastele metadataa Solana Explorerissa.
Lue lisää Metadata Extension -oppaasta. Lisätietoja Token Extensions -ohjelmasta löydät Aloitusoppaasta ja SPL-dokumentaatiosta.
Is this page helpful?