Visão Geral
O modelo de conta Solana é uma parte crítica do ecossistema Solana e pode ser um dos conceitos mais difíceis de entender para os desenvolvedores, especialmente aqueles em transição que vêm de outras blockchains. Para trabalhar na blockchain Solana com eficiência, é importante um bom entendimento do modelo de conta. Vamos primeiro definir o que são contas e explorar os diferentes tipos de contas, bem como como podemos criá-las e interagir com elas.
O Que é Uma Conta?
As contas são qualquer lugar onde os dados são armazenados na blockchain Solana. O que torna a blockchain Solana única em comparação com outras blockchains como a Ethereum é como esses dados são armazenados e gerenciados. Aqui estão as diferentes categorias de conta:
- Conta do Programa - Essas contas armazenam código executável e o equivalente a contratos inteligentes Ethereum.
- Conta de Armazenamento - Essas contas armazenam os dados conectados aos programas.
- Conta Token - Essas contas rastreiam um saldo de tokens e permitem a transferência ou recebimento de tokens entre contas.
Na blockchain Solana, há uma separação entre o programa e os dados/estado do programa. Ambos recebem contas separadas, mas estão conectados. Comparando isso com a Ethereum, um contrato inteligente e os dados desse contrato inteligente estão localizados em um único local na blockchain. Se você fosse fazer um programa que contasse o número de transferências de token que um programa fez, você precisaria criar o programa para fazer as transferências, bem como outra conta para armazenar a contagem de transferências.
Para dar um exemplo do mundo financeiro tradicional, você pode pensar em um programa como um cartão de débito, seu banco como uma conta de armazenamento e o saldo de sua conta como uma conta simbólica. Embora cada um deles esteja conectado, eles estão em locais separados. Se você perdesse seu cartão de débito, não perderia sua conta bancária (mas talvez os fundos nela). Seu cartão também é o único cartão que pode alterar o saldo da conta usando-o para comprar coisas. Da mesma forma, o programa associado a uma conta de armazenamento é o único que pode alterar o estado dos dados.
Tipos de Conta
Existem dois tipos de contas na blockchain Solana: executáveis e não executáveis. Programas são contas executáveis e armazenam o código imutável de um programa. O código de um programa é primeiro escrito em Rust ou C/C++ e depois compilado em código de byte por meio da infraestrutura do compilador LLVM.
Armazenamento de dados e saldos de tokens são armazenados em contas não executáveis, pois seus dados podem ser alterados. Para controlar quem pode alterar esses dados, as contas não executáveis têm um endereço de programa proprietário atribuído a elas. Outros programas podem ler os dados de outra conta, mas se tentassem modificar esses dados, a transação falharia.
Aluguel
Infelizmente, armazenar todos esses dados em contas separadas não é gratuito e tem alguns custos. Felizmente para os desenvolvedores, esses custos, chamados de aluguel, são pagos em lamports. Lamports são frações do token de Solana, SOL, e são usados para fazer micropagamentos na blockchain de Solana. As taxas de aluguel são calculadas com base no tamanho de armazenamento da conta. Quanto maior a quantidade de dados armazenados, maior a taxa de aluguel.
As taxas de aluguel são cobradas no final de cada período da blockchain Solana. Uma época é o tempo que o validador líder ainda é válido para produzir blocos de transações. Você pode ver os dados das épocas atuais e passadas no Solana Explorer aqui.
No momento em que escrevo, uma época dura aproximadamente 2 dias. Assim como na vida real, se uma conta tiver saldo zero e não puder pagar o aluguel, ela será removida da blockchain.
Uma conta pode ficar isenta de aluguel mantendo pelo menos 2 anos de aluguel em seu saldo de token. Uma maneira fácil de estimar os custos de aluguel é usar o comando solana rent por meio da Solana CLI. Ao fornecer o tamanho (em bytes) da sua conta, você verá o aluguel por byte, por época e o valor mínimo da conta a ser isenta de aluguel:
Como Criar Uma Conta
Para criar uma conta na Solana, um par de chaves (pública e privada) precisa ser gerado por um cliente. Em seguida, o cliente usa a chamada SystemProgram::CreateAccount para registrar a chave pública e alocar o tamanho de armazenamento de dados necessário para esta conta. Atualmente, esse tamanho não pode ser alterado posteriormente e o limite de tamanho é de 10 MB. Se for necessário mais tamanho, um programa pode copiar os dados de uma conta para outra com capacidade maior.
Ao criar uma conta, um proprietário precisa ser atribuído à conta. Somente o proprietário da conta pode modificar os dados armazenados na conta. O proprietário padrão após a criação de uma conta é chamado de “Programa do sistema”. O programa do sistema é um programa nativo na Solana que é responsável por criar contas, alocar dados em contas e atribuir propriedade de contas aos programas conectados. Programas nativos são programas que devem ser executados por todos os validadores em Solana.
O Programa do Sistema também é responsável pelas transferências de lamport para as contas em que é atribuído um proprietário. Se um usuário criar uma conta para usar para armazenar um saldo de token, as transferências desse token serão tratadas pelo Programa do Sistema. O usuário assinaria as instruções de transferência com sua chave privada e o Programa do Sistema trataria da dedução de tokens do remetente e creditaria a conta do destinatário.
Interagindo Com As Contas
Como o código do programa e os dados armazenados pelo programa são contas separadas, qualquer programa pode ler os dados de outra conta. Qualquer programa também pode adicionar lamports a uma conta, mas apenas o proprietário pode subtraí-los. Isso é útil ao criar programas que podem precisar interagir com contas que não são de sua propriedade.
Ao ler uma conta, você verá estes dados retornados:
Aqui está um detalhamento desses dados:
- Public Key (Chave pública) - a chave pública atribuída a esta conta
- Balance (Saldo) - a quantidade de SOL pertencente a esta conta
- Owner (Proprietário) - O endereço do programa que possui a propriedade desta conta
- Executable (Executável) - Se esta é uma conta executável ou não
- rent_epoch - A próxima época em que esta conta pagará o aluguel
- Length (Comprimento) - O tamanho da conta
Conclusão
Criar e interagir com as contas é como tudo é feito na Solana. A separação de programas e os dados que eles usam é uma abordagem única para código e gerenciamento de estado. Compreender as regras de propriedade e como os programas funcionam dentro dessas regras é importante para ter sucesso no desenvolvimento em Solana. Para colocar esses conceitos em prática, confira alguns de nossos outros tutoriais Solana.
Assine nossa newsletter para mais artigos e guias. Sinta-se à vontade para entrar em contato conosco via Twitter se tiver algum comentário. Você sempre pode conversar conosco em nosso servidor da comunidade Discord, com a participação de alguns dos desenvolvedores mais legais que você já conheceu :)
Esse artigo é uma tradução feita por @bananlabs. Você pode encontrar o artigo original aqui
Top comments (0)