Lendo da rede

Esta seção explora como ler dados da rede Solana buscando diferentes contas para entender a estrutura de uma conta Solana.

Na Solana, todos os dados existem em "accounts". Você pode pensar nos dados na Solana como um banco de dados público com uma única tabela "Accounts", onde cada entrada é uma conta com o mesmo tipo base de Account.

ContasContas

As contas na Solana podem armazenar "estado" ou programas "executáveis". Cada conta tem um "endereço" (chave pública) que serve como seu ID único usado para localizar seus dados correspondentes na blockchain.

As contas Solana contêm:

  • Estado: Dados que devem ser lidos e persistidos. Por exemplo, informações sobre tokens, dados do usuário ou outros dados definidos dentro de um programa.
  • Programas Executáveis: Contas contendo o código real dos programas Solana. Essas contas armazenam instruções que os usuários podem invocar.

Esta separação entre código do programa e estado do programa é uma característica chave do Modelo de Conta da Solana. Para mais detalhes, consulte a página Modelo de Conta Solana.

Buscar conta de carteira

Este exemplo demonstra como:

  1. Gerar um novo keypair (par de chaves pública/privada).
  2. Solicitar um airdrop de SOL para financiar o novo endereço.
  3. Recuperar os dados da conta para o endereço financiado.

Na Solana, financiar um novo endereço com SOL cria automaticamente uma conta pertencente ao System Program. Todas as contas de "carteira" são simplesmente contas pertencentes ao System Program que mantêm SOL e podem assinar transações.

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.

Buscar o Token Program

Este exemplo busca o Token Program para demonstrar a diferença entre contas de carteira e contas de programa.

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.

Buscar conta Mint

Este exemplo busca a conta Mint do USD Coin (USDC) para mostrar como os programas na Solana armazenam estado em contas separadas.

Uma conta Mint é uma conta pertencente ao Token Program. Ela armazena metadados globais para um token específico, incluindo o fornecimento total, número de decimais e as contas autorizadas a criar ou congelar tokens. O endereço da conta Mint identifica exclusivamente um token na rede 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.

Desserializar conta Mint

O campo data de uma conta Solana contém bytes brutos. Para interpretar estes dados de forma significativa, você deve desserializá-los no tipo de dados apropriado definido pelo programa que possui a conta.

A maioria dos programas Solana fornece bibliotecas cliente com funções auxiliares que abstraem o processo de desserialização. Essas funções convertem os bytes brutos da conta em tipos de dados estruturados, facilitando o trabalho com os dados da conta.

Por exemplo, @solana/spl-token inclui a função getMint() para ajudar a desserializar o campo data de uma mint account no tipo de dados 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?

Índice

Editar Página