Referensi syscall

Ringkasan

Program berinteraksi dengan runtime melalui syscall yang mencakup logging, hashing, kriptografi, CPI, sysvars, operasi memori, dan lainnya. Setiap syscall mengurangi compute unit dari budget bersama transaksi.

Syscall

Program berinteraksi dengan runtime melalui syscall yang terdaftar di create_program_runtime_environment_v1(). Setiap syscall mengurangi compute unit dari compute budget transaksi.

Biaya syscall

Konstanta biaya compute unit dasar setiap syscall didefinisikan di SVMTransactionExecutionCost. Beberapa syscall menggabungkan konstanta ini menjadi formula yang lebih kompleks dalam implementasinya (misalnya, scaling dengan ukuran input atau menambahkan overhead syscall_base_cost). Lihat link source syscall individual di bawah untuk kalkulasi biaya yang tepat.

Syscall yang tersedia

Set lengkap syscall yang tersedia untuk program sBPF, sebagaimana terdaftar di create_program_runtime_environment_v1(). Syscall yang dibatasi fitur hanya tersedia ketika fitur yang sesuai aktif di cluster.

Control flow

SyscallDeskripsiSource
abortMenghentikan program secara langsung. Disisipkan oleh LLVM untuk kondisi yang tidak dapat dipertahankan; tidak dimaksudkan untuk penggunaan eksplisit.SyscallAbort
sol_panic_Menghentikan program dengan nama file, baris, dan nomor kolom untuk diagnostik.SyscallPanic

Logging

SyscallDeskripsiSource
sol_log_Mencatat pesan string UTF-8 ke program log.SyscallLog
sol_log_64_Mencatat lima nilai u64 sebagai hex ke program log.SyscallLogU64
sol_log_pubkeyMencatat Pubkey sebagai string base58 ke program log.SyscallLogPubkey
sol_log_compute_units_Mencatat sisa compute unit ke program log.SyscallLogBpfComputeUnits
sol_log_dataMencatat byte slice arbitrer sebagai data yang di-encode base64.SyscallLogData

PDA

SyscallDeskripsiSumber
sol_create_program_addressMenurunkan alamat program dari seed dan ID program. Mengembalikan 1 jika alamat yang diturunkan berada pada kurva Ed25519 (PDA tidak valid).SyscallCreateProgramAddress
sol_try_find_program_addressMenemukan PDA yang valid dengan melakukan iterasi bump seed dari 255 hingga 1. Mengembalikan alamat dan bump.SyscallTryFindProgramAddress

Hashing

SyscallDeskripsiSumber
sol_sha256Menghitung hash SHA-256 pada satu atau lebih slice byte.SyscallHash<Sha256Hasher>
sol_keccak256Menghitung hash Keccak-256 pada satu atau lebih slice byte.SyscallHash<Keccak256Hasher>
sol_blake3Menghitung hash Blake3 pada satu atau lebih slice byte. Dibatasi fitur.SyscallHash<Blake3Hasher>
sol_poseidonMenghitung hash Poseidon pada input. Dibatasi fitur.SyscallPoseidon

Kriptografi

SyscallDeskripsiSumber
sol_secp256k1_recoverMemulihkan kunci publik secp256k1 dari hash pesan yang ditandatangani dan ID pemulihan.SyscallSecp256k1Recover
sol_curve_validate_pointMemvalidasi bahwa array byte adalah titik yang valid pada Curve25519 (Edwards atau Ristretto). Dibatasi fitur.SyscallCurvePointValidation
sol_curve_group_opMelakukan operasi grup Curve25519 (tambah, kurang, kali) pada titik Edwards atau Ristretto. Dibatasi fitur.SyscallCurveGroupOps
sol_curve_multiscalar_mulMelakukan perkalian multi-skalar pada titik Curve25519 Edwards atau Ristretto. Dibatasi fitur.SyscallCurveMultiscalarMultiplication
sol_alt_bn128_group_opMelakukan operasi grup alt_bn128 (BN254): penambahan G1, perkalian G1, dan pemeriksaan pairing. Dibatasi fitur.SyscallAltBn128
sol_alt_bn128_compressionMengompresi dan mendekompresi titik G1 dan G2 alt_bn128. Dibatasi fitur.SyscallAltBn128Compression
sol_big_mod_expMenghitung eksponensiasi modular bilangan bulat besar (base^exp mod modulus). Dibatasi fitur.SyscallBigModExp

CPI

SyscallDeskripsiSumber
sol_invoke_signed_rustMemanggil instruksi cross-program dari program Rust. Menserialisasi instruksi, akun, dan signer seeds menggunakan Rust ABI.SyscallInvokeSignedRust
sol_invoke_signed_cMemanggil instruksi cross-program dari program C. Menggunakan C SolInstruction ABI untuk serialisasi.SyscallInvokeSignedC

Sysvars

SyscallDeskripsiSumber
sol_get_clock_sysvarMenulis sysvar Clock ke buffer yang disediakan program.SyscallGetClockSysvar
sol_get_epoch_schedule_sysvarMenulis sysvar EpochSchedule ke buffer yang disediakan program.SyscallGetEpochScheduleSysvar
sol_get_rent_sysvarMenulis sysvar Rent ke buffer yang disediakan program.SyscallGetRentSysvar
sol_get_epoch_rewards_sysvarMenulis sysvar EpochRewards ke buffer yang disediakan program.SyscallGetEpochRewardsSysvar
sol_get_last_restart_slotMenulis sysvar LastRestartSlot ke buffer yang disediakan program. Dibatasi fitur.SyscallGetLastRestartSlotSysvar
sol_get_fees_sysvarMenulis sysvar Fees yang sudah tidak digunakan ke buffer yang disediakan program. Dibatasi fitur (deprecated).SyscallGetFeesSysvar
sol_get_sysvarAkses sysvar generik: membaca byte slice dari sysvar yang di-cache berdasarkan pubkey, offset, dan panjangnya (SIMD-0127). Dibatasi fitur.SyscallGetSysvar

Operasi memori

SyscallDeskripsiSumber
sol_memcpy_Menyalin n byte dari sumber ke tujuan. Membatalkan jika region tumpang tindih dalam ruang alamat VM.SyscallMemcpy
sol_memmove_Menyalin n byte dari sumber ke tujuan, menangani region yang tumpang tindih dengan benar.SyscallMemmove
sol_memcmp_Membandingkan n byte dari dua region memori. Menulis hasil (perbandingan byte berbeda pertama) ke alamat hasil.SyscallMemcmp
sol_memset_Mengisi n byte dari region memori dengan nilai byte tertentu.SyscallMemset

Data program

SyscallDeskripsiSumber
sol_set_return_dataMenetapkan data pengembalian (maksimal 1.024 byte) untuk instruksi saat ini. Dapat dibaca oleh pemanggil setelah CPI kembali.SyscallSetReturnData
sol_get_return_dataMembaca data pengembalian yang ditetapkan oleh CPI terbaru. Mengembalikan panjang data dan ID program yang menetapkannya.SyscallGetReturnData
sol_get_processed_sibling_instructionMengambil instruksi sibling yang sebelumnya dieksekusi pada tingkat stack yang sama (berdasarkan indeks terbalik). Mengembalikan ID program, data, dan meta akun.SyscallGetProcessedSiblingInstruction
sol_get_stack_heightMengembalikan tinggi stack panggilan saat ini. Tinggi 1 = instruksi tingkat atas; setiap CPI bertambah 1.SyscallGetStackHeight

Komputasi

SyscallDeskripsiSumber
sol_remaining_compute_unitsMengembalikan jumlah unit komputasi yang tersisa dalam anggaran transaksi. Dibatasi fitur.SyscallRemainingComputeUnits

Stake epoch

SyscallDeskripsiSumber
sol_get_epoch_stakeMengembalikan total stake cluster (pointer null) atau stake yang didelegasikan akun vote tertentu untuk epoch saat ini (SIMD-0133). Dibatasi fitur.SyscallGetEpochStake

Alokasi memori

SyscallDeskripsiSumber
sol_alloc_free_Bump allocator lama untuk alokasi memori dinamis. Dinonaktifkan untuk deployment baru; hanya tersedia untuk program yang di-deploy sebelum feature gate.SyscallAllocFree

Is this page helpful?

Daftar Isi

Edit Halaman

Dikelola oleh

© 2026 Yayasan Solana.
Semua hak dilindungi.
Terhubung