نشر برنامجك الأول على سولانا
في هذا القسم، ستقوم ببناء ونشر واختبار برنامج سولانا بسيط (عقد ذكي) باستخدام إطار عمل Anchor. بحلول النهاية، ستكون قد نشرت برنامجك الأول على بلوكتشين سولانا.
يركز الهدف من هذا القسم على تعريفك بـ Solana Playground. يشرح الدليل مثالاً أكثر تفصيلاً في أقسام Program Derived Address (PDA) و Cross-Program Invocation (CPI). لمزيد من التفاصيل، راجع صفحة البرامج على سولانا.
إنشاء مشروع Anchor
أولاً، افتح https://beta.solpg.io في علامة تبويب جديدة بالمتصفح.
-
انقر على زر "إنشاء مشروع جديد" في اللوحة الجانبية اليسرى.
-
أدخل اسم المشروع، واختر Anchor كإطار عمل، ثم انقر على زر "إنشاء".
مشروع جديد
سترى مشروعًا جديدًا تم إنشاؤه مع كود البرنامج في ملف lib.rs
.
هذا البرنامج الأساسي على سولانا ينشئ حسابًا جديدًا ويخزن رقمًا فيه. يحتوي
البرنامج على تعليمة واحدة (initialize
) والتي:
- تتطلب معلمة
data
كمدخل - تنشئ حسابًا جديدًا
- تحفظ قيمة معلمة
data
في بيانات الحساب - تسجل رسالة في سجلات البرنامج للمعاملة
use anchor_lang::prelude::*;declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");#[program]mod hello_anchor {use super::*;pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {let my_account = &mut ctx.accounts.my_account;my_account.data = data;msg!("Your data is: {}", data);Ok(())}}#[derive(Accounts)]pub struct Initialize<'info> {#[account(init, payer = user, space = 8 + 8)]pub my_account: Account<'info, MyAccount>,#[account(mut)]pub user: Signer<'info>,pub system_program: Program<'info, System>,}#[account]pub struct MyAccount {pub data: u64,}
بناء ونشر البرنامج
لبناء البرنامج، ما عليك سوى تشغيل build
في الطرفية. الأمر build
يقوم بتجميع
البرنامج. ثم يتم تخزين الشفرة الثنائية للبرنامج في حساب برنامج قابل للتنفيذ عند
النشر.
$build
يقوم Solana Playground بتحديث العنوان في declare_id!()
. يمثل هذا العنوان
عنوان برنامجك على السلسلة (معرف البرنامج).
بعد بناء البرنامج، قم بتشغيل deploy
في نافذة الطرفية لنشر البرنامج على
الشبكة (devnet بشكل افتراضي). يتطلب نشر البرنامج تخصيص SOL للحساب على السلسلة
الذي يخزن البرنامج.
قبل النشر، تأكد من أن لديك ما يكفي من SOL. يمكنك الحصول على SOL على devnet إما
عن طريق تشغيل solana airdrop 5
في طرفية Playground أو باستخدام
صنبور الويب.
$deploy
يمكنك أيضًا استخدام أزرار Build
و Deploy
على اللوحة الجانبية اليسرى.
البناء والنشر
بعد نشر البرنامج، يمكنك استدعاء تعليماته.
اختبار البرنامج
يتضمن الكود الأولي ملف اختبار موجود في tests/anchor.test.ts
. يوضح هذا الملف
كيفية استدعاء تعليمة initialize
في البرنامج من العميل.
// No imports needed: web3, anchor, pg and more are globally availabledescribe("Test", () => {it("initialize", async () => {// Generate keypair for the new accountconst newAccountKp = new web3.Keypair();// Send transactionconst data = new BN(42);const txHash = await pg.program.methods.initialize(data).accounts({newAccount: newAccountKp.publicKey,signer: pg.wallet.publicKey,systemProgram: web3.SystemProgram.programId}).signers([newAccountKp]).rpc();console.log(`Use 'solana confirm -v ${txHash}' to see the logs`);// Confirm transactionawait pg.connection.confirmTransaction(txHash);// Fetch the created accountconst newAccount = await pg.program.account.newAccount.fetch(newAccountKp.publicKey);console.log("On-chain data is:", newAccount.data.toString());// Check whether the data on-chain is equal to local 'data'assert(data.eq(newAccount.data));});});
لتشغيل ملف الاختبار بعد نشر البرنامج، قم بتشغيل test
في الطرفية.
$test
ابحث عن المخرجات التي تؤكد نجاح الاختبار.
يمكنك أيضًا استخدام زر Test
على اللوحة الجانبية اليسرى.
تشغيل الاختبار
يمكنك بعد ذلك عرض سجلات المعاملة عن طريق تشغيل أمر solana confirm -v
وتحديد
هاش المعاملة (التوقيع) من مخرجات الاختبار:
$solana confirm -v [TxHash]
على سبيل المثال:
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
يمكنك أيضًا عرض تفاصيل المعاملة على SolanaFM أو مستكشف Solana عن طريق البحث عن توقيع المعاملة (الهاش).
تذكر تحديث اتصال المجموعة (الشبكة) في المستكشف الذي تستخدمه ليتطابق مع Solana Playground. يستخدم Solana Playground مجموعة devnet بشكل افتراضي.
إغلاق البرنامج
أخيرًا، إغلاق البرنامج يسمح باسترداد كامل لعملة SOL المخصصة للبرنامج على السلسلة.
يمكنك إغلاق البرنامج عن طريق تشغيل الأمر التالي وتحديد عنوان البرنامج الموجود في
declare_id!()
:
$solana program close [ProgramID]
على سبيل المثال:
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
تهانينا. لقد قمت للتو ببناء ونشر أول برنامج Solana باستخدام إطار عمل Anchor.
Is this page helpful?