Chương trình Solana là một
tài khoản chứa bytecode
sBPF có thể thực thi và có cờ executable được đặt thành true. Chương trình
không có trạng thái. Tất cả trạng thái có thể thay đổi đều nằm trong các tài
khoản dữ liệu riêng biệt được truyền qua lệnh.
Sơ đồ tài khoản chương trình, 4 thành phần của nó và chương trình loader.
Thực thi chương trình
Biên dịch, viết chương trình (Anchor / Rust gốc), sBPF VM, mô hình compute unit, syscalls, bộ nhớ đệm chương trình.
Triển khai chương trình
Triển khai, nâng cấp và xác minh chương trình. Tham chiếu lệnh Loader-v3 và các chương trình loader.
Chương trình cốt lõi
System Program (với tham chiếu lệnh), Vote, Stake, Config, Compute Budget, Address Lookup Table và ZK ElGamal Proof.
Precompiles
Chương trình xác minh chữ ký Ed25519, Secp256k1, Secp256r1. Cấu trúc offset và quy tắc xác thực.
Tham chiếu Syscall
Tham chiếu đầy đủ cho tất cả ~30 syscalls sBPF với chi phí compute unit.
Thông tin chính
- Biên dịch thành sBPF: Chương trình được biên dịch thành Solana Bytecode Format (sBPF) thông qua LLVM và lưu trữ trong các tài khoản có thể thực thi.
- Không có trạng thái: Tất cả trạng thái có thể thay đổi đều nằm trong các tài khoản dữ liệu riêng biệt, không nằm trong tài khoản chương trình.
- Có thể nâng cấp: Chương trình được triển khai với loader-v3 (BPF Loader Upgradeable) có thể được nâng cấp khi quyền nâng cấp được thiết lập; thu hồi quyền đó sẽ làm cho chương trình trở nên bất biến.
Giới hạn
| Giới hạn | Giá trị | Nguồn |
|---|---|---|
| Kích thước heap mặc định | 32 KiB | HEAP_LENGTH |
| Kích thước heap tối đa (có thể điều chỉnh) | 256 KiB | MAX_HEAP_FRAME_BYTES |
| Kích thước stack frame | 4,096 bytes | STACK_FRAME_SIZE |
| Độ sâu gọi sBPF tối đa | 64 | MAX_CALL_DEPTH |
| Độ sâu instruction stack tối đa (cấp cao nhất + CPIs) | 5 (9 với SIMD-0268) | MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268 |
| Chi phí heap | 8 CUs mỗi trang 32 KiB | DEFAULT_HEAP_COST |
| Số chương trình được lưu trong bộ nhớ đệm tối đa | 512 | MAX_LOADED_ENTRY_COUNT |
| Độ trễ hiển thị triển khai | 1 slot | DELAY_VISIBILITY_SLOT_OFFSET |
Is this page helpful?