O que é uma Unspent Transaction Output (UTXO) de Bitcoin?

Por Kraken Learn team
10 mín.
20 de novembro de 2024

O guia para iniciantes do modelo UTXO do Bitcoin 📕

O Unspent Transaction Output (UTXO) é a técnica que o protocolo Bitcoin utiliza para rastrear saldos à medida que se movem entre carteiras de criptomoedas.

No que diz respeito ao rastreamento e gestão de saldos individuais de criptomoedas, os protocolos baseados em blockchain geralmente utilizam um de dois modelos de contabilidade diferentes.

Um é chamado de modelo de Conta/Saldo. Projetos como Ethereum, Tezos e EOS utilizam este modelo para rastrear saldos à medida que os utilizadores da blockchain executam transações. O outro é chamado de modelo Unspent Transaction Output (UTXO). 

Bitcoin e muitas outras criptomoedas, como Litecoin, Cardano e Dogecoin, utilizam o modelo UTXO. 

Mas o que é exatamente, como funciona e quais são as vantagens do UTXO em comparação com o modelo de Conta/Saldo?

BTC icon
56.265.00
-1,46%
24H
btc

Compreender o modelo UTXO 💻

Histórico

Adam Back e o falecido Hal Finney eram dois membros do grupo Cypherpunk de criptografia que o autor do white paper do Bitcoin, Satoshi Nakamoto, frequentava. Os dois são creditados por desenvolverem o modelo UTXO independentemente entre 1997 e 2004, respetivamente. 

Quando o criador do Bitcoin, Satoshi Nakamoto, lançou o protocolo em 2009, este tornou-se o primeiro sistema de moeda digital operacional a implementar o modelo UTXO.

Tanto Hal Finney quanto Adam Back foram há muito tempo suspeitos de serem Satoshi Nakamoto, embora nunca tenha sido provado com certeza.

UTXO em resumo

Quando envia bitcoin a alguém, vários passos ocorrem programaticamente. Um dos primeiros passos no processo de transação é a sua carteira de criptomoedas verificar a blockchain para determinar o montante de fundos que possui. Estes fundos são conhecidos como saídas de transação não gastas (UTXOs).

Pode considerar as UTXOs como trocos restantes de transações anteriores de bitcoin.

Os fundos são considerados “não gastos” porque estão livremente disponíveis para você enviar a alguém ou mover para outra carteira. São chamados “saídas de transação” porque foram criados a partir de transações anteriores.

Se você gastar 12 $ no almoço usando uma nota de 20 $, você teria 8 $ de troco. Neste exemplo, os 8 $ restantes seriam uma saída de transação não gasta. Voltaria para a sua carteira, pronto para ser usado para comprar outra coisa.

É exatamente assim que as UTXOs de bitcoin funcionam. Quando você faz uma transação, as saídas de transações anteriores de bitcoin, ou seja, o seu troco de bitcoin, são usadas como entradas para novas transações.

Outra comparação fundamental entre transações físicas em dinheiro e UTXOs é que ambas têm de ser gastas na totalidade e não podem ser subdivididas. Se você tiver uma UTXO de 5 bitcoin e quiser enviar 1 BTC a alguém, teria de enviar a UTXO inteira no valor de 5 bitcoin e receber uma nova UTXO em troca no valor de 4 BTC, menos quaisquer taxas. 

Tal como no exemplo acima, onde você entrega uma nota inteira de 20 $ para pagar um almoço de 10 $.

Quando uma UTXO é gasta, é considerada “consumida” e é tecnicamente removida de circulação. 

Qualquer troco restante é gerado como uma UTXO inteiramente nova. Esta parte do sistema UTXO é como o Bitcoin resolve o problema do gasto duplo

Assim como você não pode fisicamente dar a um lojista uma nota de 5 $ e depois dar a mesma nota de 5 $ a outra pessoa, um utilizador 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 a mesma UTXO duas vezes, as duas transações acabam numa 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.

Pode saber mais sobre este processo no nosso artigo do Kraken Learn Center O que é a mineração de bitcoin?

Mesmo que ambas as transações sejam agrupadas em dois blocos separados e processadas simultaneamente, devido ao registo de tempo, uma das transações seria verificada antes da outra. Depois de um certo número de confirmações (novos blocos adicionados à blockchain), outros nós assinalariam a segunda transação inválida e rejeitá-la-iam.

Transações coinbase

A única vez que uma transação de bitcoin não tem entradas é quando BTC recém-criado é gerado a partir da mineração.

Conhecida como uma transação coinbase, esta representa a primeira transação em cada novo bloco.

Cada satoshi (as subunidades de bitcoin) em circulação pode ser rastreado através do livro-razão transparente da blockchain até à sua respetiva transação coinbase.

Scripts de bloqueio e desbloqueio 🔒

Quando as UTXO são criadas, são bloqueadas usando o endereço de carteira pública do destinatário. Para usar essa UTXO como entrada numa nova transação, ela deve ser primeiro desbloqueada usando a assinatura digital do remetente.

Isto é outra coisa importante a entender sobre as transações de Bitcoin. Quando uma transação é feita, o Bitcoin não é movido digitalmente de uma conta para outra. Em vez disso, são desbloqueados, reatribuídos a um novo proprietário e depois bloqueados novamente.

Isto significa que apenas o novo proprietário pode desbloquear os fundos usando a sua assinatura digital e transferi-los para outro lugar; para outra pessoa ou para outra carteira sob o seu controlo.

Script é uma linguagem de programação usada pelo Bitcoin para processar transações, incluindo o bloqueio e desbloqueio de UTXO. 

  • Script de bloqueio (ScriptPubKey): Quando uma UTXO é bloqueada, o script de bloqueio (conhecido como o ScriptPubKey) define as condições que precisam ser satisfeitas antes que a UTXO possa ser usada como entrada. Isto geralmente envolve provar que você possui a chave privada que corresponde ao endereço de carteira pública usado para bloquear a UTXO, fornecendo uma assinatura digital.
  • Script de desbloqueio (ScriptSig): Para desbloquear uma UTXO, você precisa satisfazer as 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 a UTXO.

Isto impede que qualquer outra pessoa possa aceder e gastar esses fundos.

 

Os UTXOs em detalhe 🚗

A um nível mais técnico, existem quatro partes principais numa transação:

  • Versão: Isto informa os nós da rede sobre a versão do software cliente que está a ser utilizada. Diferentes versões seguem regras diferentes para verificar os dados da transação.
  • Locktime: Este é o período de tempo que determina a rapidez com que uma transação é adicionada à blockchain. Este input dita qual é o tempo mais cedo possível para que a transação seja processada pelos nós de mineração.
  • Input: Informações que apontam para a origem dos fundos ou transação anterior onde o UTXO foi produzido. O input também contém algo chamado de “script de desbloqueio”.
  • Output: Informações sobre o valor a ser transferido, a carteira para a qual a propriedade dos fundos está a ser reatribuída e novos UTXOs formados. O output também contém um “script de bloqueio”.

Por que é que o Bitcoin usa o modelo UTXO?

Saldo da conta

Para identificar o saldo de um utilizador, também conhecido como um conjunto UTXO, o software da carteira de criptomoedas verifica a blockchain para encontrar todas as UTXOs associadas ao endereço de carteira pública correspondente.

A soma total de todas as UTXOs fornece um registo preciso de quanta criptomoeda um proprietário de carteira controla.

Quando uma UTXO é gasta, o endereço de carteira pública do destinatário é atribuído ao montante e uma nova UTXO é registada na blockchain uma vez executada.

Armazenamento

Os UTXOs de Bitcoin são registados em várias transações que são armazenadas em blocos na blockchain de Bitcoin. No entanto, esta informação não é claramente indexada, pelo que pode ser difícil pesquisar e recolher metadados rapidamente. 

Ao utilizar software de carteira, como o cliente Bitcoin Core, os metadados UTXO são armazenados e indexados através de uma base de dados LevelDB. O LevelDB é um sistema de armazenamento de código aberto criado pela Google em 2011 e torna a localização de UTXOs muito mais rápida.

O cliente Bitcoin Core é um software popular utilizado para se conectar à rede blockchain de Bitcoin. Originalmente criado por Satoshi Nakamoto, o Bitcoin Core é agora mantido por uma comunidade de desenvolvedores voluntários.

Como os UTXOs são diferentes do dinheiro físico

As principais diferenças entre a analogia das notas físicas e o modelo UTXO são que o Bitcoin e outros criptoativos baseados em UTXO não estão vinculados a valores definidos, 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, poderá ter 0,0003847 BTC restantes de uma transação.

Este valor tornar-se-ia um novo UTXO que deve ser gasto na totalidade, se utilizado, e não pode ser dividido em quantidades menores.

Vamos supor que o João tem um saldo de 1 Bitcoin numa carteira de cripto. O seu saldo e a composição desse saldo são duas coisas diferentes, da mesma forma que poderá ter $100 na sua carteira, mas pode ser composto por quatro notas de $20, duas notas de $5 e uma de $10.

Digamos que a composição do saldo de 1 BTC do João é feita de 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

O João quer enviar 0,6 BTC para a Joana. Para fazer isto, o software da carteira do João agrupará automaticamente qualquer número de UTXOs que ele controla para cobrir esta transação, mais quaisquer taxas de minerador envolvidas para processá-la.

Neste exemplo, digamos que o software da carteira dele envia automaticamente o UTXO de Bitcoin do João no valor de 0,73 BTC para a Joana e devolve a quantia restante, menos as taxas de transação, ao João como um novo UTXO.

Este valor é automaticamente enviado para um endereço de troco; um endereço separado ligado à sua carteira de cripto.

O que é Bitcoin dust?

Bitcoin dust refere-se a UTXO que contêm pequenas quantidades residuais de satoshis de transações anteriores.

Por si sós, estas quantidades minúsculas de BTC custariam mais em taxas de transação para serem processadas do que o seu valor e, por isso, frequentemente permanecem em endereços de troco, à espera de serem agrupadas com outras UTXO e gastas.

O que é um ataque de dusting?

Os ataques de dusting referem-se a burlões que enviam dust para centenas de milhares de endereços de carteira diferentes. A ideia por trás disso é identificar potenciais alvos para ataques de engenharia social.

Um burlão observará os endereços que contêm o dust que enviou, esperando que o proprietário realize uma transação que agrupe UTXO de diferentes endereços ligados à sua carteira. Como as UTXO de dust são tão pequenas, há uma boa probabilidade de serem agrupadas com outras e usadas como entradas.

Assim que isto acontece, o burlão pode ter uma ideia de quais fundos uma pessoa possui. Pode então optar por incorporar mensagens de phishing em transações, convidando o proprietário a clicar num link que descarrega malware, ou a visitar sites falsos que imitam páginas de destino legítimas e pedem informações pessoais.

Quão perigosos são os ataques de dusting de Bitcoin?

Os ataques de dusting não dão aos burlões acesso aos seus fundos.

Eles servem apenas para restringir quais endereços são controlados por uma determinada carteira de cripto.

Para minimizar o seu risco de ataques de dusting, é melhor nunca clicar em links ou visitar websites anexados a transações de dust.

Comece a comprar Bitcoin

Agora que você aprendeu tudo sobre o modelo de output de transação não gasta, está pronto para continuar a sua jornada cripto e comprar Bitcoin?

Consulte o nosso guia Kraken Learn Center para obter mais informações sobre Como comprar Bitcoin (BTC) e abra uma conta com a Kraken hoje mesmo.

Alguns conteúdos desta página podem ter sido traduzidos usando IA