Bir Solana programı, yürütülebilir sBPF bytecode içeren ve executable bayrağı
true olarak ayarlanmış bir
hesaptır. Programlar
durumsuz (stateless) yapıdadır. Tüm değiştirilebilir durum,
talimatlar aracılığıyla iletilen ayrı veri
hesaplarında bulunur.
Bir program hesabının, 4 bileşeninin ve yükleyici programının diyagramı.
Program yürütme
Derleme, program yazma (Anchor / yerel Rust), sBPF VM, hesaplama birimi modeli, syscall'lar, program önbelleği.
Program dağıtımı
Programları dağıtma, yükseltme ve doğrulama. Loader-v3 talimat referansı ve yükleyici programları.
Çekirdek programlar
System Program (talimat referansı ile), Vote, Stake, Config, Compute Budget, Address Lookup Table ve ZK ElGamal Proof.
Ön derlemeler
Ed25519, Secp256k1, Secp256r1 imza doğrulama programları. Offset yapıları ve doğrulama kuralları.
Syscall referansı
Hesaplama birimi maliyetleri ile tüm ~30 sBPF syscall için eksiksiz referans.
Temel bilgiler
- sBPF'ye derlenir: Programlar, LLVM aracılığıyla Solana Bytecode Format'a (sBPF) derlenir ve yürütülebilir hesaplarda saklanır.
- Durumsuz: Tüm değiştirilebilir durum, program hesabında değil, ayrı veri hesaplarında bulunur.
- Yükseltilebilir: Loader-v3 (BPF Loader Upgradeable) ile dağıtılan programlar, bir yükseltme yetkisi ayarlandığında yükseltilebilir; bu yetkinin iptal edilmesi programı değiştirilemez hale getirir.
Sınırlar
| Sınır | Değer | Kaynak |
|---|---|---|
| Varsayılan heap boyutu | 32 KiB | HEAP_LENGTH |
| Maksimum heap boyutu (ayarlanabilir) | 256 KiB | MAX_HEAP_FRAME_BYTES |
| Stack frame boyutu | 4.096 bayt | STACK_FRAME_SIZE |
| Maksimum sBPF çağrı derinliği | 64 | MAX_CALL_DEPTH |
| Maksimum talimat yığını derinliği (üst düzey + CPI'lar) | 5 (SIMD-0268 ile 9) | MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268 |
| Heap maliyeti | 32 KiB sayfa başına 8 CU | DEFAULT_HEAP_COST |
| Maksimum önbelleğe alınan program sayısı | 512 | MAX_LOADED_ENTRY_COUNT |
| Dağıtım görünürlük gecikmesi | 1 slot | DELAY_VISIBILITY_SLOT_OFFSET |
Is this page helpful?