هذه الإجراءات متاحة عند استخدام إضافة SVM لبناء المعاملات وتوقيعها وبثّها.
deploy_program
svm::deploy_program ينشر برنامج سولانا على الشبكة المتوافقة مع SVM المحددة.
المدخلات
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
description | اختياري | string | وصف لإجراء النشر |
program | مطلوب | object | مكتبات برنامج سولانا المراد نشرها |
payer | اختياري | string | مرجع إلى موقّع لدفع تكاليف النشر |
authority | مطلوب | string | مرجع إلى موقّع لصلاحية البرنامج |
commitment_level | اختياري | string | مستوى الالتزام ('processed'، 'confirmed'، 'finalized') |
auto_extend | اختياري | bool | ما إذا كان سيتم تمديد program account تلقائيًا (الافتراضي: true) |
المخرجات
| الاسم | النوع | الوصف |
|---|---|---|
signatures | object | توقيعات المعاملة المحسوبة |
program_id | string | معرّف البرنامج المنشور |
program_idl | string | IDL البرنامج |
action "deploy" "svm::deploy_program" {description = "Deploy hello world program"program = svm::get_program_from_anchor_project("hello_world")authority = signer.authoritypayer = signer.payer # Optional, defaults to authority}
process_instructions
يقوم إجراء svm::process_instructions بترميز التعليمات وإضافتها إلى معاملة، ثم
توقيع المعاملة وبثّها.
المدخلات
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
description | اختياري | string | وصف للمعاملة |
instruction | مطلوب | map | التعليمات المراد إضافتها إلى المعاملة |
signers | مطلوب | array[string] | مراجع إلى مكوّنات الموقّع |
commitment_level | اختياري | string | مستوى الالتزام |
rpc_api_url | مطلوب | string | عنوان URL لطلبات API |
المخرجات
| الاسم | النوع | الوصف |
|---|---|---|
signature | string | التوقيع المحسوب للمعاملة |
action "program_call" "svm::process_instructions" {description = "Invoke instructions"instruction {program_idl = variable.program.idlinstruction_name = "initialize"instruction_args = [1]payer {public_key = signer.payer.public_key}}signers = [signer.caller]}
send_sol
يُشفِّر الإجراء svm::send_sol معاملةً ترسل SOL، ثم يوقِّعها ويبثُّها إلى
الشبكة.
المدخلات
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
description | اختياري | string | وصف للمعاملة |
amount | مطلوب | integer | المبلغ المراد إرساله، بوحدة lamport |
recipient | مطلوب | string | عنوان SVM للمستلم |
signer | مطلوب | string | مرجع إلى بنية موقِّع |
commitment_level | اختياري | string | مستوى الالتزام |
rpc_api_url | مطلوب | string | رابط URL لطلبات API |
المخرجات
| الاسم | النوع | الوصف |
|---|---|---|
signature | string | التوقيع المحسوب للمعاملة |
action "send_sol" "svm::send_sol" {description = "Send some SOL"amount = svm::sol_to_lamports(1)signer = signer.callerrecipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"}
send_token
يُشفِّر الإجراء svm::send_token معاملةً ترسل الرمز المميز المحدد، ثم يوقِّعها
ويبثُّها إلى الشبكة.
المدخلات
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
description | اختياري | string | وصف للمعاملة |
amount | مطلوب | integer | كمية الرموز المميزة للإرسال، بالوحدة الأساسية |
token | مطلوب | string | عنوان mint account للرمز المميز |
recipient | مطلوب | string | عنوان SVM للمستلم |
authority | اختياري | string | pubkey الخاص بحساب الصلاحية |
fund_recipient | اختياري | bool | إنشاء وتمويل token account الخاص بالمستلم عند الحاجة |
signers | مطلوب | array[string] | مراجع إلى بنى الموقِّعين |
المخرجات
| الاسم | النوع | الوصف |
|---|---|---|
signature | string | التوقيع المحسوب للمعاملة |
recipient_token_address | pubkey | عنوان token account الخاص بالمستلم |
source_token_address | pubkey | عنوان token account المصدر |
token_mint_address | pubkey | عنوان mint الخاص بالرمز |
action "send_sol" "svm::send_token" {description = "Send some tokens"amount = 1000000signers = [signer.caller]recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"token = "3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6"fund_recipient = true}
setup_surfnet
يمكن استخدام svm::setup_surfnet لتهيئة surfnet.
العمليات التالية مدعومة:
set_account- تعيين الـ lamports والمالك والبيانات وحقول قابلية التنفيذ لحساب ماset_token_account- تعيين المبلغ والمفوَّض والمبلغ المفوَّض وصلاحية الإغلاق لـ token accountclone_program_account- نسخ program account من معرّف برنامج مصدر إلى معرّف برنامج وجهةset_program_authority- تعيين صلاحية برنامج ماdeploy_program- نشر برنامج مباشرةً على الـ surfnet (عبر الكتابة المباشرة في الحساب، لا عبر المعاملات)reset_account- إعادة تعيين حساب وحذفه من الذاكرة المؤقتة المحلية لإعادة جلبه من المصدر الأصليstream_account- بث بيانات الحساب من الشبكة الرئيسية بحيث تتطابق البيانات المحلية دائمًا مع الشبكة الرئيسية
المدخلات
| الاسم | المطلوب | النوع | الوصف |
|---|---|---|---|
description | اختياري | string | وصف للإعداد |
rpc_api_url | مطلوب | string | عنوان URL لطلبات API |
set_account
يُعيّن بيانات الحساب مباشرةً على الـ surfnet.
| الاسم | المطلوب | النوع | الوصف |
|---|---|---|---|
public_key | مطلوب | string | المفتاح العام للحساب المراد تعيينه |
account_path | اختياري | string | المسار إلى ملف JSON يحتوي على بيانات الحساب المراد تعيينها. في حال توفيره، يتم تجاهل الحقول الأخرى |
lamports | اختياري | integer | كمية الـ lamports التي يجب تعيينها للحساب |
data | اختياري | bytes | البيانات المراد تعيينها في الحساب |
owner | اختياري | string | المالك المراد تعيينه للحساب |
executable | اختياري | bool | حالة قابلية التنفيذ المراد تعيينها للحساب |
rent_epoch | اختياري | integer | الـ epoch الذي سيكون فيه الحساب معفيًا من الإيجار |
يجب توفير واحد على الأقل من lamports أو data أو owner أو executable أو
rent_epoch (ما لم تكن تستخدم account_path).
set_token_account
يضبط بيانات token account على الـ surfnet. يتم اشتقاق associated token account تلقائيًا من المفتاح العام للمالك وعملة token mint.
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
public_key | مطلوب | string | المفتاح العام لحساب مالك الرمز المراد تحديثه |
token | مطلوب | string | رمز التوكن (مثل: "usdc"، "bonk") أو المفتاح العام لـ token mint |
token_program | اختياري | string | معرّف Token Program. القيم الصالحة هي token2020 أو token2022 أو مفتاح عام (الافتراضي: token2020) |
amount | اختياري | integer | كمية الرموز المراد ضبطها |
delegate | اختياري | string | المفتاح العام للمفوَّض المراد ضبطه، أو null للمسح |
state | اختياري | string | حالة token account. القيم الصالحة هي initialized أو frozen أو uninitialized |
delegated_amount | اختياري | integer | كمية الرموز المراد تفويضها |
close_authority | اختياري | string | المفتاح العام لسلطة الإغلاق المراد ضبطها، أو null للمسح |
يجب توفير واحد على الأقل من amount أو delegate أو state أو
delegated_amount أو close_authority.
clone_program_account
يستنسخ program account من معرّف برنامج إلى آخر على الـ surfnet.
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
source_program_id | مطلوب | string | المفتاح العام للبرنامج المراد استنساخه |
destination_program_id | مطلوب | string | المفتاح العام الوجهة للبرنامج |
set_program_authority
يضبط أو يزيل صلاحية الترقية لبرنامج على surfnet.
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
program_id | مطلوب | string | pubkey الخاص بالبرنامج المراد تعيين الصلاحية له |
authority | اختياري | string | الصلاحية الجديدة للبرنامج. إذا لم يتم توفيرها، سيتم تعيين صلاحية البرنامج إلى None (مما يجعله غير قابل للتغيير) |
deploy_program
ينشر برنامجًا مباشرةً على surfnet عبر كتابة بيانات الحساب (وليس عبر المعاملات).
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
program_id | مطلوب | string | pubkey الخاص بالبرنامج الجاري نشره |
binary_path | مطلوب | string | موقع ملف .so الخاص بالبرنامج (مثال: ./target/deploy/my_program.so) |
authority | اختياري | string | pubkey الخاص بالجهة المخوّلة على البرنامج بعد نشره. إذا لم يتم توفيره، لن يكون للبرنامج أي صلاحية |
idl_path | اختياري | string | موقع ملف IDL الخاص بالبرنامج (مثال: ./target/idl/my_program.json) |
reset_account
يعيد تعيين حساب على surfnet، ويزيله من ذاكرة التخزين المؤقت المحلية ليتم إعادة جلبه من الشبكة الأصلية.
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
public_key | مطلوب | string | pubkey الخاص بالحساب المراد إعادة تعيينه |
include_owned_accounts | اختياري | bool | ما إذا كان سيتم حذف جميع الحسابات المملوكة لهذا الحساب بشكل متكرر. القيمة الافتراضية هي false |
stream_account
يقوم ببث بيانات الحساب من عنوان RPC للشبكة الرئيسية إلى surfnet، مع إبقاء بيانات الحساب المحلية متزامنة مع الشبكة الرئيسية.
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
public_key | مطلوب | string | pubkey الخاص بالحساب المراد بثه |
include_owned_accounts | اختياري | bool | ما إذا كان سيتم بث جميع الحسابات المملوكة لهذا الحساب بشكل متكرر. القيمة الافتراضية هي false |
action "setup" "svm::setup_surfnet" {// Set account balanceset_account {public_key = signer.caller.public_keylamports = 999999999}// Set token balanceset_token_account {public_key = signer.caller.public_keytoken = "usdc"amount = 1000000}// Clone a programclone_program_account {source_program_id = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"destination_program_id = variable.my_program_id}// Set program authorityset_program_authority {program_id = variable.my_program_idauthority = signer.caller.public_key}// Deploy a program directlydeploy_program {program_id = variable.my_program_idbinary_path = "./target/deploy/my_program.so"idl_path = "./target/idl/my_program.json"}// Reset an account to re-fetch from upstreamreset_account {public_key = variable.some_pubkey}// Stream account data from mainnetstream_account {public_key = variable.some_pubkeyinclude_owned_accounts = true}}
Is this page helpful?