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
| Syscall | Kuvaus | Lähde |
|---|---|---|
abort | Pysä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
| Syscall | Kuvaus | Lähde |
|---|---|---|
sol_log_ | Kirjaa UTF-8-merkkijonoviestin ohjelmalokkiin. | SyscallLog |
sol_log_64_ | Kirjaa viisi u64-arvoa heksadesimaaleina ohjelmalokkiin. | SyscallLogU64 |
sol_log_pubkey | Kirjaa Pubkey-avaimen base58-merkkijonona ohjelmalokkiin. | SyscallLogPubkey |
sol_log_compute_units_ | Kirjaa jäljellä olevat laskentayksiköt ohjelmalokkiin. | SyscallLogBpfComputeUnits |
sol_log_data | Kirjaa mielivaltaisia tavujonoja base64-koodattuna datana. | SyscallLogData |
PDA
| Syscall | Kuvaus | Lähde |
|---|---|---|
sol_create_program_address | Johtaa ohjelmaosoitteen siemenistä ja ohjelma-ID:stä. Palauttaa 1, jos johdettu osoite on Ed25519-käyrällä (virheellinen PDA). | SyscallCreateProgramAddress |
sol_try_find_program_address | Etsii kelvollisen PDA:n iteroimalla bump-siemeniä 255:stä alas 1:een. Palauttaa osoitteen ja bumpin. | SyscallTryFindProgramAddress |
Hajautus
| Syscall | Kuvaus | Lähde |
|---|---|---|
sol_sha256 | Laskee SHA-256-hajautuksen yhdestä tai useammasta tavuviipaleesta. | SyscallHash<Sha256Hasher> |
sol_keccak256 | Laskee Keccak-256-hajautuksen yhdestä tai useammasta tavuviipaleesta. | SyscallHash<Keccak256Hasher> |
sol_blake3 | Laskee Blake3-hajautuksen yhdestä tai useammasta tavuviipaleesta. Ominaisuusrajattu. | SyscallHash<Blake3Hasher> |
sol_poseidon | Laskee Poseidon-hajautuksen syötteistä. Ominaisuusrajattu. | SyscallPoseidon |
Kryptografia
| Syscall | Kuvaus | Lähde |
|---|---|---|
sol_secp256k1_recover | Palauttaa secp256k1-julkisen avaimen allekirjoitetusta viestin hajautuksesta ja palautus-ID:stä. | SyscallSecp256k1Recover |
sol_curve_validate_point | Validoi, että tavutaulukko on kelvollinen piste Curve25519:llä (Edwards tai Ristretto). Ominaisuusrajattu. | SyscallCurvePointValidation |
sol_curve_group_op | Suorittaa Curve25519-ryhmäoperaatioita (yhteenlasku, vähennyslasku, kertolasku) Edwards- tai Ristretto-pisteillä. Ominaisuusrajattu. | SyscallCurveGroupOps |
sol_curve_multiscalar_mul | Suorittaa moniskalaarikertolaskun Curve25519 Edwards- tai Ristretto-pisteillä. Ominaisuusrajattu. | SyscallCurveMultiscalarMultiplication |
sol_alt_bn128_group_op | Suorittaa alt_bn128 (BN254) -ryhmäoperaatioita: G1-yhteenlasku, G1-kertolasku ja paritarkistus. Ominaisuusrajattu. | SyscallAltBn128 |
sol_alt_bn128_compression | Pakkaa ja purkaa alt_bn128 G1- ja G2-pisteitä. Ominaisuusrajattu. | SyscallAltBn128Compression |
sol_big_mod_exp | Laskee suurten kokonaislukujen modulaarisen potenssilaskun (base^exp mod modulus). Ominaisuusrajattu. | SyscallBigModExp |
CPI
| Syscall | Kuvaus | Lähde |
|---|---|---|
sol_invoke_signed_rust | Kutsuu cross-program-käskyä Rust-ohjelmasta. Serialisoi käskyn, tilit ja allekirjoittajan siemenet käyttäen Rust ABI:a. | SyscallInvokeSignedRust |
sol_invoke_signed_c | Kutsuu cross-program-käskyä C-ohjelmasta. Käyttää C SolInstruction ABI:a serialisointiin. | SyscallInvokeSignedC |
Sysvars
| Syscall | Kuvaus | Lähde |
|---|---|---|
sol_get_clock_sysvar | Kirjoittaa Clock-sysvarin ohjelman tarjoamaan puskuriin. | SyscallGetClockSysvar |
sol_get_epoch_schedule_sysvar | Kirjoittaa EpochSchedule-sysvarin ohjelman tarjoamaan puskuriin. | SyscallGetEpochScheduleSysvar |
sol_get_rent_sysvar | Kirjoittaa Rent-sysvarin ohjelman tarjoamaan puskuriin. | SyscallGetRentSysvar |
sol_get_epoch_rewards_sysvar | Kirjoittaa EpochRewards-sysvarin ohjelman tarjoamaan puskuriin. | SyscallGetEpochRewardsSysvar |
sol_get_last_restart_slot | Kirjoittaa LastRestartSlot-sysvarin ohjelman tarjoamaan puskuriin. Ominaisuusrajattu. | SyscallGetLastRestartSlotSysvar |
sol_get_fees_sysvar | Kirjoittaa vanhentuneen Fees-sysvarin ohjelman tarjoamaan puskuriin. Ominaisuusrajattu (vanhentunut). | SyscallGetFeesSysvar |
sol_get_sysvar | Yleinen sysvar-käyttö: lukee tavujonon mistä tahansa välimuistissa olevasta sysvarista sen pubkeyn, offsetin ja pituuden perusteella (SIMD-0127). Ominaisuusrajattu. | SyscallGetSysvar |
Muistioperaatiot
| Syscall | Kuvaus | Lä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
| Syscall | Kuvaus | Lähde |
|---|---|---|
sol_set_return_data | Asettaa paluudatan (enintään 1 024 tavua) nykyiselle käskylle. Kutsuja voi lukea sen CPI:n palattua. | SyscallSetReturnData |
sol_get_return_data | Lukee viimeisimmän CPI:n asettaman paluudatan. Palauttaa datan pituuden ja sen asettaneen ohjelma-ID:n. | SyscallGetReturnData |
sol_get_processed_sibling_instruction | Hakee aiemmin suoritetun sisaruskäskyn samalta pinon tasolta (käänteisellä indeksillä). Palauttaa ohjelma-ID:n, datan ja tilien metatiedot. | SyscallGetProcessedSiblingInstruction |
sol_get_stack_height | Palauttaa nykyisen kutsupinon korkeuden. Korkeus 1 = ylimmän tason käsky; jokainen CPI kasvattaa sitä yhdellä. | SyscallGetStackHeight |
Laskenta
| Syscall | Kuvaus | Lähde |
|---|---|---|
sol_remaining_compute_units | Palauttaa transaktion budjetissa jäljellä olevien laskentayksiköiden määrän. Ominaisuusportin takana. | SyscallRemainingComputeUnits |
Epoch-panos
| Syscall | Kuvaus | Lähde |
|---|---|---|
sol_get_epoch_stake | Palauttaa klusterin kokonaispanoksen (null-osoitin) tai tietyn äänestystilin delegoidun panoksen nykyiselle epochille (SIMD-0133). Ominaisuusportin takana. | SyscallGetEpochStake |
Muistin varaaminen
| Syscall | Kuvaus | Lä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?