نشر برنامجك الأول على سولانا

في هذا القسم، ستقوم ببناء ونشر واختبار برنامج سولانا بسيط (عقد ذكي) باستخدام إطار عمل 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 يقوم بتجميع البرنامج. ثم يتم تخزين الشفرة الثنائية للبرنامج في حساب برنامج قابل للتنفيذ عند النشر.

Terminal
$
build

يقوم Solana Playground بتحديث العنوان في declare_id!(). يمثل هذا العنوان عنوان برنامجك على السلسلة (معرف البرنامج).

بعد بناء البرنامج، قم بتشغيل deploy في نافذة الطرفية لنشر البرنامج على الشبكة (devnet بشكل افتراضي). يتطلب نشر البرنامج تخصيص SOL للحساب على السلسلة الذي يخزن البرنامج.

قبل النشر، تأكد من أن لديك ما يكفي من SOL. يمكنك الحصول على SOL على devnet إما عن طريق تشغيل solana airdrop 5 في طرفية Playground أو باستخدام صنبور الويب.

Terminal
$
deploy

يمكنك أيضًا استخدام أزرار Build و Deploy على اللوحة الجانبية اليسرى.

البناء والنشرالبناء والنشر

بعد نشر البرنامج، يمكنك استدعاء تعليماته.

اختبار البرنامج

يتضمن الكود الأولي ملف اختبار موجود في tests/anchor.test.ts. يوضح هذا الملف كيفية استدعاء تعليمة initialize في البرنامج من العميل.

anchor.test.ts
// No imports needed: web3, anchor, pg and more are globally available
describe("Test", () => {
it("initialize", async () => {
// Generate keypair for the new account
const newAccountKp = new web3.Keypair();
// Send transaction
const 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 transaction
await pg.connection.confirmTransaction(txHash);
// Fetch the created account
const 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 في الطرفية.

Terminal
$
test

ابحث عن المخرجات التي تؤكد نجاح الاختبار.

يمكنك أيضًا استخدام زر Test على اللوحة الجانبية اليسرى.

تشغيل الاختبارتشغيل الاختبار

يمكنك بعد ذلك عرض سجلات المعاملة عن طريق تشغيل أمر solana confirm -v وتحديد هاش المعاملة (التوقيع) من مخرجات الاختبار:

Terminal
$
solana confirm -v [TxHash]

على سبيل المثال:

Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc

يمكنك أيضًا عرض تفاصيل المعاملة على SolanaFM أو مستكشف Solana عن طريق البحث عن توقيع المعاملة (الهاش).

تذكر تحديث اتصال المجموعة (الشبكة) في المستكشف الذي تستخدمه ليتطابق مع Solana Playground. يستخدم Solana Playground مجموعة devnet بشكل افتراضي.

إغلاق البرنامج

أخيرًا، إغلاق البرنامج يسمح باسترداد كامل لعملة SOL المخصصة للبرنامج على السلسلة.

يمكنك إغلاق البرنامج عن طريق تشغيل الأمر التالي وتحديد عنوان البرنامج الموجود في declare_id!():

Terminal
$
solana program close [ProgramID]

على سبيل المثال:

Terminal
$
solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r

تهانينا. لقد قمت للتو ببناء ونشر أول برنامج Solana باستخدام إطار عمل Anchor.

Is this page helpful?

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

تعديل الصفحة