Samenvatting
Programma's communiceren met de runtime via syscalls voor logging, hashing, cryptografie, CPI, sysvars, geheugenbewerkingen en meer. Elke syscall trekt compute units af van het gedeelde budget van de transactie.
Syscalls
Programma's communiceren met de runtime via syscalls geregistreerd in
create_program_runtime_environment_v1().
Elke syscall trekt compute units af van het compute budget van de transactie.
Syscall-kosten
De basis compute unit-kostenconstanten van elke syscall zijn gedefinieerd in
SVMTransactionExecutionCost.
Sommige syscalls combineren deze constanten tot complexere formules in hun
implementatie (bijv. schalen met invoergrootte of toevoegen van
syscall_base_cost overhead). Zie de individuele syscall-bronlinks hieronder
voor exacte kostenberekeningen.
Beschikbare syscalls
De volledige set syscalls beschikbaar voor sBPF-programma's, zoals geregistreerd
in
create_program_runtime_environment_v1().
Feature-gated syscalls zijn alleen beschikbaar wanneer de bijbehorende feature
actief is op het cluster.
Controleflow
| Syscall | Beschrijving | Bron |
|---|---|---|
abort | Stopt het programma onmiddellijk. Ingevoegd door LLVM voor onhoudbare condities; niet bedoeld voor expliciet gebruik. | SyscallAbort |
sol_panic_ | Stopt het programma met een bestandsnaam, regelnummer en kolomnummer voor diagnostiek. | SyscallPanic |
Logging
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_log_ | Logt een UTF-8 string-bericht naar het programmalogboek. | SyscallLog |
sol_log_64_ | Logt vijf u64 waarden als hex naar het programmalogboek. | SyscallLogU64 |
sol_log_pubkey | Logt een Pubkey als een base58-string naar het programmalogboek. | SyscallLogPubkey |
sol_log_compute_units_ | Logt de resterende compute units naar het programmalogboek. | SyscallLogBpfComputeUnits |
sol_log_data | Logt willekeurige byte-slices als base64-gecodeerde data. | SyscallLogData |
PDA
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_create_program_address | Leidt een programma-adres af van seeds en een programma-ID. Retourneert 1 als het afgeleide adres op de Ed25519-curve ligt (ongeldige PDA). | SyscallCreateProgramAddress |
sol_try_find_program_address | Vindt een geldige PDA door bump seeds te itereren van 255 naar 1. Retourneert het adres en de bump. | SyscallTryFindProgramAddress |
Hashing
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_sha256 | Berekent een SHA-256 hash over een of meer byte slices. | SyscallHash<Sha256Hasher> |
sol_keccak256 | Berekent een Keccak-256 hash over een of meer byte slices. | SyscallHash<Keccak256Hasher> |
sol_blake3 | Berekent een Blake3 hash over een of meer byte slices. Feature-gated. | SyscallHash<Blake3Hasher> |
sol_poseidon | Berekent een Poseidon hash over inputs. Feature-gated. | SyscallPoseidon |
Cryptografie
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_secp256k1_recover | Herstelt een secp256k1 publieke sleutel uit een ondertekende berichthash en recovery-ID. | SyscallSecp256k1Recover |
sol_curve_validate_point | Valideert dat een byte array een geldig punt is op Curve25519 (Edwards of Ristretto). Feature-gated. | SyscallCurvePointValidation |
sol_curve_group_op | Voert Curve25519 groepsbewerkingen uit (optellen, aftrekken, vermenigvuldigen) op Edwards of Ristretto punten. Feature-gated. | SyscallCurveGroupOps |
sol_curve_multiscalar_mul | Voert multi-scalaire vermenigvuldiging uit op Curve25519 Edwards of Ristretto punten. Feature-gated. | SyscallCurveMultiscalarMultiplication |
sol_alt_bn128_group_op | Voert alt_bn128 (BN254) groepsbewerkingen uit: G1 optelling, G1 vermenigvuldiging en pairing check. Feature-gated. | SyscallAltBn128 |
sol_alt_bn128_compression | Comprimeert en decomprimeert alt_bn128 G1 en G2 punten. Feature-gated. | SyscallAltBn128Compression |
sol_big_mod_exp | Berekent big integer modulaire exponentiatie (base^exp mod modulus). Feature-gated. | SyscallBigModExp |
CPI
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_invoke_signed_rust | Roept een cross-program instructie aan vanuit een Rust-programma. Serialiseert instructie, accounts en signer seeds met behulp van de Rust ABI. | SyscallInvokeSignedRust |
sol_invoke_signed_c | Roept een cross-program instructie aan vanuit een C-programma. Gebruikt de C SolInstruction ABI voor serialisatie. | SyscallInvokeSignedC |
Sysvars
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_get_clock_sysvar | Schrijft de Clock sysvar naar een door het programma aangeleverde buffer. | SyscallGetClockSysvar |
sol_get_epoch_schedule_sysvar | Schrijft de EpochSchedule sysvar naar een door het programma aangeleverde buffer. | SyscallGetEpochScheduleSysvar |
sol_get_rent_sysvar | Schrijft de Rent sysvar naar een door het programma aangeleverde buffer. | SyscallGetRentSysvar |
sol_get_epoch_rewards_sysvar | Schrijft de EpochRewards sysvar naar een door het programma aangeleverde buffer. | SyscallGetEpochRewardsSysvar |
sol_get_last_restart_slot | Schrijft de LastRestartSlot sysvar naar een door het programma aangeleverde buffer. Feature-gated. | SyscallGetLastRestartSlotSysvar |
sol_get_fees_sysvar | Schrijft de verouderde Fees sysvar naar een door het programma aangeleverde buffer. Feature-gated (verouderd). | SyscallGetFeesSysvar |
sol_get_sysvar | Generieke sysvar-toegang: leest een byte slice van elke gecachte sysvar op basis van pubkey, offset en lengte (SIMD-0127). Feature-gated. | SyscallGetSysvar |
Geheugenbewerkingen
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_memcpy_ | Kopieert n bytes van bron naar bestemming. Breekt af als regio's overlappen in VM-adresruimte. | SyscallMemcpy |
sol_memmove_ | Kopieert n bytes van bron naar bestemming, waarbij overlappende regio's correct worden afgehandeld. | SyscallMemmove |
sol_memcmp_ | Vergelijkt n bytes van twee geheugenregio's. Schrijft het resultaat (vergelijking van eerste afwijkende byte) naar een resultaatadres. | SyscallMemcmp |
sol_memset_ | Vult n bytes van een geheugenregio met een gegeven bytewaarde. | SyscallMemset |
Programgegevens
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_set_return_data | Stelt retourgegevens in (max 1.024 bytes) voor de huidige instructie. Leesbaar door de aanroeper nadat de CPI terugkeert. | SyscallSetReturnData |
sol_get_return_data | Leest de retourgegevens die zijn ingesteld door de meest recente CPI. Retourneert de gegevenslengte en de program-ID die deze heeft ingesteld. | SyscallGetReturnData |
sol_get_processed_sibling_instruction | Haalt een eerder uitgevoerde sibling-instructie op dezelfde stackhoogte op (via omgekeerde index). Retourneert program-ID, gegevens en accountmeta's. | SyscallGetProcessedSiblingInstruction |
sol_get_stack_height | Retourneert de huidige call stack-hoogte. Hoogte 1 = instructie op topniveau; elke CPI verhoogt met 1. | SyscallGetStackHeight |
Compute
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_remaining_compute_units | Retourneert het aantal compute-eenheden dat nog beschikbaar is in het transactiebudget. Feature-gated. | SyscallRemainingComputeUnits |
Epoch-stake
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_get_epoch_stake | Retourneert totale clusterstake (null-pointer) of de gedelegeerde stake van een specifiek stemaccount voor de huidige epoch (SIMD-0133). Feature-gated. | SyscallGetEpochStake |
Geheugentoewijzing
| Syscall | Beschrijving | Bron |
|---|---|---|
sol_alloc_free_ | Legacy bump-allocator voor dynamische geheugentoewijzing. Uitgeschakeld voor nieuwe implementaties; alleen beschikbaar voor programma's die zijn geïmplementeerd vóór de feature gate. | SyscallAllocFree |
Is this page helpful?