Blockchain/Nível II · Mecânica/2.2 Transações/Lição 1
O modelo UTXO
Por que o Bitcoin não tem contas e como o livro-razão sabe o que foi gasto
MateriaisUm navegador da web com acesso a um explorador de blocos (por exemplo, mempool.space)Um endereço público de Bitcoin com vários UTXOsUm caderno para registrar IDs e valores de saída
Curiosidade
- O que acontece com um saldo quando não há contas para atualizar?
- Como um nó verifica se uma entrada ainda não foi gasta sem verificar todas as transações anteriores?
- Por que ter todo o histórico de uma moeda torna mais difícil permanecer anônimo?
Explorar
- O Bitcoin não utiliza o modelo de contas dos livros-razão bancários e do Ethereum. Nesses sistemas, os saldos são armazenados em endereços e atualizados no local; ao enviar fundos, subtrai-se de um saldo e soma-se a outro. O Bitcoin não possui esse tipo de armazenamento. Em vez disso, utiliza uma estrutura semelhante à do dinheiro físico, na qual o valor existe apenas como unidades discretas e não gastas. Não há um livro-razão central que registre o “total de Alice”; existe apenas um conjunto de saídas individuais que estão atualmente disponíveis para gasto.
- Essas unidades são chamadas de Unspent Transaction Outputs (UTXOs). Cada UTXO contém um valor específico em satoshis e um script de bloqueio que define quem pode gastá-lo. Quando ocorre uma transação, ela consome UTXOs inteiros como entradas e cria novos UTXOs como saídas. As saídas que ela gasta deixam o conjunto de moedas disponíveis para gasto (as transações permanecem no histórico da cadeia), enquanto as novas saídas se juntam a ele. O “saldo” de uma carteira não é um número armazenado, mas a soma de todos os UTXOs cujos scripts de bloqueio podem ser atendidos por suas chaves privadas.
- Essa estrutura simplifica a validação dos nós de rede. Como cada entrada se refere a uma saída específica e ainda não utilizada, um nó precisa apenas verificar se essa saída em particular existe no estado atual e se ainda não foi usada antes. Não é necessário recalcular os saldos globais ou verificar históricos complexos das contas. Cada nó completo mantém o “chainstate”, que é essencialmente o conjunto completo de todas as UTXOs ativas em um determinado momento. Isso permite uma verificação rápida e determinística de tentativas de gasto duplo.
- O contraste com o Ethereum destaca uma escolha de design importante. O Ethereum utiliza um modelo de conta no qual cada endereço possui um saldo armazenado e um nonce (um contador de transações) para evitar ataques de replay. Atualizar uma conta requer a alteração da árvore de estado em nível global. O Bitcoin cria novas saídas em vez de editar os saldos diretamente, o que significa que as moedas carregam seu histórico, vinculando transações passadas aos ativos atuais.
- Esse vínculo histórico tem implicações significativas para a privacidade e a fungibilidade. Como cada entrada remete a uma saída anterior, os analistas podem rastrear o fluxo de fundos por meio de cadeias de UTXOs. Embora existam serviços de mistura e outras técnicas, a estrutura fundamental torna difícil romper completamente a ligação entre a origem de uma moeda e seu holder atual. Essa transparência é frequentemente citada em debates sobre se as moedas Bitcoin são realmente fungíveis, já que alguns participantes do mercado podem preferir moedas “limpas” com histórico menos rastreável.
- Para ver isso em ação, abra a visualização de controle de moedas (ou “UTXO”) de uma carteira que recebeu vários pagamentos: ela lista cada saída separadamente, com seu próprio valor e ID da transação. Em um explorador de blocos, a página do endereço mostra a mesma coisa, uma lista das saídas recebidas, algumas gastas e outras não. Essa lista de saídas individuais é a verdadeira representação on-chain da propriedade; o “saldo” exibido na interface é apenas um cálculo do lado do cliente, derivado desse conjunto.
Fatos-chave
- O Bitcoin não possui contas ou saldos armazenados na cadeia; a propriedade consiste exclusivamente em Saídas de Transações Não Gastas (UTXOs).
- Cada UTXO contém um valor em satoshis e um script de bloqueio que especifica as condições necessárias para gastá-lo.
- Uma transação consome UTXOs inteiros como entradas e cria novos UTXOs como saídas; as saídas que ela gasta deixam o conjunto de UTXOs.
- Cada nó completo mantém o ‘chainstate’, que é o conjunto completo de todas as saídas atualmente não gastas utilizadas para validação.
- O saldo exibido na carteira é um cálculo local que soma os valores dos UTXOs controlados por suas chaves privadas, e não um valor armazenado na blockchain.
- Diferentemente do modelo de contas do Ethereum, com nonces e saldos mutáveis, o modelo UTXO do Bitcoin trata as moedas como unidades discretas com histórico, que são substituídas em vez de atualizadas.
Exercício nove, seis, três, um
9ReunirListe 9 ativos ou moedas digitais diferentes. Indique se cada um utiliza um sistema de saldo baseado em conta (como o Ethereum) ou um sistema de saídas baseado em UTXO (como o Bitcoin).
6AgruparAgrupe os 9 em 6 categorias com base em como eles lidam com o estado: saldos mutáveis, saídas imutáveis, modelos híbridos, livros-razão centralizados ou outros.
3DestilarReduza os 6 grupos a 3 razões fundamentais pelas quais um protocolo pode escolher UTXOs em vez de contas para sua estrutura de livro-razão.
1CristalizarEscreva 1 frase explicando como a ausência de saldos armazenados muda a forma como o double-spending é prevenido no Bitcoin em comparação com os bancos tradicionais.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.