Ανάγνωση από το δίκτυο
Αυτή η ενότητα εξερευνά πώς να διαβάζετε δεδομένα από το δίκτυο Solana ανακτώντας διαφορετικούς λογαριασμούς για να κατανοήσετε τη δομή ενός λογαριασμού Solana.
Στο Solana, όλα τα δεδομένα υπάρχουν σε "accounts". Μπορείτε να σκεφτείτε τα δεδομένα στο Solana ως μια δημόσια βάση δεδομένων με έναν μόνο πίνακα "Accounts", όπου κάθε καταχώρηση είναι ένας λογαριασμός με τον ίδιο βασικό τύπο Account.
Λογαριασμοί
Οι λογαριασμοί στο Solana μπορούν να αποθηκεύσουν "κατάσταση" ή "εκτελέσιμα" προγράμματα. Κάθε λογαριασμός έχει μια "διεύθυνση" (δημόσιο κλειδί) που χρησιμεύει ως το μοναδικό του αναγνωριστικό για τον εντοπισμό των αντίστοιχων δεδομένων του στο blockchain.
Οι λογαριασμοί Solana περιέχουν είτε:
- Κατάσταση: Δεδομένα που προορίζονται για ανάγνωση και διατήρηση. Για παράδειγμα, πληροφορίες σχετικά με tokens, δεδομένα χρηστών ή άλλα δεδομένα που ορίζονται μέσα σε ένα πρόγραμμα.
- Εκτελέσιμα Προγράμματα: Λογαριασμοί που περιέχουν τον πραγματικό κώδικα των προγραμμάτων Solana. Αυτοί οι λογαριασμοί αποθηκεύουν οδηγίες που μπορούν να επικαλεστούν οι χρήστες.
Αυτός ο διαχωρισμός του κώδικα προγράμματος και της κατάστασης προγράμματος είναι ένα βασικό χαρακτηριστικό του Μοντέλου Λογαριασμών του Solana. Για περισσότερες λεπτομέρειες, ανατρέξτε στη σελίδα Μοντέλο Λογαριασμών Solana.
Ανάκτηση λογαριασμού πορτοφολιού
Αυτό το παράδειγμα δείχνει πώς να:
- Δημιουργήσετε ένα νέο keypair (ζεύγος δημόσιου/ιδιωτικού κλειδιού).
- Ζητήσετε ένα airdrop SOL για να χρηματοδοτήσετε τη νέα διεύθυνση.
- Ανακτήσετε τα δεδομένα λογαριασμού για τη χρηματοδοτημένη διεύθυνση.
Στο Solana, η χρηματοδότηση μιας νέας διεύθυνσης με SOL δημιουργεί αυτόματα έναν λογαριασμό που ανήκει στο System Program. Όλοι οι λογαριασμοί "πορτοφολιού" είναι απλώς λογαριασμοί που ανήκουν στο System Program που περιέχουν SOL και μπορούν να υπογράφουν συναλλαγές.
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));
Ανάκτηση του Token Program
Αυτό το παράδειγμα ανακτά το Token Program για να δείξει τη διαφορά μεταξύ λογαριασμών πορτοφολιού και λογαριασμών προγράμματος.
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);
Ανάκτηση του Mint Account
Αυτό το παράδειγμα ανακτά το Mint account του USD Coin (USDC) για να δείξει πώς τα προγράμματα στο Solana αποθηκεύουν την κατάσταση σε ξεχωριστούς λογαριασμούς.
Ένας Mint account είναι ένας λογαριασμός που ανήκει στο Token Program. Αποθηκεύει καθολικά μεταδεδομένα για ένα συγκεκριμένο token, συμπεριλαμβανομένης της συνολικής προσφοράς, του αριθμού των δεκαδικών και των λογαριασμών που έχουν εξουσιοδότηση για την έκδοση ή το πάγωμα των tokens. Η διεύθυνση του mint account προσδιορίζει μοναδικά ένα token στο δίκτυο Solana.
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);
Αποσειριοποίηση του Mint Account
Το πεδίο data
ενός λογαριασμού Solana περιέχει ακατέργαστα bytes. Για να
ερμηνεύσετε αυτά τα δεδομένα με ουσιαστικό τρόπο, πρέπει να τα αποσειριοποιήσετε
στον κατάλληλο τύπο δεδομένων που ορίζεται από το πρόγραμμα που κατέχει τον
λογαριασμό.
Τα περισσότερα προγράμματα Solana παρέχουν βιβλιοθήκες πελάτη με βοηθητικές συναρτήσεις που αφαιρούν τη διαδικασία αποσειριοποίησης. Αυτές οι συναρτήσεις μετατρέπουν τα ακατέργαστα bytes του λογαριασμού σε δομημένους τύπους δεδομένων, διευκολύνοντας την εργασία με τα δεδομένα του λογαριασμού.
Για παράδειγμα, το @solana/spl-token
περιλαμβάνει τη συνάρτηση
getMint()
για να βοηθήσει στην αποσειριοποίηση του πεδίου
data
ενός λογαριασμού Mint στον τύπο δεδομένων
Mint.
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?