Syscall-viite

Yhteenveto

Ohjelmat ovat vuorovaikutuksessa ajonaikaympäristön kanssa syscallien kautta, jotka kattavat lokituksen, hajautuksen, kryptografian, CPI:n, sysvarit, muistitoiminnot ja muut. Jokainen vähentää laskentayksiköitä transaktion jaetusta budjetista.

Syscallit

Ohjelmat ovat vuorovaikutuksessa ajonaikaympäristön kanssa syscallien kautta, jotka on rekisteröity tiedostossa create_program_runtime_environment_v1(). Jokainen syscall vähentää laskentayksiköitä transaktion laskentabudjetista.

Syscall-kustannukset

Jokaisen syscallin peruslaskentayksikkökustannusvakiot on määritelty tiedostossa SVMTransactionExecutionCost. Jotkut syscallit yhdistävät nämä vakiot monimutkaisemmiksi kaavoiksi toteutuksessaan (esim. skaalautuminen syötteen koon mukaan tai syscall_base_cost-yleiskustannusten lisääminen). Katso tarkat kustannuslaskelmat yksittäisten syscallien lähdekoodilinkeistä alla.

Saatavilla olevat syscallit

Täydellinen joukko syscalleja, jotka ovat saatavilla sBPF-ohjelmille, kuten rekisteröity tiedostossa create_program_runtime_environment_v1(). Ominaisuusrajoitetut syscallit ovat saatavilla vain, kun vastaava ominaisuus on aktiivinen klusterissa.

Ohjausvirta

SyscallKuvausLähde
abortPysäyttää ohjelman välittömästi. LLVM lisää tämän kestämättömissä tilanteissa; ei tarkoitettu suoraan käytettäväksi.SyscallAbort
sol_panic_Pysäyttää ohjelman tiedostonimellä, rivinumerolla ja sarakenumerolla diagnostiikkaa varten.SyscallPanic

Lokitus

SyscallKuvausLähde
sol_log_Kirjaa UTF-8-merkkijonoviestin ohjelmalokkiin.SyscallLog
sol_log_64_Kirjaa viisi u64-arvoa heksadesimaaleina ohjelmalokkiin.SyscallLogU64
sol_log_pubkeyKirjaa Pubkey-avaimen base58-merkkijonona ohjelmalokkiin.SyscallLogPubkey
sol_log_compute_units_Kirjaa jäljellä olevat laskentayksiköt ohjelmalokkiin.SyscallLogBpfComputeUnits
sol_log_dataKirjaa mielivaltaisia tavujonoja base64-koodattuna datana.SyscallLogData

PDA

SyscallKuvausLähde
sol_create_program_addressJohtaa ohjelmaosoitteen siemenistä ja ohjelma-ID:stä. Palauttaa 1, jos johdettu osoite on Ed25519-käyrällä (virheellinen PDA).SyscallCreateProgramAddress
sol_try_find_program_addressEtsii kelvollisen PDA:n iteroimalla bump-siemeniä 255:stä alas 1:een. Palauttaa osoitteen ja bumpin.SyscallTryFindProgramAddress

Hajautus

SyscallKuvausLähde
sol_sha256Laskee SHA-256-hajautuksen yhdestä tai useammasta tavuviipaleesta.SyscallHash<Sha256Hasher>
sol_keccak256Laskee Keccak-256-hajautuksen yhdestä tai useammasta tavuviipaleesta.SyscallHash<Keccak256Hasher>
sol_blake3Laskee Blake3-hajautuksen yhdestä tai useammasta tavuviipaleesta. Ominaisuusrajattu.SyscallHash<Blake3Hasher>
sol_poseidonLaskee Poseidon-hajautuksen syötteistä. Ominaisuusrajattu.SyscallPoseidon

Kryptografia

SyscallKuvausLähde
sol_secp256k1_recoverPalauttaa secp256k1-julkisen avaimen allekirjoitetusta viestin hajautuksesta ja palautus-ID:stä.SyscallSecp256k1Recover
sol_curve_validate_pointValidoi, että tavutaulukko on kelvollinen piste Curve25519:llä (Edwards tai Ristretto). Ominaisuusrajattu.SyscallCurvePointValidation
sol_curve_group_opSuorittaa Curve25519-ryhmäoperaatioita (yhteenlasku, vähennyslasku, kertolasku) Edwards- tai Ristretto-pisteillä. Ominaisuusrajattu.SyscallCurveGroupOps
sol_curve_multiscalar_mulSuorittaa moniskalaarikertolaskun Curve25519 Edwards- tai Ristretto-pisteillä. Ominaisuusrajattu.SyscallCurveMultiscalarMultiplication
sol_alt_bn128_group_opSuorittaa alt_bn128 (BN254) -ryhmäoperaatioita: G1-yhteenlasku, G1-kertolasku ja paritarkistus. Ominaisuusrajattu.SyscallAltBn128
sol_alt_bn128_compressionPakkaa ja purkaa alt_bn128 G1- ja G2-pisteitä. Ominaisuusrajattu.SyscallAltBn128Compression
sol_big_mod_expLaskee suurten kokonaislukujen modulaarisen potenssilaskun (base^exp mod modulus). Ominaisuusrajattu.SyscallBigModExp

CPI

SyscallKuvausLähde
sol_invoke_signed_rustKutsuu cross-program-käskyä Rust-ohjelmasta. Serialisoi käskyn, tilit ja allekirjoittajan siemenet käyttäen Rust ABI:a.SyscallInvokeSignedRust
sol_invoke_signed_cKutsuu cross-program-käskyä C-ohjelmasta. Käyttää C SolInstruction ABI:a serialisointiin.SyscallInvokeSignedC

Sysvars

SyscallKuvausLähde
sol_get_clock_sysvarKirjoittaa Clock-sysvarin ohjelman tarjoamaan puskuriin.SyscallGetClockSysvar
sol_get_epoch_schedule_sysvarKirjoittaa EpochSchedule-sysvarin ohjelman tarjoamaan puskuriin.SyscallGetEpochScheduleSysvar
sol_get_rent_sysvarKirjoittaa Rent-sysvarin ohjelman tarjoamaan puskuriin.SyscallGetRentSysvar
sol_get_epoch_rewards_sysvarKirjoittaa EpochRewards-sysvarin ohjelman tarjoamaan puskuriin.SyscallGetEpochRewardsSysvar
sol_get_last_restart_slotKirjoittaa LastRestartSlot-sysvarin ohjelman tarjoamaan puskuriin. Ominaisuusrajattu.SyscallGetLastRestartSlotSysvar
sol_get_fees_sysvarKirjoittaa vanhentuneen Fees-sysvarin ohjelman tarjoamaan puskuriin. Ominaisuusrajattu (vanhentunut).SyscallGetFeesSysvar
sol_get_sysvarYleinen sysvar-käyttö: lukee tavujonon mistä tahansa välimuistissa olevasta sysvarista sen pubkeyn, offsetin ja pituuden perusteella (SIMD-0127). Ominaisuusrajattu.SyscallGetSysvar

Muistioperaatiot

SyscallKuvausLähde
sol_memcpy_Kopioi n tavua lähteestä kohteeseen. Keskeyttää, jos alueet menevät päällekkäin VM-osoiteavaruudessa.SyscallMemcpy
sol_memmove_Kopioi n tavua lähteestä kohteeseen käsitellen päällekkäiset alueet oikein.SyscallMemmove
sol_memcmp_Vertaa n tavua kahdesta muistialueesta. Kirjoittaa tuloksen (ensimmäinen eroava tavuvertailu) tulososoitteeseen.SyscallMemcmp
sol_memset_Täyttää n tavua muistialueesta annetulla tavuarvolla.SyscallMemset

Ohjelmatiedot

SyscallKuvausLähde
sol_set_return_dataAsettaa paluudatan (enintään 1 024 tavua) nykyiselle käskylle. Kutsuja voi lukea sen CPI:n palattua.SyscallSetReturnData
sol_get_return_dataLukee viimeisimmän CPI:n asettaman paluudatan. Palauttaa datan pituuden ja sen asettaneen ohjelma-ID:n.SyscallGetReturnData
sol_get_processed_sibling_instructionHakee aiemmin suoritetun sisaruskäskyn samalta pinon tasolta (käänteisellä indeksillä). Palauttaa ohjelma-ID:n, datan ja tilien metatiedot.SyscallGetProcessedSiblingInstruction
sol_get_stack_heightPalauttaa nykyisen kutsupinon korkeuden. Korkeus 1 = ylimmän tason käsky; jokainen CPI kasvattaa sitä yhdellä.SyscallGetStackHeight

Laskenta

SyscallKuvausLähde
sol_remaining_compute_unitsPalauttaa transaktion budjetissa jäljellä olevien laskentayksiköiden määrän. Ominaisuusportin takana.SyscallRemainingComputeUnits

Epoch-panos

SyscallKuvausLähde
sol_get_epoch_stakePalauttaa klusterin kokonaispanoksen (null-osoitin) tai tietyn äänestystilin delegoidun panoksen nykyiselle epochille (SIMD-0133). Ominaisuusportin takana.SyscallGetEpochStake

Muistin varaaminen

SyscallKuvausLähde
sol_alloc_free_Vanha bump-allokaattori dynaamiseen muistin varaamiseen. Poistettu käytöstä uusissa käyttöönotoissa; saatavilla vain ennen ominaisuusporttia käyttöönotetuille ohjelmille.SyscallAllocFree

Is this page helpful?

Sisällysluettelo

Muokkaa sivua

Hallinnoi

© 2026 Solana Foundation.
Kaikki oikeudet pidätetään.
Yhdistä