القراءة من الشبكة

يستكشف هذا القسم كيفية قراءة البيانات من شبكة سولانا من خلال استرجاع حسابات مختلفة لفهم بنية حساب سولانا.

في سولانا، توجد جميع البيانات في "حسابات". يمكنك التفكير في البيانات على سولانا كقاعدة بيانات عامة تحتوي على جدول "حسابات" واحد، حيث كل إدخال هو حساب بنفس نوع الحساب الأساسي.

الحساباتالحسابات

يمكن للحسابات على سولانا تخزين "حالة" أو برامج "قابلة للتنفيذ". كل حساب له "عنوان" (مفتاح عام) يعمل كمعرف فريد يستخدم لتحديد موقع بياناته المقابلة على السلسلة.

تحتوي حسابات سولانا على أحد الأمرين:

  • الحالة: البيانات المقصود قراءتها والاحتفاظ بها. على سبيل المثال، معلومات حول الرموز، أو بيانات المستخدم، أو بيانات أخرى محددة داخل برنامج.
  • البرامج القابلة للتنفيذ: الحسابات التي تحتوي على الكود الفعلي لبرامج سولانا. تخزن هذه الحسابات التعليمات التي يمكن للمستخدمين استدعاؤها.

هذا الفصل بين كود البرنامج وحالة البرنامج هو ميزة أساسية في نموذج حساب سولانا. لمزيد من التفاصيل، راجع صفحة نموذج حساب سولانا.

استرجاع حساب المحفظة

يوضح هذا المثال كيفية:

  1. إنشاء زوج مفاتيح جديد (زوج المفتاح العام/الخاص).
  2. طلب إسقاط جوي من SOL لتمويل العنوان الجديد.
  3. استرجاع بيانات الحساب للعنوان الممول.

في سولانا، يؤدي تمويل عنوان جديد بـ SOL تلقائيًا إلى إنشاء حساب مملوك من قبل System Program. جميع حسابات "المحفظة" هي ببساطة حسابات مملوكة من System Program تحتفظ بـ SOL ويمكنها توقيع المعاملات.

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));
Console
Click to execute the code.

جلب Token Program

يقوم هذا المثال بجلب Token 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);
Console
Click to execute the code.

جلب حساب mint account

يوضح هذا المثال كيفية جلب حساب mint account الخاص بعملة الدولار الأمريكي (USDC) لإظهار كيف تقوم البرامج على سولانا بتخزين الحالة في حسابات منفصلة.

حساب Mint هو حساب مملوك من قبل Token Program. يخزن البيانات الوصفية العالمية لـ رمز معين، بما في ذلك إجمالي العرض، وعدد الكسور العشرية، والحسابات المصرح لها بسك أو تجميد الرموز. عنوان حساب mint account يحدد بشكل فريد رمزًا على شبكة سولانا.

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);
Console
Click to execute the code.

فك تسلسل حساب Mint

يحتوي حقل data في حساب سولانا على بايتات خام. لتفسير هذه البيانات بشكل هادف، يجب عليك فك تسلسلها إلى نوع البيانات المناسب المحدد بواسطة البرنامج الذي يملك الحساب.

توفر معظم برامج سولانا مكتبات عميلة مع وظائف مساعدة تجرد عملية فك التسلسل. تحول هذه الوظائف بايتات الحساب الخام إلى أنواع بيانات منظمة، مما يسهل العمل مع بيانات الحساب.

على سبيل المثال، يتضمن @solana/spl-token دالة getMint() للمساعدة في فك تشفير حقل data الخاص بحساب mint account إلى نوع البيانات 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");
Console
Click to execute the code.

Is this page helpful?

جدول المحتويات

تعديل الصفحة