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

قم ببناء ونشر واختبار أول برنامج لك على بلوكتشين سولانا باستخدام إطار عمل Anchor. سيساعدك هذا الدليل على التعرف أكثر على Solana Playground وتحضيرك لاستخدام Program Derived Addresses (PDA) وCross Program Invocation (CPI).

إنشاء مشروع Anchor

  1. افتح Solana Playground في متصفح الويب الخاص بك
  2. في اللوحة اليسرى، انقر على + إنشاء مشروع جديد
  3. أدخل اسم المشروع
  4. اختر Anchor (Rust) كإطار عمل
  5. انقر على إنشاء

مشروع جديدمشروع جديد

سيتم فتح ملف المصدر src/lib.rs. يحتوي على بنية واحدة تسمى Initialize، والتي تقوم بما يلي:

  • تستقبل معلمة مطلوبة تسمى data: u64
  • تنشئ حسابًا جديدًا
  • تحفظ قيمة data: u64 في الحساب الجديد
  • تضيف رسالة إلى سجلات البرنامج في المعاملة
lib.rs
use anchor_lang::prelude::*;
// This is your program's public key and it will update
// automatically when you build the project.
declare_id!("11111111111111111111111111111111");
#[program]
mod hello_anchor {
use super::*;
pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {
ctx.accounts.new_account.data = data;
msg!("Changed data to: {}!", data); // Message will show up in the tx logs
Ok(())
}
}
#[derive(Accounts)]
pub struct Initialize<'info> {
// We must specify the space in order to initialize an account.
// First 8 bytes are default account discriminator,
// next 8 bytes come from NewAccount.data being type u64.
// (u64 = 64 bits unsigned integer = 8 bytes)
#[account(
init,
payer = signer,
space = 8 + 8
)]
pub new_account: Account<'info, NewAccount>,
#[account(mut)]
pub signer: Signer<'info>,
pub system_program: Program<'info, System>,
}
#[account]
pub struct NewAccount {
data: u64
}

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

  1. تجميع كود البرنامج
Terminal
$
build

سيتم الآن تحديث معرّف البرنامج الخاص بك، المحدد في declare_id!().

  1. إضافة SOL إلى محفظتك (اختياري)

يتطلب نشر البرنامج وجود SOL في حساب البرنامج على السلسلة. إذا لزم الأمر، أضف SOL إلى محفظتك قبل المتابعة إلى الخطوة 3.

  1. نشر البرنامج على الشبكة
Terminal
$
deploy

عند النشر، يتم تخزين الشفرة الثنائية للبرنامج في حساب برنامج قابل للتنفيذ.

ملاحظة: إذا كنت تفضل ذلك، يمكنك استخدام أزرار البناء والنشر في اللوحة الجانبية اليسرى، كما هو موضح في لقطة الشاشة أدناه.

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

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

  1. افتح ملف الاختبار المسمى 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));
});
});
  1. قم بتشغيل ملف الاختبار
Terminal
$
test
  1. قم بتخزين رمز المعاملة (TxHash) المضمن في المخرجات

(في المثال أعلاه، رمز المعاملة هو 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc.)

ملاحظة: إذا كنت تفضل ذلك، يمكنك استخدام زر Test في اللوحة الجانبية اليسرى.

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

  1. قم بتشغيل solana confirm -v [TxHash] لعرض سجلات المعاملة
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. عرض تفاصيل المعاملة

افتح إما SolanaFM أو Solana Explorer وابحث عن رمز المعاملة.

مستكشف سولانا: قم بتعيين شبكة المجموعة إلى devnet، لتتطابق مع سولانا بلايجراوند.

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

قم بإغلاق البرنامج لاسترداد عملات SOL المخصصة للبرنامج على السلسلة. للقيام بذلك، قم بتشغيل solana program close [ProgramID]، باستخدام عنوان البرنامج المخزن في ماكرو declare_id!().

Terminal
$
solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r

يمكن إغلاق البرامج أو تحديثها فقط بواسطة حساب يملك صلاحية الترقية. يصبح حساب بلايجراوند الخاص بك تلقائيًا صاحب صلاحية الترقية لكل برنامج عند نشره. إذا تم إلغاء صلاحية الترقية، يصبح البرنامج غير قابل للتعديل.

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

الخطوات التالية

الآن بعد أن قمت بنشر برنامجك الأول، أصبحت جاهزًا لاستكشاف العناوين المشتقة من البرنامج و استدعاء البرامج المتقاطعة.

Is this page helpful?

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

تعديل الصفحة