نشر البرامج
يشرح هذا القسم العملية الأساسية لنشر برنامج سولانا باستخدام واجهة سطر أوامر سولانا.
مرجع أوامر واجهة سطر الأوامر
المهمة | الأمر |
---|---|
بناء البرنامج | cargo build-sbf |
نشر برنامج جديد | solana program deploy <path_to_program.so> |
تحديث برنامج موجود | solana program deploy <path_to_program.so> (نفس أمر النشر) |
عرض معلومات البرنامج | solana program show <program-id> |
نقل صلاحية البرنامج | solana program set-upgrade-authority <program-id> --new-upgrade-authority <path_to_keypair> |
جعل البرنامج غير قابل للتعديل | solana program set-upgrade-authority <program-id> --final |
إغلاق البرنامج | solana program close <program-id> --bypass-warning |
التحقق من رصيد المحفظة | solana balance |
طلب إسقاط جوي (devnet/localhost) | solana airdrop 2 |
المفاهيم الأساسية
قبل الغوص في التفاصيل، دعنا نوضح بعض المصطلحات:
- معرّف البرنامج: العنوان على السلسلة لبرنامجك. يتفاعل المستخدمون مع برنامجك من خلال الإشارة إلى معرّف البرنامج.
- program account: الحساب على السلسلة الذي يخزن البيانات الوصفية لبرنامجك. عنوان program account هو معرّف البرنامج. يخزن program account أيضًا عنوان programdata account.
- programdata account: الحساب على السلسلة الذي يخزن الشفرة التنفيذية المنشورة لبرنامجك.
- صلاحية البرنامج: الحساب الذي لديه إذن لتحديث أو إغلاق البرنامج. بشكل افتراضي، هذا هو محفظة واجهة سطر الأوامر الخاصة بك.
المتطلبات الأساسية
إعداد المحفظة
بعد التثبيت، قم بإنشاء محفظة زوج مفاتيح محلية. يتم تعيين عنوان هذه المحفظة كصلاحية افتراضية للبرنامج عند نشر البرامج:
$solana-keygen new
هذا ينشئ زوج مفاتيح في ~/.config/solana/id.json
بشكل افتراضي.
تكوين العنقود
اختر عنقود سولانا الذي تريد النشر إليه. استخدم الأمر solana config get
للتحقق
من التكوين الحالي:
$solana config get
قم بالتبديل بين العناقيد حسب الحاجة:
$solana config set --url mainnet-beta$solana config set --url devnet$solana config set --url localhost$solana config set --url testnet$solana config set --url "https://your-rpc-url.com"
تمويل المحفظة
ستحتاج إلى SOL لدفع تكاليف نشر البرنامج. يعتمد المبلغ على حجم البرنامج الخاص بك.
بالنسبة لشبكة devnet أو localhost، قم بتمويل محفظتك باستخدام الأمر
solana airdrop
:
$solana airdrop 2
تحقق من رصيد محفظتك:
$solana balance
العمليات الأساسية
بناء البرنامج
لبناء برنامج، استخدم الأمر cargo build-sbf
:
$cargo build-sbf
مثال على البرنامج
هنا برنامج سولانا بسيط يطبع "Hello, Solana!" في سجلات البرنامج.
use solana_program::{account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, pubkey::Pubkey,};entrypoint!(process_instruction);pub fn process_instruction(_program_id: &Pubkey,_accounts: &[AccountInfo],_instruction_data: &[u8],) -> ProgramResult {msg!("Hello, Solana!");Ok(())}
مخرجات البناء
قم ببناء برنامجك باستخدام أمر cargo build-sbf
:
$cargo build-sbf
هذا ينشئ ملفين مهمين في target/deploy/
:
hello_world-keypair.json
: ملف keypair الذي سيتم استخدام المفتاح العام الخاص به كمعرف البرنامج (Program ID) الخاص بكhello_world.so
: ملف البرنامج التنفيذي المُجمّع
التحقق من حجم البرنامج والتكلفة
يتطلب نشر البرنامج تخصيص SOL لحساب البرنامج بناءً على حجم البرنامج. البرامج الأكبر حجمًا تكلف المزيد من SOL للنشر.
تحقق من حجم برنامجك:
$wc -c < ./target/deploy/hello_world.so
احسب كمية SOL المطلوبة لهذا الحجم (بالبايت):
$solana rent 18504
ستحتاج إلى SOL أكثر قليلاً مما هو موضح لتغطية رسوم معاملات النشر.
نشر البرنامج
استخدم أمر solana program deploy
لنشر برنامجك:
$solana program deploy ./target/deploy/hello_world.so
معرف البرنامج المعروض هو عنوان برنامجك الدائم على الشبكة.
للنشر باستخدام معرف برنامج محدد (بدلاً من المعرف المُنشأ تلقائيًا)، استخدم:
$solana program deploy ./target/deploy/hello_world.so --program-id ./custom-keypair.json
يمكنك إنشاء keypair جديد باستخدام أمر solana-keygen
:
$solana-keygen new -o ./custom-keypair.json
تحديث البرنامج
قم بتحديث برنامجك باستخدام نفس أمر solana program deploy
:
- قم بإجراء تغييرات على كود البرنامج الخاص بك
- أعد بناء برنامجك:
cargo build-sbf
- قم بنشر التحديث:
$solana program deploy ./target/deploy/hello_world.so
إذا كان برنامجك المحدث يتطلب مساحة أكبر (بايت) مما هو مخصص حاليًا، فسيقوم النشر تلقائيًا بتوسيع حساب البرنامج. يحدث هذا عندما يكون برنامجك الجديد أكبر من الإصدار السابق. يحتاج حساب البرنامج إلى بايتات إضافية لتخزين البرنامج الجديد. ستقوم واجهة سطر الأوامر بحساب كمية SOL المطلوبة وخصمها من محفظتك تلقائيًا.
يمكنك أيضًا توسيع البرنامج يدويًا لتخصيص المزيد من البايتات:
$solana program extend 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE 1000
إدارة البرنامج
بمجرد نشر برنامجك، هناك عدة أوامر شائعة لإدارة حساب البرنامج.
عرض بيانات تعريف البرنامج
للتحقق من بيانات تعريف برنامجك، استخدم أمر solana program show
:
$solana program show 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE
مثال للمخرجات:
$ solana program show 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7Program Id: 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7Owner: BPFLoaderUpgradeab1e11111111111111111111111ProgramData Address: Gqn7YQVCP8NtYV1qkEqR4Udhj8EJ3fkikvS7HskCNQ7cAuthority: 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1Last Deployed In Slot: 6573Data Length: 18504 (0x4848) bytesBalance: 0.12999192 SOL
نقل سلطة البرنامج
لنقل سلطة البرنامج إلى حساب مختلف، استخدم الأمر
solana program set-upgrade-authority
:
$solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --new-upgrade-authority ./new-authority-keypair.json
بعد نقل سلطة البرنامج، لن تتمكن من تحديث البرنامج ما لم يكن لديك وصول إلى زوج المفاتيح الخاص بالسلطة الجديدة.
جعل برنامجك غير قابل للتغيير
لجعل برنامجك غير قابل للتغيير، استخدم الأمر
solana program set-upgrade-authority
مع العلامة --final
لإزالة سلطة
البرنامج:
$solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --final
بمجرد أن يصبح البرنامج غير قابل للتغيير، لا يمكن تحديثه أو إغلاقه أبدًا.
إغلاق برنامجك
لإغلاق برنامجك واسترداد عملات SOL المخصصة لحساب البرنامج، استخدم الأمر
solana program close
:
$solana program close 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --bypass-warning
بمجرد الإغلاق، لا يمكن إعادة استخدام معرف البرنامج. لا يمكنك نشر برنامج جديد على نفس العنوان.
أوامر المساعدة
عرض جميع البرامج
عرض جميع البرامج التي تكون محفظتك الحالية هي السلطة عليها:
$solana program show --programs
مثال على المخرجات:
Program Id | Slot | Authority | Balance-------------------------------------------------|------------|------------------------------------------------|-------------7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE | 249885434 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.129991923KSGCk4m5hqJkTjPHBXUCPcqMwJnK3VmkqEsFUKKGJPK | 249883212 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.28654328
تنزيل برنامج منشور
لتنزيل برنامج منشور، استخدم الأمر solana program dump
:
$solana program dump 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE ./downloaded_program.so
خيارات متقدمة
علامات النشر
عندما تكون شبكة سولانا مزدحمة، استخدم هذه العلامات للمساعدة في نشر البرنامج.
مثال على الاستخدام:
$solana program deploy ./target/deploy/hello_world.so \--with-compute-unit-price 10000 \--max-sign-attempts 10 \--use-rpc
شرح الخيارات:
--with-compute-unit-price
: تعيين رسوم الأولوية بالميكرو-لامبورت (0.000001 SOL) لكل وحدة حسابية. راجع واجهة برمجة تطبيقات رسوم الأولوية من Helius للحصول على المعدلات الحالية. رسوم الأولوية هي رسوم إضافية تُدفع للقائد الحالي لإعطاء الأولوية لمعاملتك.--max-sign-attempts
: عدد مرات إعادة المحاولة باستخدام بلوكهاش جديد إذا انتهت صلاحية المعاملات. (الافتراضي: 5)--use-rpc
: إرسال المعاملات إلى RPC المُكوّن. تتطلب هذه العلامة اتصال RPC مرجح بالحصة من مزودين مثل Triton أو Helius.
Is this page helpful?