Visão geral
O conjunto UTXO (também chamado de chainstate) é a coleção completa de todas as saídas de transações não gastas que existem em um determinado ponto da blockchain. Ele representa o estado atual da propriedade de bitcoin — cada bitcoin gastável é contabilizado exatamente por um UTXO neste conjunto. Cada nó completo mantém sua própria cópia do conjunto UTXO e o atualiza a cada novo bloco.
Papel na validação de transações
Quando um nó recebe uma nova transação, ele verifica cada entrada no conjunto UTXO:
Nova entrada de transação:
"Gastando TXID:abc123, índice de saída 0"
|
v
┌─────────────────────────────┐
│ Conjunto UTXO │
│ │
│ abc123:0 → 0.5 BTC [✓] │ Encontrado! Entrada válida.
│ def456:1 → 0.2 BTC │
│ ghi789:0 → 1.0 BTC │
│ ... │
│ (milhões de entradas) │
└─────────────────────────────┘
Após confirmação:
- abc123:0 é REMOVIDO do conjunto
- Novas saídas são ADICIONADAS ao conjunto
Se o UTXO referenciado não existir no conjunto, a transação é inválida (as moedas já foram gastas ou nunca existiram). É assim que o Bitcoin previne o gasto duplo sem uma autoridade central.
Tamanho e crescimento
O conjunto UTXO é armazenado em memória (ou armazenamento rápido) para acesso rápido durante a validação. Seu tamanho é uma preocupação para os operadores de nós:
- O conjunto UTXO continha aproximadamente 5-6 GB de dados (até anos recentes) e continua crescendo.
- Cada nova saída que não é gasta imediatamente é adicionada ao conjunto.
- UTXOs de poeira que são economicamente impossíveis de gastar incham o conjunto permanentemente.
- A consolidação (transações de varredura) pode reduzir o número de UTXOs.
O conjunto UTXO e o consenso
Todos os nós completos honestos que processaram os mesmos blocos chegarão ao mesmo conjunto UTXO. Essa propriedade determinística é fundamental para o consenso do Bitcoin — os nós podem verificar independentemente o estado completo do sistema reproduzindo as transações a partir do bloco gênesis.
Conceitos errôneos comuns
O conjunto UTXO não é o mesmo que a blockchain. A blockchain é o registro histórico completo de todas as transações, enquanto o conjunto UTXO é um estado derivado que representa apenas as saídas atualmente gastáveis. Um nó completo precisa da blockchain para construir o conjunto UTXO, mas uma vez construído, o conjunto UTXO sozinho é suficiente para validar novas transações.