Syscall referansı

Özet

Programlar, logging, hashing, kriptografi, CPI, sysvars, bellek işlemleri ve daha fazlasını kapsayan syscall'lar aracılığıyla runtime ile etkileşime girer. Her biri, transaction'ın paylaşılan bütçesinden compute unit'leri düşer.

Syscall'lar

Programlar, create_program_runtime_environment_v1() içinde kayıtlı syscall'lar aracılığıyla runtime ile etkileşime girer. Her syscall, transaction'ın compute budget'ından compute unit'leri düşer.

Syscall maliyetleri

Her syscall'ın temel compute unit maliyet sabitleri SVMTransactionExecutionCost içinde tanımlanmıştır. Bazı syscall'lar bu sabitleri implementasyonlarında daha karmaşık formüllerde birleştirir (örneğin, input boyutuyla ölçekleme veya syscall_base_cost overhead'i ekleme). Tam maliyet hesaplamaları için aşağıdaki bireysel syscall kaynak linklerine bakın.

Mevcut syscall'lar

create_program_runtime_environment_v1() içinde kayıtlı olduğu şekliyle sBPF programlarına sunulan eksiksiz syscall seti. Feature-gated syscall'lar yalnızca ilgili feature cluster'da aktif olduğunda kullanılabilir.

Kontrol akışı

SyscallAçıklamaKaynak
abortProgramı anında durdurur. LLVM tarafından savunulamaz durumlar için eklenir; açık kullanım için tasarlanmamıştır.SyscallAbort
sol_panic_Programı tanılama için dosya adı, satır ve sütun numarasıyla durdurur.SyscallPanic

Logging

SyscallAçıklamaKaynak
sol_log_Program log'una UTF-8 string mesajı kaydeder.SyscallLog
sol_log_64_Program log'una beş u64 değerini hex olarak kaydeder.SyscallLogU64
sol_log_pubkeyProgram log'una bir Pubkey'i base58 string olarak kaydeder.SyscallLogPubkey
sol_log_compute_units_Program log'una kalan compute unit'leri kaydeder.SyscallLogBpfComputeUnits
sol_log_dataRastgele byte slice'ları base64-encoded data olarak kaydeder.SyscallLogData

PDA

SyscallAçıklamaKaynak
sol_create_program_addressSeed'lerden ve program ID'sinden bir program adresi türetir. Türetilen adres Ed25519 eğrisi üzerindeyse (geçersiz PDA) 1 döndürür.SyscallCreateProgramAddress
sol_try_find_program_addressBump seed'lerini 255'ten 1'e kadar iterasyon yaparak geçerli bir PDA bulur. Adresi ve bump'ı döndürür.SyscallTryFindProgramAddress

Hashing

SyscallAçıklamaKaynak
sol_sha256Bir veya daha fazla bayt dilimi üzerinde SHA-256 hash hesaplar.SyscallHash<Sha256Hasher>
sol_keccak256Bir veya daha fazla bayt dilimi üzerinde Keccak-256 hash hesaplar.SyscallHash<Keccak256Hasher>
sol_blake3Bir veya daha fazla bayt dilimi üzerinde Blake3 hash hesaplar. Özellik kapılı.SyscallHash<Blake3Hasher>
sol_poseidonGirdiler üzerinde Poseidon hash hesaplar. Özellik kapılı.SyscallPoseidon

Kriptografi

SyscallAçıklamaKaynak
sol_secp256k1_recoverİmzalı mesaj hash'i ve kurtarma ID'sinden secp256k1 public key'i kurtarır.SyscallSecp256k1Recover
sol_curve_validate_pointBir bayt dizisinin Curve25519 (Edwards veya Ristretto) üzerinde geçerli bir nokta olduğunu doğrular. Özellik kapılı.SyscallCurvePointValidation
sol_curve_group_opEdwards veya Ristretto noktaları üzerinde Curve25519 grup işlemleri (toplama, çıkarma, çarpma) gerçekleştirir. Özellik kapılı.SyscallCurveGroupOps
sol_curve_multiscalar_mulCurve25519 Edwards veya Ristretto noktaları üzerinde çoklu skaler çarpım gerçekleştirir. Özellik kapılı.SyscallCurveMultiscalarMultiplication
sol_alt_bn128_group_opalt_bn128 (BN254) grup işlemleri gerçekleştirir: G1 toplama, G1 çarpma ve eşleştirme kontrolü. Özellik kapılı.SyscallAltBn128
sol_alt_bn128_compressionalt_bn128 G1 ve G2 noktalarını sıkıştırır ve açar. Özellik kapılı.SyscallAltBn128Compression
sol_big_mod_expBüyük tamsayı modüler üs alma (base^exp mod modulus) hesaplar. Özellik kapılı.SyscallBigModExp

CPI

SyscallAçıklamaKaynak
sol_invoke_signed_rustBir Rust programından çapraz program talimatı çağırır. Rust ABI kullanarak talimat, hesaplar ve imzalayan seed'lerini serileştirir.SyscallInvokeSignedRust
sol_invoke_signed_cBir C programından çapraz program talimatı çağırır. Serileştirme için C SolInstruction ABI'sini kullanır.SyscallInvokeSignedC

Sysvars

SyscallAçıklamaKaynak
sol_get_clock_sysvarClock sysvar'ını program tarafından sağlanan bir tampona yazar.SyscallGetClockSysvar
sol_get_epoch_schedule_sysvarEpochSchedule sysvar'ını program tarafından sağlanan bir tampona yazar.SyscallGetEpochScheduleSysvar
sol_get_rent_sysvarRent sysvar'ını program tarafından sağlanan bir tampona yazar.SyscallGetRentSysvar
sol_get_epoch_rewards_sysvarEpochRewards sysvar'ını program tarafından sağlanan bir tampona yazar.SyscallGetEpochRewardsSysvar
sol_get_last_restart_slotLastRestartSlot sysvar'ını program tarafından sağlanan bir tampona yazar. Özellik kapılı.SyscallGetLastRestartSlotSysvar
sol_get_fees_sysvarKullanımdan kaldırılmış Fees sysvar'ını program tarafından sağlanan bir tampona yazar. Özellik kapılı (kullanımdan kaldırıldı).SyscallGetFeesSysvar
sol_get_sysvarGenel sysvar erişimi: herhangi bir önbelleğe alınmış sysvar'dan pubkey, offset ve uzunluğa göre bir bayt dilimi okur (SIMD-0127). Özellik kapılı.SyscallGetSysvar

Bellek işlemleri

SyscallAçıklamaKaynak
sol_memcpy_Kaynaktan hedefe n bayt kopyalar. VM adres alanında bölgeler çakışırsa iptal eder.SyscallMemcpy
sol_memmove_Kaynaktan hedefe n bayt kopyalar, çakışan bölgeleri doğru şekilde işler.SyscallMemmove
sol_memcmp_İki bellek bölgesinin n baytını karşılaştırır. Sonucu (ilk farklı bayt karşılaştırması) bir sonuç adresine yazar.SyscallMemcmp
sol_memset_Bir bellek bölgesinin n baytını verilen bir bayt değeriyle doldurur.SyscallMemset

Program verisi

SyscallAçıklamaKaynak
sol_set_return_dataMevcut talimat için dönüş verisi ayarlar (maksimum 1.024 bayt). CPI döndükten sonra çağıran tarafından okunabilir.SyscallSetReturnData
sol_get_return_dataEn son CPI tarafından ayarlanan dönüş verisini okur. Veri uzunluğunu ve onu ayarlayan program ID'sini döndürür.SyscallGetReturnData
sol_get_processed_sibling_instructionAynı yığın yüksekliğinde daha önce yürütülmüş bir kardeş talimatı (ters indeks ile) alır. Program ID'si, veri ve hesap meta verilerini döndürür.SyscallGetProcessedSiblingInstruction
sol_get_stack_heightMevcut çağrı yığını yüksekliğini döndürür. Yükseklik 1 = üst seviye talimat; her CPI 1 artırır.SyscallGetStackHeight

Hesaplama

SyscallAçıklamaKaynak
sol_remaining_compute_unitsİşlem bütçesinde kalan hesaplama birimi sayısını döndürür. Özellik kapılı.SyscallRemainingComputeUnits

Epoch stake

SyscallAçıklamaKaynak
sol_get_epoch_stakeToplam küme stake'ini (null pointer) veya mevcut epoch için belirli bir oy hesabının delege edilmiş stake'ini döndürür (SIMD-0133). Özellik kapılı.SyscallGetEpochStake

Bellek tahsisi

SyscallAçıklamaKaynak
sol_alloc_free_Dinamik bellek tahsisi için eski bump tahsis edici. Yeni dağıtımlar için devre dışı; yalnızca özellik kapısından önce dağıtılan programlar için kullanılabilir.SyscallAllocFree

Is this page helpful?

İçindekiler

Sayfayı Düzenle

Yönetici

© 2026 Solana Vakfı.
Tüm hakları saklıdır.
Bağlanın