القراءة من الشبكة
يستكشف هذا القسم كيفية قراءة البيانات من شبكة سولانا من خلال استرجاع حسابات مختلفة لفهم بنية حساب سولانا.
في سولانا، توجد جميع البيانات في "حسابات". يمكنك التفكير في البيانات على سولانا كقاعدة بيانات عامة تحتوي على جدول "حسابات" واحد، حيث كل إدخال هو حساب بنفس نوع الحساب الأساسي.
الحسابات
يمكن للحسابات على سولانا تخزين "حالة" أو برامج "قابلة للتنفيذ". كل حساب له "عنوان" (مفتاح عام) يعمل كمعرف فريد يستخدم لتحديد موقع بياناته المقابلة على السلسلة.
تحتوي حسابات سولانا على أحد الأمرين:
- الحالة: البيانات المقصود قراءتها والاحتفاظ بها. على سبيل المثال، معلومات حول الرموز، أو بيانات المستخدم، أو بيانات أخرى محددة داخل برنامج.
- البرامج القابلة للتنفيذ: الحسابات التي تحتوي على الكود الفعلي لبرامج سولانا. تخزن هذه الحسابات التعليمات التي يمكن للمستخدمين استدعاؤها.
هذا الفصل بين كود البرنامج وحالة البرنامج هو ميزة أساسية في نموذج حساب سولانا. لمزيد من التفاصيل، راجع صفحة نموذج حساب سولانا.
استرجاع حساب المحفظة
يوضح هذا المثال كيفية:
- إنشاء زوج مفاتيح جديد (زوج المفتاح العام/الخاص).
- طلب إسقاط جوي من SOL لتمويل العنوان الجديد.
- استرجاع بيانات الحساب للعنوان الممول.
في سولانا، يؤدي تمويل عنوان جديد بـ 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 الخاص بعملة الدولار الأمريكي (USDC) لإظهار كيف تقوم البرامج على سولانا بتخزين الحالة في حسابات منفصلة.
حساب Mint هو حساب مملوك من قبل Token Program. يخزن البيانات الوصفية العالمية لـ رمز معين، بما في ذلك إجمالي العرض، وعدد الكسور العشرية، والحسابات المصرح لها بسك أو تجميد الرموز. عنوان حساب mint 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);
فك تسلسل حساب Mint
يحتوي حقل data
في حساب سولانا على بايتات خام. لتفسير هذه البيانات بشكل هادف،
يجب عليك فك تسلسلها إلى نوع البيانات المناسب المحدد بواسطة البرنامج الذي يملك
الحساب.
توفر معظم برامج سولانا مكتبات عميلة مع وظائف مساعدة تجرد عملية فك التسلسل. تحول هذه الوظائف بايتات الحساب الخام إلى أنواع بيانات منظمة، مما يسهل العمل مع بيانات الحساب.
على سبيل المثال، يتضمن @solana/spl-token
دالة
getMint()
للمساعدة في فك تشفير حقل data
الخاص بحساب mint
account إلى نوع البيانات
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?