A saída de transação UTXO ou Unspent é um dos conceitos centrais que permitem o funcionamento adequado da tecnologia blockchain que Satoshi Nakamoto desenvolveu para Bitcoin, a primeira criptomoeda do mundo.

Ddécadas antes de ser criado Bitcoin , a obsessão em criar um dinheiro puramente digital assombrava a cabeça de muitas pessoas. Mas um dos principais problemas que todos enfrentaram foi o famoso gastos duplos.

Fue Satoshi Nakamoto que, graças a um conjunto de técnicas, resolveram este grande problema, conseguindo criar o primeiro dinheiro descentralizado puramente digital. Neste artigo iremos explicar o que são UTXOs e o grande papel que eles desempenham na criação de transações para que seus bitcoins possam viajar com segurança dentro do protocolo blockchain.

UTXO, um conceito para evitar gastos em dobro

Como já explicamos no artigo que visa Como funcionam as transações em Bitcoin?, uma transação é composta de entradas e saídas. O conjunto de entradas e saídas, juntamente com as moedas a serem enviadas e as assinaturas criptográficas, resultam em um hash de transação, geralmente chamado de HASH ID.

As entradas são HASH ID de uma transação que recebeu o bolsa e que não tenham sido utilizados anteriormente, ou seja, são UTXO, enquanto a saída é o endereço de destino, para o qual será criado o UTXO que poderá ser usado posteriormente em uma transação. O mesmo endereço pode ter UTXOs infinitos. É por isso que os UTXOs são definidos como um conjunto de transações.

Quando uma pessoa precisa enviar uma transação, ela deve ser alimentada por UTXO. Ou seja, de transações que você recebeu e que não foram gastas. Isso significa que uma pessoa pode usar um ou mais UTXOs para a mesma transação. Na verdade, esses UTXOs podem fazer parte de um ou mais endereços de sua carteira. E vamos além, mesmo uma transação poderia ser criada com UTXO a partir de endereços de carteiras diferentes, desde que cada uma seja assinada com sua chave privada clara correspondente.

Tudo isso leva a um lugar: um UTXO só pode ser usado uma vez. E isso é fundamental dentro da operação da tecnologia blockchain, pois faz parte do conjunto de ferramentas que garantem que as moedas não sejam utilizadas mais de uma vez (o famoso gasto duplo).

A confiabilidade do uso desse mecanismo para identificar moedas não gastas é tamanha que é assim que no Bitcoin você pode contar quantas moedas existem em circulação. O que você faz é somar todas as moedas que estão no UTXO, ou seja, nas transações que não foram gastas.

Aqui está um exemplo simples para que você entenda o fluxo:

Imagine que Maria queira pagar a Pedro um total de € 100 em bitcoins por um trabalho. María espera receber o pagamento de algumas pessoas que devem seus bitcoins e desse dinheiro ela pagará pelo trabalho de Pedro.

Quando Maria receber esses pagamentos, ela terá algumas "Entradas" de dinheiro, e com essas entradas fará uma "Saída" para pagar o Pedro. A Maria pagou as suas dívidas, que eram um pagamento de 75 € e outro de 50 €.

Quando ela paga Pedro, Maria tem que usar as duas entradas, já que nenhuma delas tem o suficiente, e ela colocará Pedro como saída.
Depois disso, Pedro terá uma entrada UTXO (ele recebeu o pagamento).

Para onde vão as moedas restantes?

Como você pode ver, María tinha um total de € 125 divididos em dois UTXOs, mas ela só precisava enviar € 100. Você teve que usar os dois UTXOs, definindo o endereço de Pedro como Saída ou saída, mas sua bolsa terá feito algo mais de forma transparente para Maria. A sua carteira terá colocado um endereço de Maria como ponto de venda, ao qual terá atribuído os restantes 25 €. É o que se conhece como direção da mudança.

A propósito, existem algumas transações que se tornam um UTXO, mas não são geradas por um UTXO anterior. Continue lendo para descobrir o que são.
Com o que está descrito acima, você pode entender como esse modelo de "Ingressos" y "Partidas", pode nos ajudar a estabelecer relações de posse e concessão de dinheiro. Uma relação que em blockchain é marcada pelo uso de criptografia e que nos dá segurança absoluta de que o dinheiro chegou ao seu destino e que está efetivamente sob o controle do destinatário.

UTXO e sua importância no Bitcoin

No Bitcoin todas as transações possuem essa estrutura de entradas e saídas. Nas "Entradas" de uma transação de Bitcoin, podemos ver as origens do saldo que estamos gerenciando com nossa carteira ou bolsa. Já em "Saídas" podemos ver para onde enviamos o nosso dinheiro. Além disso, também podemos ver o dinheiro restante que é devolvido. Tudo isso é visível e rastreável por qualquer pessoa, já que o blockchain do Bitcoin é público e transparente.

Se você olhar de perto, este modelo permite que você tenha controle total sobre como o dinheiro pode ser usado e em quais condições ele pode ser usado. Em primeiro lugar, para usar um saldo em Bitcoin, esse saldo deve ser considerado um UTXO dentro de sua carteira. Ou seja, alguém deve fazer um pagamento (uma saída ou UTXO) para que esse pagamento se torne sua entrada e, assim, você tenha saldo disponível para gastar.

Este é um processo recursivo. Ou seja, ela se repete a partir do momento em que a moeda é gerada a partir de um bloco minerado. Por exemplo, um transação com base em moeda na verdade, é um UTXO criado pelo minerador para enviar o saldo a um endereço sob seu controle. Assim, essa transação de saída torna-se uma entrada de dinheiro para o mineiro que ele pode gastar mais tarde. O mesmo processo é repetido para o resto dos usuários de Bitcoin. Com isso podemos ver que os UTXOs são uma parte essencial das transações Bitcoin e sem eles, seu funcionamento seria impossível.

Expandindo o exemplo de como um UTXO funciona no Bitcoin

Podemos ver a operação de um UTXO em Bitcoin da seguinte maneira:

Daniel quer pagar pelo carro de Luis, avaliado em 1 BTC, e um total de 1,5 BTC está disponível em sua carteira. O equilíbrio de Daniel é dividido em duas direções, A com 0,8 BTC e B com 0,7 BTC.

Assim, Daniel vai até Luis e faz o pagamento de 1 BTC. Neste ponto, a carteira de Daniel não pode enviar 1 BTC diretamente porque o saldo está dividido em duas direções. Portanto, ele pega os dois saldos e os converte nas entradas da transação de pagamento. Em seguida, pega o endereço de Luis e atribui-lhe o envio de 1 BTC, além disso atribui um total de 0,4995 BTC ao endereço de troca, e o restante fica como comissão de mineração.

Assim que Daniel enviar sua transação, ela será processada e confirmada pela rede, iniciando seu caminho para a irreversibilidade. E neste ponto, será fácil ver onde estão os UTXOs da transação.

O primeiro UTXO que podemos detectar no exemplo são os saldos de Daniel. Esses endereços com 0,8 BTC e 0,7 BTC de saldo, são dois UTXOs que estão sob seu controle e são os que lhes permitem fazer o pagamento a Luis. Como Daniel está no controle desses saldos, ele pode transformar seus UTXOs em "Tickets" para um novo pagamento, como faz neste exemplo.

Imediatamente após a rede confirmar a transação de Daniel, a situação muda. Agora, Daniel não tem mais sob seu controle os saldos que tinha originalmente e, em vez disso, sua transação gerou novos UTXOs que sobrescrevem os anteriores. Os novos UTXOs em questão são representados em primeiro lugar, pelo endereço de Luis e o 1 BTC que recebeu de Daniel. E em segundo lugar, pelo endereço de câmbio e pelo BTC de 0,4995 que o Daniel recebeu da rede, porque é o que resta do pagamento que ele fez. Como já dissemos, o resto para completar o 1,5 BTC que Daniel tinha em princípio permanece como um pagamento de comissão para o mineiro.

Bitcoin Scripts e sua relação com UTXOs

Todo o funcionamento do UTXO em Bitcoin é garantido pelo Bitcoin Script, a linguagem de programação usada para escrever todas as operações em Bitcoin. Cada transação possui um script associado que nos permite:

  1. Valide se a balança utilizada é realmente nossa.
  2. Certifique-se de que os saldos enviados só podem ser gastos pela pessoa para quem os enviamos.

Mas como essas operações são realizadas? Isso é o que explicamos abaixo:

Validando que o equilíbrio é nosso

A primeira tarefa para poder usar um saldo em Bitcoin é demonstrar que esse saldo é realmente nosso. Para fazer isso, a primeira coisa a ter em mente é que cada UTXO que transformamos em uma entrada (saldo que vamos gastar) é na verdade a saída de uma transação anterior que nos deu acesso a esses BTC. Ou seja, todo saldo de Bitcoin possui um UTXO associado a ele, e o referido UTXO possui um script de bloqueio associado a ele.

Este script de bloqueio é um cadeado digital que devemos abrir para podermos usufruir do saldo do referido UTXO. Os scripts de bloqueio em Bitcoin são variados, mas o mais comum é o P2PKH (pagamento para hash de chave pública). Embora também haja o P2SH (multisig), o P2PK (o mais primitivo de todos). Este script de bloqueio pode ser aberto com a chave privada que resulta no endereço indicado no UTXO.

Então, para desbloquear o referido script, o que devemos fazer é pegar o endereço do Bitcoin, pegar nossa chave privada e gerar a chave pública desse endereço. No final carimbamos a nossa assinatura digital e com todos estes dados verificados, o saldo desse endereço é desbloqueado para que possamos utilizá-lo. Ou seja, os nós aceitarão a transação e a colocarão no mempool esperando pelos mineiros.

Pelo contrário, se não o fizermos, a transação é simplesmente rejeitada pelos nós e não poderemos usar o saldo. Este processo é chamado de script de desbloqueio. Claro, esse processo criptográfico é automático e transparente para os usuários de uma carteira, todo o processo é realizado pela própria carteira, mas agora você sabe o que acontece dentro dela. Neste esquema, esta parte da operação é descrita no scriptSig de cada Script Bitcoin.

Criação do script de bloqueio

Ao demonstrar que podemos gastar nossos UTXOs, continuamos com o processo de criação da transação, criando um script de bloqueio para o novo UTXO direcionado ao destino. Neste caso, o que a carteira faz é criar um script semelhante ao criado anteriormente para nós, o que indica que só quem pode gastar este novo UTXO é quem possui as chaves privadas que controlam os endereços de onde temos enviei.

Desta forma, o que se cria é uma cadeia de validação, onde os bitcoins, ao passarem de um endereço para outro, são bloqueados para serem utilizados pela última pessoa que os possuir.

Como você pode ver, no Bitcoin tudo tem um porquê bem definido, e isso permite que todas as suas partes juntas permitam o correto funcionamento das criptomoedas. Por ser um protocolo aberto, todos os nodos que desejam fazer parte do protocolo interpretam as regras da mesma forma.

Todas as transações são revisadas por todos os nodos, sendo aceitas aquelas que aceitam a maioria e confirmadas aquelas que a maior parte do hash power (gerado pelas mineradoras) aceita. Esses controles garantem democraticamente o cumprimento do protocolo.

Quanto você sabe, cryptonuta?

O modelo UTXO está presente em todas as criptomoedas?

FALSO!

O modelo UTXO proposto no Bitcoin não está presente em todas as criptomoedas. Um exemplo disso é Monero. Nessa moeda, seu protocolo de privacidade e anonimato torna esse modelo impossível de funcionar. Em vez disso, os criadores do Monero encontraram uma solução criptográfica que permite ocultar as informações de gasto e saldo de moedas (UTXO) e ao mesmo tempo controlar o uso indevido de transações para realizar operações impróprias como gastos em duplicado, entre outros problemas de privacidade. e anonimato.

Curiosidades do UTXO em Bitcoin

Agora, no exemplo anterior, você certamente viu algumas coisas curiosas sobre UTXOs e como eles funcionam no Bitcoin, e daremos uma explicação nesta seção.

Transações que não vêm de um UTXO

Como indicamos anteriormente, existem algumas transações especiais, algumas que não são geradas com UTXOs, pois as moedas aparecem "magicamente". Este caso particular ocorre em transações de base monetária, que são criadas pelos mineiros no momento da mineração de um bloco e são usadas para obter a recompensa do bloco.

Por que não fazer um pagamento fracionário usando os saldos no BTC?

Ao ler o exemplo anterior, você certamente se perguntou por que a carteira Bitcoin de Daniel não fez um pagamento exato de 1 BTC usando uma única entrada? A resposta para isso é que os UTXOs representam o equilíbrio dentro do Bitcoin de forma indivisível. Ou seja, não podemos transformar esse saldo em valores menores, a menos que gastemos o saldo criando uma nova transação.

Para tornar mais fácil, vejamos este exemplo: se queremos pagar 1 BTC com nossa carteira, mas esse valor é dividido em 100 UTXOs diferentes que têm 0,01 BTC cada, então nossa carteira pegará os 100 endereços como entradas para nossa transação e com eles fará o pagamento. Ou seja, o protocolo Bitcoin marca esses 100 UTXOs como "gastos". A partir daí, gera uma nova transação com um novo UTXO que é para onde enviamos o pagamento de 1 BTC, e nos deixa sem controle de saldo nos endereços utilizados.

Relacionamento com comissões em Bitcoin

Outra utilidade do UTXO tem a ver com as comissões ou taxas em Bitcoin. No exemplo anterior, explicamos que cada vez que realizamos uma transação, a comissão dessa transação é igual à diferença entre as entradas e as saídas. Quer dizer:

Entrada total - produção total = Comissões

Isso indica que a construção de uma transação tem, desde o início, um saldo de comissões. A comissão para os mineiros não está associada a nenhuma produção, então os mineiros mantêm o que permanece não associado. Em outras palavras, a entrada total deve ser sempre maior que a saída total associada.

A comissão para os mineiros não é fixa, cada um decide quanto quer pagar dependendo da pressa em que estão, mas é algo que vemos em todas as transações dentro do Bitcoin e tem dois propósitos:

  1. Incentivar o trabalho dos mineiros que, ao gerar um bloco, não só recebem a recompensa do mesmo, mas também as comissões de todas as transações confirmadas por esse bloco.
  2. Evite que a rede seja vulnerável a ataques maliciosos, como DDoS, ataque de varredura, entre outros. Isso ocorre porque cada transação tem um custo e fazer transações em grandes números tem um custo alto para o invasor.

UTXO em outros blockchains e criptomoedas

O esquema UTXO é tão bom que o resto das criptomoedas decidiram usá-lo em seus sistemas. Claro, cada blockchain pode ajustar esse conceito de maneira diferente. Desta forma, ele pode se adaptar às funções adicionais que cada protocolo blockchain onde são executados pode apresentar. No entanto, a operação básica é a mesma. Portanto, até moedas de privacidade como monero o Zcash, use este esquema ajustado às particularidades do seu protocolo.