Lukeminen verkosta

Lue dataa Solana-verkosta hakemalla erilaisia tilejä. Tämä osio auttaa sinua ymmärtämään Solanan tilien rakennetta. Jokaisella Solana-tilillä on yksilöllinen osoite, jota käytetään sen vastaavan lohkoketjudatan paikantamiseen. Tilit sisältävät joko tiladataa tai suoritettavan ohjelman.

Hae lompakkotili

Lompakko on tili, jonka omistaa System Program. Lompakoita käytetään pääasiassa SOL-tokenien säilyttämiseen ja transaktioiden allekirjoittamiseen. Kun SOL-tokeneita lähetetään uuteen osoitteeseen ensimmäistä kertaa, järjestelmätili luodaan automaattisesti.

Alla oleva esimerkki luo uuden avainparin, pyytää SOL-tokeneita rahoittaakseen uuden julkisen avaimen osoitteen ja hakee tilidatan juuri rahoitetulle lompakolle.

Fetch account
import { Keypair, Connection, LAMPORTS_PER_SOL } from "@solana/web3.js";
const keypair = Keypair.generate();
console.log(`Public Key: ${keypair.publicKey}`);
const connection = new Connection("http://localhost:8899", "confirmed");
// Funding an address with SOL automatically creates an account
const signature = await connection.requestAirdrop(
keypair.publicKey,
LAMPORTS_PER_SOL
);
await connection.confirmTransaction(signature, "confirmed");
const accountInfo = await connection.getAccountInfo(keypair.publicKey);
console.log(JSON.stringify(accountInfo, null, 2));
Console
Click to execute the code.

Kun haet lompakkotilin, vastaus sisältää oikealla näkyvässä esimerkkitulostuksessa esitetyt kentät.

Example output
{
"data": {
"type": "Buffer",
"data": []
},
"executable": false,
"lamports": 1000000000,
"owner": "11111111111111111111111111111111",
"rentEpoch": 0,
"space": 0
}

data -kenttä sisältää tilin datan tallennettuna tavuina. Lompakkotileillä tämä kenttä on tyhjä (0 tavua).

Example output
{
"data": {
"type": "Buffer",
"data": []
},
"executable": false,
"lamports": 1000000000,
"owner": "11111111111111111111111111111111",
"rentEpoch": 0,
"space": 0
}

executable -kenttä osoittaa, sisältääkö tilin data -kenttä suoritettavaa ohjelmakoodia. Lompakkotileillä tämän kentän arvo on false.

Example output
{
"data": {
"type": "Buffer",
"data": []
},
"executable": false,
"lamports": 1000000000,
"owner": "11111111111111111111111111111111",
"rentEpoch": 0,
"space": 0
}

lamports -kenttä sisältää tilin SOL-saldon lamporteina.

Example output
{
"data": {
"type": "Buffer",
"data": []
},
"executable": false,
"lamports": 1000000000,
"owner": "11111111111111111111111111111111",
"rentEpoch": 0,
"space": 0
}

owner -kenttä näyttää ohjelman, joka omistaa tilin. Lompakkojen kohdalla omistaja on aina System Program, jonka osoite on 11111111111111111111111111111111.

Example output
{
"data": {
"type": "Buffer",
"data": []
},
"executable": false,
"lamports": 1000000000,
"owner": "11111111111111111111111111111111",
"rentEpoch": 0,
"space": 0
}

rentEpoch -kenttä on jäänne vanhentuneesta rent-mekanismista. (Tämä kenttä on sisällytetty taaksepäin yhteensopivuuden vuoksi.)

Example output
{
"data": {
"type": "Buffer",
"data": []
},
"executable": false,
"lamports": 1000000000,
"owner": "11111111111111111111111111111111",
"rentEpoch": 0,
"space": 0
}

space -kenttä näyttää data -kentän sisältämien tavujen määrän. Tämä ei ole kenttä itse Account-tyypissä, vaan se on sisällytetty vastaukseen.

Tässä esimerkissä space -kenttä on 0, koska data -kenttä sisältää 0 tavua dataa.

Example output
{
"data": {
"type": "Buffer",
"data": []
},
"executable": false,
"lamports": 1000000000,
"owner": "11111111111111111111111111111111",
"rentEpoch": 0,
"space": 0
}

Kun haet lompakkotilin, vastaus sisältää oikealla näkyvässä esimerkkitulostuksessa esitetyt kentät.

data -kenttä sisältää tilin datan tallennettuna tavuina. Lompakkotileillä tämä kenttä on tyhjä (0 tavua).

executable -kenttä osoittaa, sisältääkö tilin data -kenttä suoritettavaa ohjelmakoodia. Lompakkotileillä tämän kentän arvo on false.

lamports -kenttä sisältää tilin SOL-saldon lamporteina.

owner -kenttä näyttää ohjelman, joka omistaa tilin. Lompakkojen kohdalla omistaja on aina System Program, jonka osoite on 11111111111111111111111111111111.

rentEpoch -kenttä on jäänne vanhentuneesta rent-mekanismista. (Tämä kenttä on sisällytetty taaksepäin yhteensopivuuden vuoksi.)

space -kenttä näyttää data -kentän sisältämien tavujen määrän. Tämä ei ole kenttä itse Account-tyypissä, vaan se on sisällytetty vastaukseen.

Tässä esimerkissä space -kenttä on 0, koska data -kenttä sisältää 0 tavua dataa.

Example output
{
"data": {
"type": "Buffer",
"data": []
},
"executable": false,
"lamports": 1000000000,
"owner": "11111111111111111111111111111111",
"rentEpoch": 0,
"space": 0
}

Hae Token Program

Alla oleva esimerkki hakee Token Programin osoittaakseen eron lompakko- ja program account -tilien välillä. Program account tallentaa käännetyn tavukoodin Token Programin lähdekoodista. Voit tarkastella tätä program accountia Solana Explorerissa.

Fetch program account
import { Connection, PublicKey } from "@solana/web3.js";
const connection = new Connection(
"https://api.mainnet-beta.solana.com",
"confirmed"
);
const address = new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");
const accountInfo = await connection.getAccountInfo(address);
Console
Click to execute the code.

Token Program on suoritettava program account. Ohjelmilla on samat peruskentät kuin kaikilla tileillä, mutta merkittävin eroin.

Token program account
{
"data": {
"type": "Buffer",
"data": [127, "...truncated, total bytes: 134080...", 0]
},
"executable": true,
"lamports": 4522329612,
"owner": "BPFLoader2111111111111111111111111111111111",
"rentEpoch": 18446744073709552000,
"space": 134080
}

executable -kenttä on asetettu arvoon true, mikä osoittaa, että tilin data -kenttä sisältää suoritettavaa koodia.

Token program account
{
"data": {
"type": "Buffer",
"data": [127, "...truncated, total bytes: 134080...", 0]
},
"executable": true,
"lamports": 4522329612,
"owner": "BPFLoader2111111111111111111111111111111111",
"rentEpoch": 18446744073709552000,
"space": 134080
}

data -kenttä tallentaa ohjelman suoritettavan koodin.

Token program account
{
"data": {
"type": "Buffer",
"data": [127, "...truncated, total bytes: 134080...", 0]
},
"executable": true,
"lamports": 4522329612,
"owner": "BPFLoader2111111111111111111111111111111111",
"rentEpoch": 18446744073709552000,
"space": 134080
}

Jokaisen program account -tilin omistaa sen lataaja-ohjelma. Tässä esimerkissä owner on BPFLoader2-ohjelma.

Token program account
{
"data": {
"type": "Buffer",
"data": [127, "...truncated, total bytes: 134080...", 0]
},
"executable": true,
"lamports": 4522329612,
"owner": "BPFLoader2111111111111111111111111111111111",
"rentEpoch": 18446744073709552000,
"space": 134080
}

Token Program on suoritettava program account. Ohjelmilla on samat peruskentät kuin kaikilla tileillä, mutta merkittävin eroin.

executable -kenttä on asetettu arvoon true, mikä osoittaa, että tilin data -kenttä sisältää suoritettavaa koodia.

data -kenttä tallentaa ohjelman suoritettavan koodin.

Jokaisen program account -tilin omistaa sen lataaja-ohjelma. Tässä esimerkissä owner on BPFLoader2-ohjelma.

Token program account
{
"data": {
"type": "Buffer",
"data": [127, "...truncated, total bytes: 134080...", 0]
},
"executable": true,
"lamports": 4522329612,
"owner": "BPFLoader2111111111111111111111111111111111",
"rentEpoch": 18446744073709552000,
"space": 134080
}

Hae mint account

Mint account on Token Program -ohjelman omistama tili, joka tallentaa tietyn tokenin globaalit metatiedot. Näihin kuuluvat kokonaistarjonta, desimaalien määrä ja tilit, joilla on valtuudet luoda tai jäädyttää tokeneita. Mint account -tilin osoite yksilöi tokenin Solana-verkossa.

Alla oleva esimerkki hakee USD Coin Mint -tilin havainnollistaakseen, miten ohjelman tila tallennetaan erilliseen tiliin.

Fetch program account
import { Connection, PublicKey } from "@solana/web3.js";
const connection = new Connection(
"https://api.mainnet-beta.solana.com",
"confirmed"
);
const address = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
const accountInfo = await connection.getAccountInfo(address);
Console
Click to execute the code.

Mint account -tilit tallentavat tilaa, eivät suoritettavaa koodia. Niiden omistaja on Token Program, joka sisältää ohjeet siitä, miten mint account -tilejä luodaan ja päivitetään.

Mint account
{
"data": {
"type": "Buffer",
"data": [1, "...truncated, total bytes: 82...", 103]
},
"executable": false,
"lamports": 407438077149,
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"rentEpoch": 18446744073709552000,
"space": 82
}

Mint account -tilin data -kenttä tallentaa tilaa, ei suoritettavaa koodia, joten executable -kenttä on false.

Token Program määrittelee Mint -datatyypin, joka tallennetaan data -kenttään.

Mint account
{
"data": {
"type": "Buffer",
"data": [1, "...truncated, total bytes: 82...", 103]
},
"executable": false,
"lamports": 407438077149,
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"rentEpoch": 18446744073709552000,
"space": 82
}

data -kenttä sisältää serialisoidun Mint -tilatiedon, kuten mint authorityn, kokonaistarjonnan ja desimaalien määrän.

Lukeaksesi Mint account -tiliä, sinun täytyy deserialisoida data -kenttä Mint -datatyypiksi, mikä näytetään seuraavassa esimerkissä.

Mint account
{
"data": {
"type": "Buffer",
"data": [1, "...truncated, total bytes: 82...", 103]
},
"executable": false,
"lamports": 407438077149,
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"rentEpoch": 18446744073709552000,
"space": 82
}

Mint account -tilin omistaa Token Program. Tämä tarkoittaa, että sen data -kenttää voi muokata vain Token Program -ohjelman ohjeilla.

Mint Account
{
"data": {
"type": "Buffer",
"data": [1, "...truncated, total bytes: 82...", 103]
},
"executable": false,
"lamports": 407438077149,
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"rentEpoch": 18446744073709552000,
"space": 82
}

Mint account -tilit tallentavat tilaa, eivät suoritettavaa koodia. Niiden omistaja on Token Program, joka sisältää ohjeet siitä, miten mint account -tilejä luodaan ja päivitetään.

Mint account -tilin data -kenttä tallentaa tilaa, ei suoritettavaa koodia, joten executable -kenttä on false.

Token Program määrittelee Mint -datatyypin, joka tallennetaan data -kenttään.

data -kenttä sisältää serialisoidun Mint -tilatiedon, kuten mint authorityn, kokonaistarjonnan ja desimaalien määrän.

Lukeaksesi Mint account -tiliä, sinun täytyy deserialisoida data -kenttä Mint -datatyypiksi, mikä näytetään seuraavassa esimerkissä.

Mint account -tilin omistaa Token Program. Tämä tarkoittaa, että sen data -kenttää voi muokata vain Token Program -ohjelman ohjeilla.

Mint account
{
"data": {
"type": "Buffer",
"data": [1, "...truncated, total bytes: 82...", 103]
},
"executable": false,
"lamports": 407438077149,
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"rentEpoch": 18446744073709552000,
"space": 82
}

Mint account -tilin deserialisointi

Ennen kuin tilin data -kentän raakadataa voidaan tulkita mielekkäästi, se täytyy deserialisoida. Asianmukaisen datatyypin määrittelee ohjelma, joka omistaa tilin. Useimmat Solana-ohjelmat tarjoavat asiakaskirjastoja apufunktioilla, jotka abstrahoivat deserialisointiprosessin. Nämä funktiot muuntavat tilin raakatavut jäsennellyiksi datatyypeiksi, mikä helpottaa tilidatan käsittelyä.

Esimerkiksi @solana/spl-token -kirjasto sisältää getMint() -funktion, joka auttaa deserialisoimaan mint account -tilin data -kentän Mint -datatyypiksi, jonka Token Program on määritellyt.

Deserialize mint account data
import { PublicKey, Connection } from "@solana/web3.js";
import { getMint } from "@solana/spl-token";
const connection = new Connection(
"https://api.mainnet-beta.solana.com",
"confirmed"
);
const address = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
const mintData = await getMint(connection, address, "confirmed");
Console
Click to execute the code.
Mint account type
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>,
}

getMint() -funktio purkaa mint account -tilin data -kentän Mint account -tyypiksi.

Mint account
{
"data": {
"type": "Buffer",
"data": [1, "...truncated, total bytes: 82...", 103]
},
"executable": false,
"lamports": 407438077149,
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"rentEpoch": 18446744073709552000,
"space": 82
}

Voit tarkastella täysin purettua mint account -dataa Solana Explorerissa.

address -kenttä sisältää mint account -tilin osoitteen.

mintAuthority -kenttä näyttää ainoan tilin, joka voi luoda uusia tokenin yksiköitä.

supply -kenttä näyttää luotujen tokenien kokonaismäärän. Tämä arvo mitataan tokenin pienimmässä yksikössä. Saadaksesi kokonaistarjonnan standardiyksiköissä, mukauta supply -kentän arvoa decimals -arvon mukaan.

decimals -kenttä näyttää tokenin desimaalipaikkojen määrän.

isInitialized -kenttä ilmaisee, onko mint account -tili alustettu. Tätä kenttää käytetään turvallisuustarkistuksena Token Program -ohjelmassa.

freezeAuthority -kenttä näyttää tilin, jolla on valtuudet jäädyttää token account -tilejä. Jäädytetty token account ei voi siirtää tai polttaa sisältämäänsä tokenia.

tlvData -kenttä sisältää lisätietoja Token Extensions -ominaisuuksille ja vaatii lisäpurkamista. Tämä kenttä on merkityksellinen vain tileille, jotka on luotu Token Extension Program -ohjelmalla (Token2022).

getMint() -funktio purkaa mint account -tilin data -kentän Mint account -tyypiksi.

Mint account
{
"data": {
"type": "Buffer",
"data": [1, "...truncated, total bytes: 82...", 103]
},
"executable": false,
"lamports": 407438077149,
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"rentEpoch": 18446744073709552000,
"space": 82
}

Voit tarkastella täysin purettua mint account -dataa Solana Explorerissa.

address -kenttä sisältää mint account -tilin osoitteen.

mintAuthority -kenttä näyttää ainoan tilin, joka voi luoda uusia tokenin yksiköitä.

supply -kenttä näyttää luotujen tokenien kokonaismäärän. Tämä arvo mitataan tokenin pienimmässä yksikössä. Saadaksesi kokonaistarjonnan standardiyksiköissä, mukauta supply -kentän arvoa decimals -arvon mukaan.

decimals -kenttä näyttää tokenin desimaalipaikkojen määrän.

isInitialized -kenttä ilmaisee, onko mint account -tili alustettu. Tätä kenttää käytetään turvallisuustarkistuksena Token Program -ohjelmassa.

freezeAuthority -kenttä näyttää tilin, jolla on valtuudet jäädyttää token account -tilejä. Jäädytetty token account ei voi siirtää tai polttaa sisältämäänsä tokenia.

tlvData -kenttä sisältää lisätietoja Token Extensions -ominaisuuksille ja vaatii lisäpurkamista. Tämä kenttä on merkityksellinen vain tileille, jotka on luotu Token Extension Program -ohjelmalla (Token2022).

Deserialized mint data
{
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mintAuthority": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG",
"supply": "8985397351591790",
"decimals": 6,
"isInitialized": true,
"freezeAuthority": "7dGbd2QZcCKcTndnHcTL8q7SMVXAkp688NTQYwrRCrar",
"tlvData": {
"type": "Buffer",
"data": []
}
}

Is this page helpful?

Sisällysluettelo

Muokkaa sivua

Hallinnoi

© 2025 Solana Foundation.
Kaikki oikeudet pidätetään.