계정은 상태를 저장하기 위한 Solana의 기본 데이터 단위입니다. 네트워크는 모든 상태를 키-값 저장소에 저장하며, 각 키는 32바이트 주소이고 각 값은 계정입니다.
3개의 계정과 해당 주소를 보여주는 다이어그램. 계정 구조 정의 포함.
계정 구조
계정 주소(공개 키, PDA), 모든 계정이 포함하는 5개의 필드, rent 상태 머신 및 대화형 코드 워크스루.
계정 유형
프로그램 계정(실행 가능한 코드), 데이터 계정(프로그램 상태), 시스템 계정 및 sysvar(클러스터 전체 상태).
수정 규칙
lamport, 데이터, 소유자, 실행 가능 플래그 및 차용에 대한 런타임 적용 규칙.
계정 런타임
계정 로딩 검증, BPF 직렬화 형식 및 역직렬화.
주요 사항
- 구조: 모든 계정은 동일한 5개의 필드를 가집니다: lamport, 데이터, 소유자, 실행 가능, rent_epoch.
- 주소: 각 계정은 고유한 32바이트 주소(Ed25519 공개 키 또는 PDA)로 식별됩니다.
- 소유권: 계정의 소유자 프로그램만 해당 데이터를 수정하거나 lamport를 차감할 수 있습니다. 모든 프로그램은 쓰기 가능한 계정에 lamport를 입금할 수 있습니다.
- Rent: 모든 계정은 온체인에 유지되기 위해 데이터 크기에 비례하는 최소 lamport 잔액을 보유해야 합니다.
제한 사항
| 제한 사항 | 값 | 출처 |
|---|---|---|
| 최대 계정 데이터 크기 | 10 MiB (10,485,760바이트) | MAX_ACCOUNT_DATA_LEN |
| 명령어당 최대 데이터 증가량 | 10 KiB (10,240바이트) | MAX_PERMITTED_DATA_INCREASE |
| 트랜잭션당 최대 데이터 증가량 | 20 MiB (20,971,520바이트) | MAX_ACCOUNT_DATA_GROWTH_PER_TRANSACTION |
| 계정 기본 스토리지 오버헤드 | 계정당 64바이트 | TRANSACTION_ACCOUNT_BASE_SIZE |
| 주소 크기 | 32바이트 (Ed25519 공개 키) | -- |
| Rent 면제 최소값 (공식) | (account_size + 128) * 3,480 lamport/바이트-년 * 2년 | minimum_balance() |
Is this page helpful?