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ä.
Tilit
Solana-tilit voivat tallentaa "tilaa" tai "suoritettavia" ohjelmia. Jokaisella tilillä on "osoite" (julkinen avain), joka toimii sen yksilöllisenä tunnuksena, jota käytetään sen vastaavan lohkoketjudatan 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:
- Luodaan uusi keypair (julkinen/yksityinen avainpari).
- Pyydetään SOL-airdrop uuden osoitteen rahoittamiseksi.
- Haetaan tilitiedot rahoitetusta osoitteesta.
Solanassa uuden osoitteen rahoittaminen SOL:lla luo automaattisesti System Program -ohjelman omistaman tilin. Kaikki "lompakko"-tilit ovat yksinkertaisesti System Program -ohjelman omistamia tilejä, jotka sisältävät SOL:ia ja voivat allekirjoittaa transaktioita.
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 accountconst 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));
Hae Token Program
Tämä esimerkki hakee Token Programin osoittaakseen eron lompakko- ja ohjelmatilien välillä.
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);
Hae mint account
Tämä esimerkki hakee USD Coin (USDC) mint accountin näyttääkseen, miten ohjelmat Solanassa tallentavat tilan erillisiin tileihin.
Mint account on Token Program -ohjelman omistama tili. Se tallentaa globaalin metadatan tietylle tokenille, mukaan lukien kokonaistarjonnan, desimaalien määrän ja tilit, joilla on valtuudet luoda tai jäädyttää tokeneita. Mint accountin osoite yksilöi tokenin Solana-verkossa.
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);
Deserialisoi mint account
Solana-tilin data
-kenttä sisältää raakadataa tavuina. Jotta tätä dataa voidaan
tulkita merkityksellisesti, se täytyy deserialisoida tilin omistavan ohjelman
määrittelemään asianmukaiseen datatyyppiin.
Useimmat Solana-ohjelmat tarjoavat asiakaskirjastoja, joissa on apufunktioita, jotka abstrahoivat deserialisointiprosessin. Nämä funktiot muuntavat tilin raakatavut jäsennellyiksi datatyypeiksi, mikä helpottaa tilidatan käsittelyä.
Esimerkiksi @solana/spl-token
sisältää getMint()
-funktion, joka auttaa deserialisoimaan mint account -tilin data
-kentän
Mint
-datatyyppiin.
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");
Is this page helpful?