TON Blockchain Architecture sistema de armazenamento e gestão de dados TON:
- organização de dados como bag of cells;
- Chardeamento no nível das contas (ISP);
- condições de consenso e validação;
- masterchain Coordena todas as chárades e parâmetros da rede.
Bag of Cells#
Todos os dados TON são representados pela coleção células Cada célula contém:
- até 1023 bits dados;
- até 4 referências para outras células (por hashes SHA-256);
- Dois bytes de descriptora + os dados.
As células estão organizadas em árvores ou DAG (Directed Acyclic Graph). TL-B (Type Language — Binary).
Infinite Sharding Paradigm (ISP)#
Cada conta é diferente accountchainBlocos virtuais da accountchain estão agrupados em blocos de shardchains para maior eficiência.
O estado do shardchain = o estado de todas as contas do charade. Bloco de shardchains = uma coleção de blocos virtuais para algumas contas.
No TON, não há diferença entre "smart contract" e "account".
Estrutura do bloco de shardchains#
Divide-se em 2 partes:
Não dividida (non-split)
| Componente | Conteúdo |
|---|---|
| InMsgDescr | Descrição das mensagens de entrada |
| OutMsgDescr | Descrição das mensagens de saída |
| Block header | Hashes, parâmetros do bloco |
| OutMsgQueue | A fila das mensagens não entregues (será removida após a entrega às charadas vizinhas) |
Dividida (split)
Hashmap account_id → account_state. Estado da conta:
- Balanço em Grams;
- código do contrato inteligente;
- dados constantes do contrato;
- estatísticas de utilização do armazenamento;
- uma descrição formal opcional da interface;
- Informações públicas do utilizador.
Masterchain#
- Não se divide nem se une. (single chain);
- Um antecessor (exceto o bloco zero com config inicial);
- Contém lista de todas as chardas activas e os últimos blocos de cada um;
- Guardar Configuração de parâmetros através de um contrato de configuração especial.
Configuração
- A contribuição mínima dos validadores;
- Tamanho máximo do grupo de validadores;
- Número máximo de blocos pelos quais o grupo é responsável;
- Processo de eleição e punição dos validadores;
- Os conjuntos atuais e seguintes de validadores;
- O processo de alteração de parâmetros.
Valores iniciais e código de contratos inteligentes fundamentais em Bloco zero masterchain.
Condições de consenso#
Garante a correcção da alteração de dados apenas através de transações válidas.
| Tipo | Descrição |
|---|---|
| Globais | Invariantes para toda a rede (por exemplo, garantias de entrega de mensagens) |
| Locais internos | Dentro de um bloco (por exemplo, processamento de mensagens recebidas) |
| Locais externos | Entre blocos, geralmente de chords vizinhos. |
Bloco válidoA responsabilidade dos validadores geração e verificação.
Tempo lógico (LT)#
Número inteiro não negativo de 64 bits, atribuído aos acontecimentos:
- Evento dependente LT tem mais de todas as suas dependências;
- Evento independente tem LT = 0;
- Mensagens de saída herdarem o LT da transacção;
- Transação e bloco têm Intervalo de tempoO que está escrito no título.
O LT é necessário para organizar os acontecimentos. sem relógios globais.
Condição geral e visibilidade#
- Bloco masterchain Fixa o estado de todos os chards através dos hashes dos seus últimos blocos;
- Bloco de shardchains contém o hash do último bloco masterchain no título;
- ** Blocos visíveis** os que estão indicados neste bloco masterchain + seus antecessores;
- Bloco de charada Importação mensagens de OutMsgQueue vizinhos visíveis; não pode incluir mensagens dos blocos invisíveis.
Contratos inteligentes#
Criação
Aplica-se à cadeia de barras básica e masterchain (outras cadeias podem ter seus próprios mecanismos):
- Uma mensagem para um endereço não mencionado O que significa → cria ** Conta não iniciada** com o balanço, mas sem código e dados;
- Mensagem Constructor contém initial code + data → cria um contrato inteligente;
- O constructor geralmente tem um valor para o saldo inicial (o mínimo depende da taxa de armazenamento);
- Os contratos inteligentes podem Criá-los sozinhos. novos contratos inteligentes para transações.
Modificação
- Dados permanentes são alteradas quando o código é executado em TVM;
- Se o código não prevê alterações → os dados são inalteráveis;
- O próprio código Só pode ser alterado se o código atual permitir.
Destruição e congelamento
- Contrato Não pode ser destruído., enquanto o saldo for > mínimo;
- Quando Balanço negativo Conta Está a congelar. code + data são substituídos por hash de 32 bytes;
- O hash é armazenado por algum tempo → o proprietário pode restaurar a conta transferindo fundos e enviando uma mensagem com code + data.