Lukeminen verkosta

Tässä osiossa tutkitaan, miten Solana-verkosta luetaan dataa hakemalla erilaisia tilejä Solana-tilin rakenteen ymmärtämiseksi.

Solanassa kaikki data on olemassa "tileissä". Voit ajatella Solanan dataa julkisena tietokantana, jossa on yksi "Tilit"-taulu, jossa jokainen merkintä on tili samalla perus Tili-tyypillä.

TilitTilit

Solana-tilit voivat tallentaa "tilaa" tai "suoritettavia" ohjelmia. Jokaisella tilillä on "osoite" (julkinen avain), joka toimii sen yksilöllisenä tunnuksena lohkoketjussa olevan datan paikantamiseen.

Solana-tilit sisältävät joko:

  • Tila: Dataa, jota on tarkoitus lukea ja säilyttää. Esimerkiksi tietoa tokeneista, käyttäjädataa tai muuta ohjelmassa määriteltyä dataa.
  • Suoritettavat ohjelmat: Tilejä, jotka sisältävät Solana-ohjelmien varsinaisen koodin. Nämä tilit tallentavat ohjeita, joita käyttäjät voivat kutsua.

Tämä ohjelmakoodin ja ohjelman tilan erottaminen on keskeinen ominaisuus Solanan Tilimallissa. Lisätietoja löydät Solana-tilimalli -sivulta.

Hae lompakkotili

Tämä esimerkki näyttää, miten:

  1. Luodaan uusi keypair (julkisen ja yksityisen avaimen pari).
  2. Pyydetään SOL-airdrop uuden osoitteen rahoittamiseksi.
  3. Haetaan tilitiedot rahoitetusta osoitteesta.

Solanassa uuden osoitteen rahoittaminen SOL:lla luo automaattisesti tilin, jonka omistaa System Program. Kaikki "lompakko"-tilit ovat yksinkertaisesti System Programin omistamia tilejä, jotka sisältävät SOL:ia ja voivat allekirjoittaa transaktioita.

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));
Click to execute the code.

Token Program -ohjelman hakeminen

Tämä esimerkki hakee Token Program -ohjelman havainnollistaakseen eroa lompakko- ja ohjelmatilien välillä.

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);
Click to execute the code.

Hae Mint-tili

Tämä esimerkki hakee USD Coin (USDC) Mint-tilin osoittaakseen, miten ohjelmat Solanassa tallentavat tilan erillisiin tileihin.

Mint-tili on Token Program -ohjelman omistama tili. Se tallentaa globaalit metatiedot tietylle tokenille, mukaan lukien kokonaistarjonnan, desimaalien määrän ja tilit, joilla on valtuudet luoda tai jäädyttää tokeneita. Mint-tilin osoite yksilöi tokenin Solana-verkossa.

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);
Click to execute the code.

Pura Mint-tilin sarjallistus

Solana-tilin data-kenttä sisältää raakoja tavuja. Jotta tätä dataa voidaan tulkita merkityksellisesti, se täytyy purkaa sarjallistuksesta tilin omistavan ohjelman määrittelemään asianmukaiseen tietotyyppiin.

Useimmat Solana-ohjelmat tarjoavat asiakaskirjastoja, joissa on apufunktioita, jotka abstrahoivat sarjallistuksen purkuprosessin. Nämä funktiot muuntavat tilin raakatavut jäsennellyiksi tietotyypeiksi, mikä helpottaa tilin tietojen käsittelyä.

Esimerkiksi @solana/spl-token sisältää getMint() -funktion, joka auttaa purkamaan Mint-tilin data -kentän Mint -datatyyppiin.

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");
Click to execute the code.

Is this page helpful?

Sisällysluettelo

Muokkaa sivua