ملخص
تتفاعل البرامج مع بيئة التشغيل من خلال استدعاءات النظام التي تغطي التسجيل والتجزئة والتشفير واستدعاء البرامج المتقاطعة ومتغيرات النظام وعمليات الذاكرة والمزيد. يخصم كل استدعاء وحدات حوسبة من الميزانية المشتركة للمعاملة.
استدعاءات النظام
تتفاعل البرامج مع بيئة التشغيل من خلال استدعاءات النظام المسجلة في
create_program_runtime_environment_v1().
يخصم كل استدعاء نظام وحدات حوسبة من ميزانية الحوسبة الخاصة بالمعاملة.
تكاليف استدعاءات النظام
يتم تعريف ثوابت التكلفة الأساسية لوحدات الحوسبة لكل استدعاء نظام في
SVMTransactionExecutionCost.
تجمع بعض استدعاءات النظام هذه الثوابت في صيغ أكثر تعقيدًا في تنفيذها (على سبيل
المثال، التوسع مع حجم المدخلات أو إضافة حمل إضافي لـ syscall_base_cost). راجع
روابط مصدر استدعاء النظام الفردية أدناه للحصول على حسابات التكلفة الدقيقة.
استدعاءات النظام المتاحة
المجموعة الكاملة من استدعاءات النظام المتاحة لبرامج sBPF، كما هي مسجلة في
create_program_runtime_environment_v1().
استدعاءات النظام المقيدة بالميزات متاحة فقط عندما تكون الميزة المقابلة نشطة على
الكتلة.
تدفق التحكم
| استدعاء النظام | الوصف | المصدر |
|---|---|---|
abort | يوقف البرنامج فورًا. يتم إدراجه بواسطة LLVM للظروف غير القابلة للدفاع؛ غير مخصص للاستخدام الصريح. | SyscallAbort |
sol_panic_ | يوقف البرنامج مع اسم الملف ورقم السطر ورقم العمود للتشخيص. | SyscallPanic |
التسجيل
| استدعاء النظام | الوصف | المصدر |
|---|---|---|
sol_log_ | يسجل رسالة نصية بترميز UTF-8 في سجل البرنامج. | SyscallLog |
sol_log_64_ | يسجل خمس قيم u64 بصيغة سداسية عشرية في سجل البرنامج. | SyscallLogU64 |
sol_log_pubkey | يسجل Pubkey كنص بترميز base58 في سجل البرنامج. | SyscallLogPubkey |
sol_log_compute_units_ | يسجل وحدات الحوسبة المتبقية في سجل البرنامج. | SyscallLogBpfComputeUnits |
sol_log_data | يسجل شرائح بايت عشوائية كبيانات مشفرة بترميز base64. | SyscallLogData |
PDA
| استدعاء النظام | الوصف | المصدر |
|---|---|---|
sol_create_program_address | يشتق عنوان برنامج من البذور ومعرف البرنامج. يُرجع 1 إذا كان العنوان المشتق على منحنى Ed25519 (PDA غير صالح). | SyscallCreateProgramAddress |
sol_try_find_program_address | يجد PDA صالحًا من خلال تكرار بذور bump من 255 إلى 1. يُرجع العنوان وقيمة bump. | SyscallTryFindProgramAddress |
التجزئة
| استدعاء النظام | الوصف | المصدر |
|---|---|---|
sol_sha256 | يحسب تجزئة SHA-256 على شريحة بايت واحدة أو أكثر. | SyscallHash<Sha256Hasher> |
sol_keccak256 | يحسب تجزئة Keccak-256 على شريحة بايت واحدة أو أكثر. | SyscallHash<Keccak256Hasher> |
sol_blake3 | يحسب تجزئة Blake3 على شريحة بايت واحدة أو أكثر. مقيد بميزة. | SyscallHash<Blake3Hasher> |
sol_poseidon | يحسب تجزئة Poseidon على المدخلات. مقيد بميزة. | SyscallPoseidon |
التشفير
| استدعاء النظام | الوصف | المصدر |
|---|---|---|
sol_secp256k1_recover | يستعيد مفتاح عام secp256k1 من تجزئة رسالة موقعة ومعرف استرداد. | SyscallSecp256k1Recover |
sol_curve_validate_point | يتحقق من أن مصفوفة بايت هي نقطة صالحة على Curve25519 (Edwards أو Ristretto). مقيد بميزة. | SyscallCurvePointValidation |
sol_curve_group_op | ينفذ عمليات مجموعة Curve25519 (جمع، طرح، ضرب) على نقاط Edwards أو Ristretto. مقيد بميزة. | SyscallCurveGroupOps |
sol_curve_multiscalar_mul | ينفذ ضرب متعدد القياسات على نقاط Curve25519 Edwards أو Ristretto. مقيد بميزة. | SyscallCurveMultiscalarMultiplication |
sol_alt_bn128_group_op | ينفذ عمليات مجموعة alt_bn128 (BN254): إضافة G1، ضرب G1، وفحص الاقتران. مقيد بميزة. | SyscallAltBn128 |
sol_alt_bn128_compression | يضغط ويفك ضغط نقاط alt_bn128 G1 و G2. مقيد بميزة. | SyscallAltBn128Compression |
sol_big_mod_exp | يحسب الأس المعياري للأعداد الكبيرة (base^exp mod modulus). مقيد بميزة. | SyscallBigModExp |
CPI
| Syscall | الوصف | المصدر |
|---|---|---|
sol_invoke_signed_rust | يستدعي تعليمة عبر البرامج من برنامج Rust. يقوم بتسلسل التعليمة والحسابات وبذور الموقّع باستخدام Rust ABI. | SyscallInvokeSignedRust |
sol_invoke_signed_c | يستدعي تعليمة عبر البرامج من برنامج C. يستخدم C SolInstruction ABI للتسلسل. | SyscallInvokeSignedC |
Sysvars
| Syscall | الوصف | المصدر |
|---|---|---|
sol_get_clock_sysvar | يكتب Clock sysvar إلى مخزن مؤقت يوفره البرنامج. | SyscallGetClockSysvar |
sol_get_epoch_schedule_sysvar | يكتب EpochSchedule sysvar إلى مخزن مؤقت يوفره البرنامج. | SyscallGetEpochScheduleSysvar |
sol_get_rent_sysvar | يكتب Rent sysvar إلى مخزن مؤقت يوفره البرنامج. | SyscallGetRentSysvar |
sol_get_epoch_rewards_sysvar | يكتب EpochRewards sysvar إلى مخزن مؤقت يوفره البرنامج. | SyscallGetEpochRewardsSysvar |
sol_get_last_restart_slot | يكتب LastRestartSlot sysvar إلى مخزن مؤقت يوفره البرنامج. محدود بميزة. | SyscallGetLastRestartSlotSysvar |
sol_get_fees_sysvar | يكتب Fees sysvar المهمل إلى مخزن مؤقت يوفره البرنامج. محدود بميزة (مهمل). | SyscallGetFeesSysvar |
sol_get_sysvar | وصول عام إلى sysvar: يقرأ شريحة بايت من أي sysvar مخزن مؤقتاً بواسطة pubkey والإزاحة والطول (SIMD-0127). محدود بميزة. | SyscallGetSysvar |
عمليات الذاكرة
| Syscall | الوصف | المصدر |
|---|---|---|
sol_memcpy_ | ينسخ n بايت من المصدر إلى الوجهة. يتوقف إذا تداخلت المناطق في مساحة عنوان VM. | SyscallMemcpy |
sol_memmove_ | ينسخ n بايت من المصدر إلى الوجهة، مع معالجة المناطق المتداخلة بشكل صحيح. | SyscallMemmove |
sol_memcmp_ | يقارن n بايت من منطقتي ذاكرة. يكتب النتيجة (مقارنة أول بايت مختلف) إلى عنوان النتيجة. | SyscallMemcmp |
sol_memset_ | يملأ n بايت من منطقة ذاكرة بقيمة بايت معينة. | SyscallMemset |
بيانات البرنامج
| استدعاء النظام | الوصف | المصدر |
|---|---|---|
sol_set_return_data | يحدد بيانات الإرجاع (بحد أقصى 1,024 بايت) للتعليمة الحالية. يمكن قراءتها من قبل المستدعي بعد عودة CPI. | SyscallSetReturnData |
sol_get_return_data | يقرأ بيانات الإرجاع التي حددها أحدث CPI. يُرجع طول البيانات ومعرف البرنامج الذي حددها. | SyscallGetReturnData |
sol_get_processed_sibling_instruction | يسترجع تعليمة شقيقة تم تنفيذها مسبقاً على نفس مستوى المكدس (بواسطة الفهرس العكسي). يُرجع معرف البرنامج والبيانات والبيانات الوصفية للحساب. | SyscallGetProcessedSiblingInstruction |
sol_get_stack_height | يُرجع ارتفاع مكدس الاستدعاء الحالي. الارتفاع 1 = تعليمة المستوى الأعلى؛ كل CPI يزيد بمقدار 1. | SyscallGetStackHeight |
الحوسبة
| استدعاء النظام | الوصف | المصدر |
|---|---|---|
sol_remaining_compute_units | يُرجع عدد وحدات الحوسبة المتبقية في ميزانية المعاملة. مقيد بميزة. | SyscallRemainingComputeUnits |
حصة الحقبة
| استدعاء النظام | الوصف | المصدر |
|---|---|---|
sol_get_epoch_stake | يُرجع إجمالي حصة الكتلة (مؤشر فارغ) أو الحصة المفوضة لحساب تصويت معين للحقبة الحالية (SIMD-0133). مقيد بميزة. | SyscallGetEpochStake |
تخصيص الذاكرة
| استدعاء النظام | الوصف | المصدر |
|---|---|---|
sol_alloc_free_ | مخصص الزيادة القديم لتخصيص الذاكرة الديناميكي. معطل للنشر الجديد؛ متاح فقط للبرامج المنشورة قبل بوابة الميزة. | SyscallAllocFree |
Is this page helpful?