Solana-ohjelma on tili,
joka sisältää suoritettavaa sBPF-tavukoodia ja jonka executable-lippu on
asetettu arvoon true. Ohjelmat ovat tilattomia. Kaikki muuttuva tila sijaitsee
erillisillä datatileillä, jotka välitetään käskyjen
kautta.
Ohjelman suoritus
Kääntäminen, ohjelmien kirjoittaminen (Anchor / natiivi Rust), sBPF VM, laskentayksikkömalli, järjestelmäkutsut, ohjelmavälimuisti.
Ohjelman käyttöönotto
Ohjelmien käyttöönotto, päivittäminen ja varmentaminen. Loader-v3-käskyviite ja lataajaohjelmat.
Ydinohjelmat
System Program (käskyviitteellä), Vote, Stake, Config, Compute Budget, Address Lookup Table ja ZK ElGamal Proof.
Esikäännökset
Ed25519-, Secp256k1-, Secp256r1-allekirjoituksen varmentamisohjelmat. Offset-rakenteet ja validointisäännöt.
Järjestelmäkutsujen viite
Täydellinen viite kaikille ~30 sBPF-järjestelmäkutsulle laskentayksikkökustannuksineen.
Keskeiset tiedot
- Käännetty sBPF:ksi: Ohjelmat käännetään Solana Bytecode Format -muotoon (sBPF) LLVM:n kautta ja tallennetaan suoritettaviin tileihin.
- Tilattomat: Kaikki muuttuva tila sijaitsee erillisillä datatileillä, ei ohjelmatilillä.
- Päivitettävät: Loader-v3:lla (BPF Loader Upgradeable) käyttöönotetut ohjelmat voidaan päivittää, kun päivitysoikeus on asetettu; kyseisen oikeuden peruuttaminen tekee ohjelmasta muuttumattoman.
Rajoitukset
| Rajoitus | Arvo | Lähde |
|---|---|---|
| Oletuskekokoko | 32 KiB | HEAP_LENGTH |
| Maksimikekokoko (säädettävissä) | 256 KiB | MAX_HEAP_FRAME_BYTES |
| Pinokehyksen koko | 4 096 tavua | STACK_FRAME_SIZE |
| Maksimi sBPF-kutsusyvyys | 64 | MAX_CALL_DEPTH |
| Maksimi käskypinon syvyys (ylätaso + CPI:t) | 5 (9 SIMD-0268:lla) | MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268 |
| Kekokustannus | 8 CU per 32 KiB-sivu | DEFAULT_HEAP_COST |
| Maksimi välimuistissa olevat ohjelmat | 512 | MAX_LOADED_ENTRY_COUNT |
| Käyttöönoton näkyvyysviive | 1 slot | DELAY_VISIBILITY_SLOT_OFFSET |
Is this page helpful?