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

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

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

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

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

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

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

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

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

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

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

في Solana، يؤدي تمويل عنوان جديد بعملة SOL تلقائيًا إلى إنشاء حساب مملوك من قبل برنامج النظام. جميع حسابات "المحفظة" هي ببساطة حسابات مملوكة من قبل برنامج النظام تحتفظ بعملة 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));
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);
Click to execute the code.

جلب حساب الإصدار (Mint Account)

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

حساب Mint هو حساب مملوك من قبل "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("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
const accountInfo = await connection.getAccountInfo(address);
Click to execute the code.

فك تسلسل حساب الإصدار

يحتوي حقل 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");
Click to execute the code.

Is this page helpful?

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

تعديل الصفحة