Uma conta é a unidade de dados fundamental da Solana para armazenar estado. A rede armazena todo o estado num armazenamento chave-valor onde cada chave é um endereço de 32 bytes e cada valor é uma conta.
Diagrama de 3 contas e os seus endereços. Inclui a definição da estrutura de conta.
Estrutura de conta
Endereços de conta (chave pública, PDA), os cinco campos que cada conta contém, máquina de estados de rent, com explicação interativa de código.
Tipos de conta
Contas de programa (código executável), contas de dados (estado do programa), contas do sistema e sysvars (estado do cluster).
Regras de modificação
Regras aplicadas pelo runtime para lamports, dados, proprietário, flag executável e empréstimos.
Runtime de conta
Validação de carregamento de conta, formato de serialização BPF e desserialização.
Factos principais
- Estrutura: Cada conta tem os mesmos cinco campos: lamports, data, owner, executable, rent_epoch.
- Endereço: Cada conta é identificada por um endereço único de 32 bytes (uma chave pública Ed25519 ou um PDA).
- Propriedade: Apenas o programa proprietário da conta pode modificar os seus dados ou debitar lamports. Qualquer programa pode creditar lamports a qualquer conta gravável.
- Rent: Cada conta deve manter um saldo mínimo de lamports proporcional ao tamanho dos seus dados para permanecer na cadeia.
Limites
| Limite | Valor | Fonte |
|---|---|---|
| Tamanho máximo de dados da conta | 10 MiB (10.485.760 bytes) | MAX_ACCOUNT_DATA_LEN |
| Crescimento máximo de dados por instrução | 10 KiB (10.240 bytes) | MAX_PERMITTED_DATA_INCREASE |
| Crescimento máximo de dados por transação | 20 MiB (20.971.520 bytes) | MAX_ACCOUNT_DATA_GROWTH_PER_TRANSACTION |
| Sobrecarga base de armazenamento da conta | 64 bytes por conta | TRANSACTION_ACCOUNT_BASE_SIZE |
| Tamanho do endereço | 32 bytes (chave pública Ed25519) | -- |
| Mínimo isento de rent (fórmula) | (tamanho_conta + 128) * 3.480 lamports/byte-ano * 2 anos | minimum_balance() |
Is this page helpful?