Tokenit Solanassa
Tokenit ovat digitaalisia omaisuuseriä, jotka edustavat omistajuutta erilaisissa omaisuusluokissa. Tokenisaatio mahdollistaa omistusoikeuksien digitalisoinnin. Solanassa tokeneita kutsutaan SPL (Solana Program Library) -tokeneiksi.
Tämä osio kattaa peruskäsitteet siitä, miten tokenit esitetään Solanassa. Katso SPL Token -perusteet -osiosta koodiesimerkkejä.
Avainasiat
-
Token Program sisältää kaikki ohjekäskyt tokenien käyttämiseen verkossa (sekä vaihdettavat että ei-vaihdettavat tokenit).
-
Mint account edustaa tiettyä tokenia ja tallentaa globaalia metatietoa tokenista, kuten kokonaistarjontaa ja mint-oikeuden haltijaa (osoite, jolla on valtuudet luoda uusia tokenin yksiköitä).
-
Token account seuraa yksittäisen henkilön tokenien omistusta tietylle mint account -tilille tietyn omistajan osalta.
-
Associated token account on token account, joka on luotu osoitteella, joka on johdettu omistajan ja mint account -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äyttämiseen verkossa (sekä vaihdettavat että ei-vaihdettavat). Kaikki tokenit Solanassa 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:
- Tarjonta: Token-rahan kokonaistarjonta
- Desimaalit: Token-rahan desimaalitarkkuus
- Mint-valtuus: Tili, jolla on valtuudet luoda uusia token-yksiköitä, kasvattaen tarjontaa
- Jäädytysvaltuus: Tili, jolla on valtuudet jäädyttää token-rahoja token accountissa, estäen niiden siirtämisen tai polttamisen
Mint Account
Jokaiseen mint accountiin 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 accountiin.
Token account
Token Program luo token accounteja seuratakseen yksittäisten token-yksiköiden omistusta. Token account tallentaa tietoja kuten:
- Mint: Token, jonka yksiköitä token account sisältää
- Omistaja: Tili, jolla on valtuudet siirtää tokeneita token accountista
- Määrä: Token-yksiköiden määrä, jonka token account tällä hetkellä sisältää
Token Account
Jokaiseen token accountiin 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 accountin jokaiselle tokenille (mintille), jota se haluaa säilyttää, ja lompakon osoite asetetaan token accountin omistajaksi. Jokainen lompakko voi omistaa useita token accounteja samalle tokenille (mintille), mutta token accountilla voi olla vain yksi omistaja ja se voi sisältää vain yhden tokenin (mintin) yksiköitä.
Account Relationship
Huomaa, että jokaisen token accountin tiedot sisältävät owner
-kentän, joka
määrittää, kenellä on valtuudet token accountiin. Tämä eroaa perus
Account -tyypin määrittämästä ohjelman
omistajasta, joka on Token Program kaikille token accounteille.
Associated token account
Associated token accountit yksinkertaistavat token accountin osoitteen löytämisprosessia tietylle mintille ja omistajalle. Ajattele associated token accountia "oletusarvoisena" token accountina 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 -esimerkkejä
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 rent-talletuksiin 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 käytettävissä 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 saamiasi osoitteita, kun seuraat ohjeita. Esimerkiksi
create-token
-komento tuottaa 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 accountin 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 omistajalle:
$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 accountin 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 accountin tiedoille ja siirtää omistajuuden Token Programille.
-
Token Program alustaa tiedot token accountiksi
Tokenejen luominen (Mint)
Luodaksesi uusia tokeneita, 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
Tokenejen mintaamiseksi toiseen token accountiin:
spl-token mint 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTg 100 -- Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmt
Tuloste:
Minting 100 tokensToken: 99zqUzQGohamfYxyo8ykTEbi91iom3CLmwCA75FK5zTgRecipient: Hmyk3FSw4cfsuAes7sanp2oxSkE9ivaH6pMzDzbacqmtSignature: 3SQvNM3o9DsTiLwcEkSPT1Edr14RgE2wC54TEjonEP2swyVCp2jPWYWdD6RwXUGpvDNUkKWzVBZVFShn5yntxVd7
MintTo
-ohje Token Programissa luo uusia tokeneita. Mint-auktoriteetin on
allekirjoitettava transaktio. Ohje mintaa tokeneita token accountiin ja
kasvattaa kokonaistarjontaa mint accountissa. Tässä on Javascript-esimerkki
Solana Playgroundissa.
Tokenejen siirtäminen
Tokenejen siirtämiseksi 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
Transfer
-ohje Token Programissa käsittelee tokenejen 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 samassa transaktiossa.
Token-metadatan luominen
Token Extensions -ohjelma mahdollistaa metadatan (nimi, symboli, kuvalinkki) tallentamisen suoraan mint accountiin.
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 Token Extensions Aloitusoppaasta ja SPL-dokumentaatiosta.
Is this page helpful?