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.
Kaavio ohjelmatilistä, sen neljästä komponentista ja sen lataajaohjelma.
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?