Solana 프로그램은 실행 가능한 sBPF 바이트코드를 포함하고 executable 플래그가
true로 설정된
계정입니다. 프로그램은
상태를 저장하지 않습니다. 모든 변경 가능한 상태는
인스트럭션을 통해 전달되는 별도의 데이터 계정에
저장됩니다.
프로그램 계정, 4가지 구성 요소 및 로더 프로그램의 다이어그램.
프로그램 실행
컴파일, 프로그램 작성(Anchor / 네이티브 Rust), sBPF VM, 컴퓨트 유닛 모델, 시스템 콜, 프로그램 캐시.
프로그램 배포
프로그램 배포, 업그레이드 및 검증. Loader-v3 인스트럭션 레퍼런스 및 로더 프로그램.
코어 프로그램
System Program(인스트럭션 레퍼런스 포함), Vote, Stake, Config, Compute Budget, Address Lookup Table, ZK ElGamal Proof.
프리컴파일
Ed25519, Secp256k1, Secp256r1 서명 검증 프로그램. 오프셋 구조체 및 검증 규칙.
시스템 콜 레퍼런스
컴퓨트 유닛 비용을 포함한 약 30개의 모든 sBPF 시스템 콜에 대한 완전한 레퍼런스.
주요 사항
- sBPF로 컴파일: 프로그램은 LLVM을 통해 Solana Bytecode Format(sBPF)으로 컴파일되어 실행 가능한 계정에 저장됩니다.
- 상태 비저장: 모든 변경 가능한 상태는 프로그램 계정이 아닌 별도의 데이터 계정에 저장됩니다.
- 업그레이드 가능: loader-v3(BPF Loader Upgradeable)로 배포된 프로그램은 업그레이드 권한이 설정된 경우 업그레이드할 수 있으며, 해당 권한을 취소하면 프로그램이 불변이 됩니다.
제한 사항
| 제한 사항 | 값 | 출처 |
|---|---|---|
| 기본 힙 크기 | 32 KiB | HEAP_LENGTH |
| 최대 힙 크기(조정 가능) | 256 KiB | MAX_HEAP_FRAME_BYTES |
| 스택 프레임 크기 | 4,096 바이트 | STACK_FRAME_SIZE |
| 최대 sBPF 호출 깊이 | 64 | MAX_CALL_DEPTH |
| 최대 인스트럭션 스택 깊이(최상위 + CPI) | 5(SIMD-0268에서는 9) | MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268 |
| 힙 비용 | 32 KiB 페이지당 8 CU | DEFAULT_HEAP_COST |
| 최대 캐시된 프로그램 | 512 | MAX_LOADED_ENTRY_COUNT |
| 배포 가시성 지연 | 1 slot | DELAY_VISIBILITY_SLOT_OFFSET |
Is this page helpful?