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, saldo de armazenamento e o campo rent obsoleto, com um guia interativo 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: Todas as contas possuem os mesmos cinco campos: lamports, data, owner, executable, rent_epoch.
- Endereço: Cada conta é identificada por um endereço único de 32 bytes (seja uma chave pública Ed25519 ou um PDA).
- Propriedade: Apenas o programa proprietário da conta pode modificar seus dados ou debitar lamports. Qualquer programa pode creditar lamports em qualquer conta gravável.
- Armazenamento de conta: Cada conta deve manter um saldo mínimo de lamport reembolsável proporcional ao tamanho dos seus dados para permanecer onchain.
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) | -- |
| Saldo mínimo de armazenamento (fórmula) | (tamanho_conta + 128) * 3.480 lamports/byte-ano * 2 anos | minimum_balance() |
Is this page helpful?