Membaca dari Jaringan

Bagian ini membahas cara membaca data dari jaringan Solana dengan mengambil berbagai akun untuk memahami struktur akun Solana.

Di Solana, semua data ada dalam "accounts". Anda dapat menganggap data di Solana sebagai database publik dengan satu tabel "Accounts", di mana setiap entri adalah akun dengan tipe dasar Account type yang sama.

AccountsAccounts

Akun di Solana dapat menyimpan "state" atau program "executable". Setiap akun memiliki "address" (kunci publik) yang berfungsi sebagai ID uniknya yang digunakan untuk menemukan data on-chain yang sesuai.

Akun Solana berisi salah satu dari:

  • State: Data yang dimaksudkan untuk dibaca dan disimpan. Misalnya, informasi tentang token, data pengguna, atau data lain yang didefinisikan dalam program.
  • Executable Programs: Akun yang berisi kode aktual program Solana. Akun ini menyimpan instruksi yang dapat dipanggil oleh pengguna.

Pemisahan antara kode program dan state program adalah fitur utama dari Model Akun Solana. Untuk detail lebih lanjut, lihat halaman Model Akun Solana.

Mengambil Akun Dompet

Contoh ini menunjukkan cara:

  1. Menghasilkan keypair baru (pasangan kunci publik/privat).
  2. Meminta airdrop SOL untuk mendanai alamat baru.
  3. Mengambil data akun untuk alamat yang telah didanai.

Di Solana, mendanai alamat baru dengan SOL secara otomatis membuat akun yang dimiliki oleh System Program. Semua akun "dompet" hanyalah akun yang dimiliki System Program yang menyimpan SOL dan dapat menandatangani transaksi.

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.

Mengambil Token Program

Contoh ini mengambil Token Program untuk menunjukkan perbedaan antara akun dompet dan akun program.

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.

Mengambil Mint Account

Contoh ini mengambil Mint account USD Coin (USDC) untuk menunjukkan bagaimana program di Solana menyimpan state dalam akun terpisah.

Akun Mint adalah akun yang dimiliki oleh Token Program. Akun ini menyimpan metadata global untuk token tertentu, termasuk total pasokan, jumlah desimal, dan akun yang berwenang untuk mencetak atau membekukan token. Alamat Mint account secara unik mengidentifikasi token di jaringan Solana.

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.

Mendeserialkan Mint Account

Field data dari akun Solana berisi byte mentah. Untuk menginterpretasikan data ini secara bermakna, Anda harus mendeserialkannya ke tipe data yang sesuai yang ditentukan oleh program yang memiliki akun tersebut.

Sebagian besar program Solana menyediakan library klien dengan fungsi pembantu yang mengabstraksi proses deserialisasi. Fungsi-fungsi ini mengonversi byte akun mentah menjadi tipe data terstruktur, sehingga memudahkan untuk bekerja dengan data akun.

Sebagai contoh, @solana/spl-token mencakup fungsi getMint() untuk membantu mendeserialkan bidang data dari akun Mint menjadi tipe data Mint.

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?

Daftar Isi

Edit Halaman