Mergulho Profundo no Blockchain Aptos
Para um entendimento mais profundo do ciclo de vida de uma transação Aptos (de uma perspectiva operacional), seguiremos uma transação em sua jornada, desde ser enviada a um fullnode Aptos, até ser confirmada no blockchain Aptos. Então focaremos nos componentes lógicos dos nós Aptos e veremos como a transação interage com esses componentes.
Vida de uma Transação
Seção intitulada “Vida de uma Transação”- Alice e Bob são dois usuários que cada um tem uma conta no blockchain Aptos.
- A conta da Alice tem 110 Aptos Coins.
- Alice está enviando 10 Aptos Coins para Bob.
- O número de sequência atual da conta da Alice é 5 (o que indica que 5 transações já foram enviadas da conta da Alice).
- Há um total de 100 nós validadores — V1 a V100 na rede.
- Um cliente Aptos envia a transação da Alice para um serviço REST em um Fullnode Aptos. O fullnode encaminha esta transação para um fullnode validador que por sua vez a encaminha para o validador V1.
- Validador V1 é um proponente/líder para a rodada atual.
A Jornada
Seção intitulada “A Jornada”Nesta seção, descreveremos o ciclo de vida da transação T5, desde quando o cliente a envia até quando ela é confirmada no blockchain Aptos.
Para os passos relevantes, incluímos um link para as interações inter-componentes correspondentes do nó validador. Depois que você estiver familiarizado com todos os passos no ciclo de vida da transação, pode querer consultar as informações sobre as interações inter-componentes correspondentes para cada passo.
graph LR subgraph Fullnodes direction TB REST_Service[Serviço REST] end
Client(Cliente) -->|1| REST_Service
subgraph Other_Validators[Outros Validadores] direction TB end
subgraph Validators direction TB Mempool[3\nMempool] Consensus[Consenso] Consensus -->|7, 9| Execution Execution -->|11| Storage Execution -->|8| Virtual_Machine(Máquina Virtual) Mempool --> Virtual_Machine Virtual_Machine --> Storage end
Other_Validators <-->|6, 10| Consensus REST_Service -->|2| Mempool Mempool <-->|4| Other_Validators(Outros Validadores) Consensus -->|5| Mempool
O ciclo de vida de uma transação tem cinco estágios:
- Aceitando: Aceitando a transação
- Compartilhando: Compartilhando a transação com outros nós validadores
- Propondo: Propondo o bloco
- Executando e Consenso: Executando o bloco e alcançando consenso
- Confirmando: Confirmando o bloco
Descrevemos o que acontece em cada estágio abaixo, junto com links para as interações de componentes do nó Aptos correspondentes.
Cliente envia uma transação
Seção intitulada “Cliente envia uma transação”Um cliente Aptos constrói uma transação bruta (vamos chamá-la de Traw5) para transferir 10 Aptos Coins da conta da Alice para a conta do Bob. O cliente Aptos assina a transação com a chave privada da Alice. A transação assinada T5 inclui o seguinte:
- A transação bruta.
- A chave pública da Alice.
- A assinatura da Alice.
A transação bruta inclui os seguintes campos:
Campos | Descrição |
---|---|
Endereço da conta | Endereço da conta da Alice |
Payload | Indica uma ação ou conjunto de ações em nome da Alice. No caso de ser uma função Move, chama diretamente o bytecode Move na chain. Alternativamente, pode ser bytecode Move peer-to-peer script de transação. Também contém uma lista de entradas para a função ou script. Para este exemplo, é uma chamada de função para transferir uma quantidade de Aptos Coins da conta da Alice para a conta do Bob, onde a conta da Alice é implícita pelo envio da transação e a conta do Bob e a quantidade são especificadas como entradas da transação. |
Preço unitário de gas | A quantidade que o remetente está disposto a pagar por unidade de gas, para executar a transação. Isso é representado em Octas. |
Quantidade máxima de gas | A quantidade máxima de gas em APT que Alice está disposta a pagar por esta transação. Taxas de gas são iguais ao custo base de gas coberto por computação e IO multiplicado pelo preço do gas. Custos de gas também incluem armazenamento com um modelo de armazenamento de preço fixo em Apt. Isso é representado em Octas. |
Tempo de expiração | Tempo de expiração da transação. |
Número de sequência | O número de sequência (5, neste exemplo) para uma conta indica o número de transações que foram enviadas e confirmadas on-chain a partir dessa conta. Neste caso, 5 transações foram enviadas da conta da Alice, incluindo Traw5. Nota: uma transação com número de sequência 5 só pode ser confirmada on-chain se o número de sequência da conta for 5. |
ID da Chain | Um identificador que distingue as redes Aptos (para prevenir ataques cross-network). |
Aceitando a transação
Seção intitulada “Aceitando a transação”Descrição | Interações de Componentes do Nó Aptos |
---|---|
1. Cliente → serviço REST: O cliente envia a transação T5 para o serviço REST de um fullnode Aptos. O fullnode usa o serviço REST para encaminhar a transação para seu próprio mempool, que então encaminha a transação para mempools executando em outros nós na rede. A transação será eventualmente encaminhada para um mempool executando em um fullnode validador, que a enviará para um nó validador (V1 neste caso). | 1. Serviço REST |
2. Serviço REST → Mempool: O mempool do fullnode transmite a transação T5 para o mempool do validador V1. | 2. Serviço REST, 1. Mempool |
3. Mempool → Máquina Virtual (VM): Mempool usará o componente de máquina virtual (VM) para realizar validação de transação, como verificação de assinatura, verificação de saldo da conta e resistência a replay usando o número de sequência. | 4. Mempool, 3. Máquina Virtual |
A conta da Alice agora terá 100 Aptos Coins, e seu número de sequência será 6. Se T5 for reexecutada por Bob, será rejeitada pois o número de sequência da conta da Alice (6) é maior que o número de sequência da transação reexecutada (5).