O que é um output de transação não gasto (UTXO) do Bitcoin?
Guia do iniciante para o modelo UTXO do Bitcoin 📕
Unspent transaction output (UTXO) é a técnica que o protocolo Bitcoin usa para rastrear saldos à medida que eles se movem entre carteiras de criptomoedas.
Quando se trata de rastrear e gerenciar saldos individuais de criptomoedas, os protocolos baseados em blockchain geralmente usam um de dois modelos contábeis diferentes.
Um é chamado de modelo de Conta/Saldo. Projetos como Ethereum, Tezos e EOS usam esse modelo para rastrear saldos à medida que os usuários da blockchain executam transações. O outro é chamado de modelo de Unspent Transaction Output (UTXO).
Bitcoin e muitas outras criptomoedas, como Litecoin, Cardano e Dogecoin, usam o modelo UTXO.
Mas o que exatamente é isso, como funciona e quais são as vantagens do UTXO em comparação com o modelo de Conta/Saldo?
Entendendo o modelo UTXO 💻
História
Adam Back e o falecido Hal Finney foram dois membros do grupo de criptografia Cypherpunk que o autor do white paper do Bitcoin, Satoshi Nakamoto, frequentava. Os dois são creditados por desenvolverem o modelo UTXO de forma independente entre 1997 e 2004, respectivamente.
Quando o criador do Bitcoin, Satoshi Nakamoto, lançou o protocolo em 2009, ele se tornou o primeiro sistema de moeda digital operacional a implementar o modelo UTXO.
Tanto Hal Finney quanto Adam Back há muito são suspeitos de serem Satoshi Nakamoto, embora isso nunca tenha sido comprovado com certeza.
UTXO em resumo
Quando você envia bitcoin para alguém, várias etapas ocorrem programaticamente. Uma das primeiras etapas no processo de transação é a sua carteira de criptomoeda escanear a blockchain para verificar a quantidade de fundos que você possui. Esses fundos são conhecidos como saídas de transações não gastas (UTXOs).
Você pode pensar nos UTXOs como troco restante de transações anteriores de bitcoin.
Os fundos são considerados "não gastos" porque estão livremente disponíveis para você enviar para alguém ou mover para outra carteira. Eles são chamados de "saídas de transações" porque foram criados a partir de transações anteriores.
Se você gastar $12 em um almoço usando uma nota de $20, você teria uma nota de $8 restante. Neste exemplo, os $8 restantes seriam uma saída de transação não gasta. Ela voltaria para sua carteira pronta para ser usada em outra compra.
É exatamente assim que os UTXOs de bitcoin funcionam. Quando você faz uma transação, as saídas de transações anteriores de bitcoin, ou seja, seu troco de bitcoin, são usadas como entradas para novas transações.
Outra comparação importante entre transações em dinheiro físico e UTXOs é que ambos precisam ser gastos por completo e não podem ser subdivididos. Se você tiver um UTXO de 5 bitcoins e quiser enviar 1 BTC para alguém, você teria que enviar todo o UTXO de 5 bitcoins e receber um novo UTXO de 4 BTC em troca, menos quaisquer taxas.
Assim como no exemplo acima, onde você entrega uma nota inteira de $20 para pagar um almoço de $10.
Quando um UTXO é gasto, ele é considerado "consumido" e é tecnicamente removido de circulação.
Qualquer troco restante é gerado como um UTXO totalmente novo. Esta parte do sistema UTXO é como o Bitcoin resolve o problema do duplo gasto.
Assim como você não pode fisicamente dar uma nota de $5 a um lojista e depois dar a mesma nota de $5 para outra pessoa, um usuário de bitcoin não pode usar com sucesso a mesma saída de transação não gasta em duas transações digitais separadas.
Quando uma pessoa tenta gastar o mesmo UTXO duas vezes, as duas transações acabam em um mempool — uma espécie de sala de espera para transações pendentes. Elas permanecem lá até que mineradores bem-sucedidos que vencem a competição de prova de trabalho as agrupem em novos blocos.
Você pode aprender mais sobre esse processo em nosso artigo do Kraken Learn Center O que é mineração de bitcoin?
Mesmo que ambas as transações sejam agrupadas em dois blocos separados e processadas simultaneamente, por causa da marcação de tempo, uma das transações seria verificada antes da outra. Após um número de confirmações (novos blocos adicionados à blockchain), outros nós sinalizariam a segunda transação inválida e a rejeitariam.
Transações coinbase
A única vez que uma transação de bitcoin não possui entradas é quando novos BTC são criados a partir da mineração.
Conhecida como transação coinbase, esta representa a primeira transação em cada novo bloco.
Cada satoshi (as subunidades do bitcoin) em circulação pode ser rastreado de volta à sua respectiva transação coinbase usando o livro-razão transparente da blockchain.
Por que o Bitcoin usa o modelo UTXO?
Saldo da conta
Para identificar o saldo de um usuário, também conhecido como um conjunto de UTXO, o software da carteira de criptomoedas escaneia a blockchain para encontrar todos os UTXOs associados ao endereço público da carteira correspondente.
A soma total de todos os UTXOs fornece uma conta precisa de quanto cripto o proprietário de uma carteira controla.
Quando um UTXO é gasto, o endereço público da carteira do destinatário é atribuído ao valor e um novo UTXO é registrado na blockchain assim que executado.
Armazenamento
Os UTXOs do Bitcoin são registrados em várias transações que são armazenadas em blocos na blockchain do Bitcoin. No entanto, essa informação não é claramente indexada, o que pode dificultar a busca e a coleta de metadados rapidamente.
Ao usar softwares de carteira como o cliente Bitcoin Core, os metadados de UTXO são armazenados e indexados usando um banco de dados LevelDB. O LevelDB é um sistema de armazenamento de código aberto criado pelo Google em 2011 e torna a localização de UTXOs muito mais rápida.
O cliente Bitcoin Core é um software popular usado para se conectar à rede blockchain do Bitcoin. Originalmente criado por Satoshi Nakamoto, o Bitcoin Core agora é mantido por uma comunidade de desenvolvedores voluntários.
UTXOs sob o capô 🚗
Em um nível mais técnico, há quatro partes principais em uma transação:
- Versão: Informa aos nós da rede qual versão do software cliente está sendo usada. Diferentes versões seguem regras diferentes para verificar os dados da transação.
- Locktime: É a quantidade de tempo que determina a rapidez com que uma transação é adicionada à blockchain. Esta entrada dita qual é o tempo mais cedo possível para que a transação seja processada pelos nós de mineração.
- Entrada: Informação que aponta para a fonte dos fundos ou transação anterior onde o UTXO foi produzido. A entrada também contém algo chamado de "script de desbloqueio".
- Saída: Informação sobre o valor sendo transferido, a carteira para onde a propriedade dos fundos está sendo reassinada e novos UTXOs formados. A saída também contém um "script de bloqueio".
Como UTXOs são diferentes do dinheiro físico
As principais diferenças entre a analogia das cédulas físicas e o modelo UTXO é que o bitcoin e outros criptoativos baseados em UTXO não estão limitados a valores fixos, ou seja, $5, $10, $15, etc. Qualquer quantidade de bitcoin (até oito casas decimais) pode ser uma saída de transação não gasta.
Por exemplo, você pode ter 0.0003847 BTC sobrando de uma transação.
Essa quantia se tornaria um novo UTXO que deve ser gasto integralmente se usado e não pode ser dividido em quantias menores.
Digamos que John tenha um saldo de 1 bitcoin em sua carteira de criptomoedas. O saldo dele e a composição desse saldo são duas coisas diferentes, da mesma forma que você pode ter $100 na sua carteira, mas isso pode ser composto por quatro notas de $20, duas notas de $5 e uma nota de $10.
Vamos supor que a composição do saldo de 1 BTC de John seja formada por 5 diferentes saídas de transação não gastas.
- 0.138 BTC
- 0.1 BTC
- 0.004 BTC
- 0.73 BTC
- 0.028 BTC
John quer enviar 0.6 BTC para Jane. Para fazer isso, o software da carteira de John irá automaticamente agrupar qualquer número de UTXOs que ele controla para cobrir essa transação, além de quaisquer taxas de minerador envolvidas para processá-la.
Neste exemplo, digamos que o software da carteira dele envie automaticamente o UTXO de bitcoin de John no valor de 0.73 BTC para Jane e retorne o valor restante menos as taxas de transação para John como um novo UTXO.
Essa quantia é automaticamente enviada para um endereço de troco; um endereço separado vinculado à sua carteira de criptomoedas.
Scripts de bloqueio e desbloqueio 🔒
Quando UTXOs são criados, eles são bloqueados usando o endereço público da wallet do destinatário. Para usar esse UTXO como entrada em uma nova transação, ele precisa primeiro ser desbloqueado usando a assinatura digital do remetente.
Isso é outra coisa importante a entender sobre transações de bitcoin. Quando uma transação é feita, o bitcoin não é movido digitalmente de uma conta para outra. Em vez disso, eles são desbloqueados, reassociados a um novo proprietário e então bloqueados novamente.
Isso significa que apenas o novo proprietário pode desbloquear os fundos usando sua assinatura digital e transferi-los para outro lugar; para outra pessoa ou para outra wallet sob seu controle.
Script é uma linguagem de programação usada pelo Bitcoin para processar transações, incluindo o bloqueio e desbloqueio de UTXOs.
- Script de bloqueio (ScriptPubKey): Quando um UTXO é bloqueado, o script de bloqueio (conhecido como ScriptPubKey) define condições que precisam ser satisfeitas antes que o UTXO possa ser usado como entrada. Isso geralmente envolve provar que você possui a chave privada que corresponde ao endereço público da wallet usado para bloquear o UTXO, fornecendo uma assinatura digital.
- Script de desbloqueio (ScriptSig): Para desbloquear um UTXO, você deve atender às condições definidas pelo script de bloqueio, ou seja, fornecer uma assinatura digital que prove que você controla as chaves privadas correspondentes à chave pública usada para bloquear o UTXO.
Isso impede que qualquer outra pessoa possa acessar e gastar esses fundos.
O que é poeira de Bitcoin?
Poeira de Bitcoin refere-se a UTXOs contendo pequenas quantidades de satoshis restantes de transações anteriores.
Por si só, essas quantidades minúsculas de BTC custariam mais em taxas de transação para processar do que valem e, por isso, muitas vezes ficam em endereços de troco esperando para serem agrupadas com outros UTXOs e gastas.
O que é um ataque de dusting?
Ataques de dusting referem-se a golpistas enviando "dust" para centenas de milhares de diferentes endereços de carteira. A ideia por trás disso é identificar alvos potenciais para ataques de engenharia social.
Um golpista observará endereços contendo o "dust" que enviaram, esperando que o proprietário faça uma transação que agrupe UTXOs de diferentes endereços vinculados à sua carteira. Como os UTXOs de "dust" são tão pequenos, há uma boa chance de serem agrupados com outros e usados como entradas.
Quando isso acontece, o golpista pode ter uma ideia de quais fundos uma pessoa possui. Eles podem então optar por incorporar mensagens de phishing em transações, convidando o proprietário a clicar em um link que baixa malware ou visitar sites falsos que imitam páginas legítimas e pedem informações pessoais.
Quão perigosos são os ataques de dusting de bitcoin?
Ataques de dusting não dão aos golpistas acesso aos seus fundos.
Eles servem apenas para identificar quais endereços são controlados por uma carteira de criptomoedas específica.
Para minimizar o risco de ataques de dusting, é melhor nunca clicar em links ou visitar sites associados a transações de dust.
Comece a comprar Bitcoin
Agora que você aprendeu tudo sobre o modelo de saída de transação não gasta, está pronto para continuar sua jornada no mundo cripto e comprar bitcoin?
Confira nosso guia no Kraken Learn Center para mais informações sobre Como comprar Bitcoin (BTC) e crie uma conta na Kraken hoje mesmo.