Daten vom Netzwerk lesen

Dieser Abschnitt erklärt, wie man Daten aus dem Solana-Netzwerk liest, indem verschiedene Konten abgerufen werden, um die Struktur eines Solana-Kontos zu verstehen.

Auf Solana existieren alle Daten in "Konten". Sie können sich die Daten auf Solana als eine öffentliche Datenbank mit einer einzigen "Konten"-Tabelle vorstellen, wobei jeder Eintrag ein Konto mit demselben Basis- Kontotyp ist.

KontenKonten

Konten auf Solana können "Zustand" oder "ausführbare" Programme speichern. Jedes Konto hat eine "Adresse" (öffentlicher Schlüssel), die als eindeutige ID dient und verwendet wird, um die entsprechenden On-Chain-Daten zu lokalisieren.

Solana-Konten enthalten entweder:

  • Zustand: Daten, die gelesen und gespeichert werden sollen. Zum Beispiel Informationen über Tokens, Benutzerdaten oder andere Daten, die innerhalb eines Programms definiert sind.
  • Ausführbare Programme: Konten, die den tatsächlichen Code von Solana-Programmen enthalten. Diese Konten speichern Anweisungen, die Benutzer aufrufen können.

Diese Trennung von Programmcode und Programmzustand ist ein Schlüsselmerkmal des Solana-Kontenmodells. Weitere Details finden Sie auf der Seite Solana-Kontenmodell.

Wallet-Konto abrufen

Dieses Beispiel zeigt, wie man:

  1. Ein neues Keypair (öffentliches/privates Schlüsselpaar) generiert.
  2. Einen Airdrop von SOL anfordert, um die neue Adresse zu finanzieren.
  3. Die Kontodaten für die finanzierte Adresse abruft.

Auf Solana erstellt die Finanzierung einer neuen Adresse mit SOL automatisch ein Konto, das dem System-Programm gehört. Alle "Wallet"-Konten sind einfach Konten im Besitz des System-Programms, die SOL halten und Transaktionen signieren können.

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 abrufen

Dieses Beispiel ruft das Token Program ab, um den Unterschied zwischen Wallet- und program account zu demonstrieren.

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.

Mint Account abrufen

Dieses Beispiel ruft das USD Coin (USDC) Mint account ab, um zu zeigen, wie Programme auf Solana den Status in separaten Konten speichern.

Ein Mint account ist ein Konto, das dem Token Program gehört. Es speichert globale Metadaten für einen bestimmten Token, einschließlich der Gesamtversorgung, Anzahl der Dezimalstellen und der Konten, die zum Prägen oder Einfrieren von Tokens berechtigt sind. Die Adresse des Mint accounts identifiziert einen Token im Solana-Netzwerk eindeutig.

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.

Mint Account deserialisieren

Das Feld data eines Solana-Kontos enthält Rohdaten in Bytes. Um diese Daten sinnvoll zu interpretieren, müssen Sie sie in den entsprechenden Datentyp deserialisieren, der vom Programm definiert wurde, dem das Konto gehört.

Die meisten Solana-Programme bieten Client-Bibliotheken mit Hilfsfunktionen, die den Deserialisierungsprozess abstrahieren. Diese Funktionen konvertieren die rohen Konto-Bytes in strukturierte Datentypen und erleichtern so die Arbeit mit den Kontodaten.

Zum Beispiel enthält @solana/spl-token die getMint() Funktion, die hilft, das data Feld eines Mint account in den Mint Datentyp zu deserialisieren.

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?

Inhaltsverzeichnis

Seite bearbeiten