وثائق سولاناالبنية التحتية كرمزإضافة SVM

وظائف SVM

هذه الوظائف متاحة عند استخدام إضافة SVM لسولانا وسلاسل الكتل المتوافقة مع SVM.

system_program_id

svm::system_program_id تُعيد معرّف System Program، 11111111111111111111111111111111.

output "system_program_id" {
value = svm::system_program_id()
}
// > 11111111111111111111111111111111

default_pubkey

svm::default_pubkey تُعيد مفتاحًا عامًا افتراضيًا، 11111111111111111111111111111111.

output "default_pubkey" {
value = svm::default_pubkey()
}
// > 11111111111111111111111111111111

get_instruction_data_from_idl_path

svm::get_instruction_data_from_idl_path تُنشئ instruction data مُشفَّرة لاستدعاء برنامج، وتوفر فحص الأنواع والتسلسل بناءً على ملف IDL المُقدَّم.

المدخلات

الاسممطلوبالنوعالوصف
idl_pathمطلوبstringالمسار، نسبةً إلى txtx.yml، لملف IDL .json
instruction_nameمطلوبstringاسم التعليمة المراد توليد البيانات لها
argumentsاختياريarray[string]وسائط التعليمة المراد توليد البيانات لها
output "data" {
value = svm::get_instruction_data_from_idl("/path/to/idl.json", "my_instruction", ["arg1", "arg2"])
}
// > data: 0x95763bdcc47fa1b305000000776f726c64

get_instruction_data_from_idl

svm::get_instruction_data_from_idl تُنشئ instruction data مُشفَّرة لاستدعاء برنامج، وتوفر فحص الأنواع والتسلسل بناءً على بيانات IDL المُقدَّمة.

المدخلات

الاسممطلوبالنوعالوصف
idlمطلوبstring | SVM_IDLبرنامج IDL
instruction_nameمطلوبstringاسم التعليمة المراد توليد البيانات لها، كما هو مُفهرَس في IDL
argumentsاختياريarray[string]وسائط التعليمة المراد توليد البيانات لها
output "data" {
value = svm::get_instruction_data_from_idl(variable.contract.idl, "my_instruction", ["arg1", "arg2"])
}
// > data: 0x95763bdcc47fa1b305000000776f726c64

get_program_from_anchor_project

svm::get_program_from_anchor_project تسترجع مخرجات نشر البرنامج لبرنامج في مشروع Anchor.

المدخلات

الاسممطلوبالنوعالوصف
program_nameمطلوبstringاسم البرنامج الجاري نشره
keypair_pathاختياريstringموقع ملف keypair الخاص بالبرنامج
idl_pathاختياريstringموقع ملف IDL الخاص بالبرنامج
bin_pathاختياريstringموقع الملف الثنائي للبرنامج
variable "contract" {
value = svm::get_program_from_anchor_project("my_program")
}
output "idl" {
value = variable.contract.idl
}

get_program_from_native_project

يسترجع svm::get_program_from_native_project مخرجات نشر البرنامج لبرنامج غير مبني على Anchor.

المدخلات

الاسممطلوبالنوعالوصف
program_nameمطلوبstringاسم البرنامج الجاري نشره
keypair_pathاختياريstringموقع ملف keypair الخاص بالبرنامج
idl_pathاختياريstringموقع ملف IDL الخاص بالبرنامج
bin_pathاختياريstringموقع الملف الثنائي للبرنامج
variable "contract" {
value = svm::get_program_from_native_project("my_program")
}
output "idl" {
value = variable.contract.idl
}

sol_to_lamports

يحوّل svm::sol_to_lamports مقدار SOL المُدخل إلى lamport.

output "lamports" {
value = svm::sol_to_lamports(1.1)
}
// lamports: 1100000000

lamports_to_sol

يحوّل svm::lamports_to_sol عدد lamport المُدخل إلى SOL.

output "sol" {
value = svm::lamports_to_sol(1100000000)
}
// sol: 1.1

find_pda

يبحث svm::find_pda عن PDA صالح باستخدام معرّف البرنامج والبذور المُدخلة.

المدخلات

الاسممطلوبالنوعالوصف
program_idمطلوبstringعنوان البرنامج المشتق منه PDA
seedsاختياريarray[string]مصفوفة اختيارية من البذور (بحد أقصى 16، بحجم 32 بايت لكل منها)
variable "pda" {
value = svm::find_pda("3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6", ["data"])
}
output "pda" {
value = std::encode_base58(variable.pda.pda)
}
output "bump" {
value = variable.pda.bump_seed
}
// > pda: 4amHoWMBgLkPfM8Nq9ZP33Liq9FCuqrLoU1feejkdsUJ
// > bump: 252

get_associated_token_account

svm::get_associated_token_account يحسب عنوان associated token account للمحفظة وعناوين سك الرموز المقدمة.

المدخلات

الاسممطلوبالنوعالوصف
wallet_addressمطلوبنصعنوان المحفظة
token_mint_addressاختيارينصعنوان سك الرمز
variable "token_account" {
value = svm::get_associated_token_account(signer.caller.address, "So11111111111111111111111111111111111111112")
}

create_token_account_instruction

svm::create_token_account_instruction ينشئ بايتات التعليمات الخام لإنشاء associated token account.

المدخلات

الاسممطلوبالنوعالوصف
funding_addressمطلوبنصعنوان حساب التمويل
wallet_addressمطلوبنصعنوان المحفظة
token_mint_addressاختيارينصعنوان سك الرمز
token_program_idاختيارينصعنوان Token Program
action "call" "svm::process_instructions" {
signers = [signer.caller]
instruction {
raw_bytes = svm::create_token_account_instruction(
signer.caller.address, // funding address
signer.caller.address, // wallet address
variable.token_mint, // token mint address
variable.token_program // token program id
)
}
}

u64

svm::u64 ينشئ تمثيلاً بصيغة مصفوفة بايت لعدد صحيح من نوع u64، مناسب للاستخدام كـ seed في اشتقاق PDA.

المدخلات

الاسممطلوبالنوعالوصف
valueمطلوبعدد صحيحالعدد الصحيح u64 المراد تحويله إلى مصفوفة بايت
variable "pda" {
value = svm::find_pda("3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6", [svm::u64(1000000000)])
}

i64

svm::i64 ينشئ تمثيلاً بصيغة مصفوفة بايت لعدد صحيح من نوع i64، مناسب للاستخدام كـ seed في اشتقاق PDA.

المدخلات

الاسممطلوبالنوعالوصف
valueمطلوبعدد صحيحالعدد الصحيح i64 المراد تحويله إلى مصفوفة بايت
variable "pda" {
value = svm::find_pda("3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6", [svm::i64(-1000000000)])
}

Is this page helpful?