Muito antes da invenção do Bitcoin, a ideia de criar uma forma de dinheiro digital intrigava inúmeros entusiastas. Porém, todos esbarravam em um obstáculo significativo: o dilema do gasto duplo.
Foi com a genialidade de Satoshi Nakamoto, que conseguiu fazer uma junção de tecnologias pré-existentes, que esse obstáculo foi finalmente superado, dando origem à primeira moeda completamente digital e descentralizada, o Bitcoin.
Um componente fundamental para resolver o problema do gasto duplo é o UTXO. Neste artigo você vai descobrir em detalhes o que é UTXO (Unspent Transaction Output) e entender a sua importância no processo de transações do Bitcoin.
Mas primeiro, vamos começar explorando como as transações na rede Bitcoin funcionam, até chegarmos no entendimento dos UTXOs.
Sumário:
Como funcionam as transações no Bitcoin?
Uma transação, em termos simples, é a transferência de valor de uma pessoa para outra.
Por exemplo, quando tenho uma nota física de dinheiro e a entrego a outra pessoa, estou realizando uma transação financeira. Da mesma forma, no sistema bancário, ao transferir fundos da minha conta bancária para outra, estou executando uma transação.
Assim, no Bitcoin, o conceito de transação é semelhante, ou seja, é quando eu movimento bitcoin do meu endereço para outro.
Entretanto, no Bitcoin há algumas diferenças que são bem importantes.
As transações de Bitcoin não ocorrem de forma física, como acontece com o dinheiro em papel, nem se assemelham às transferências entre contas digitais nos bancos. As movimentações de Bitcoin consistem em registros, mensagens codificadas que são inseridas na blockchain.
Essas mensagens são criptografadas e assinadas digitalmente, sendo posteriormente propagadas pela rede para fins de autenticação.
Como resultado, todas as transações no Bitcoin são transparentes e imutáveis, permitindo que qualquer pessoa verifique e rastreie as transações desde o início do funcionamento do Bitcoin, em 2009.
Além da imutabilidade de registros e da transparência, outra diferença fundamental reside na parte técnica das transações. Quando alguém envia Bitcoin de um endereço para outro, essa pessoa não está simplesmente transferindo um “saldo”, mas sim gastando uma ou mais saídas de transações anteriores.
É aqui que começamos a entender o conceito de UTXOs (Unspent Transaction Outputs).
Para facilitar o entendimento, imagine a seguinte lógica:
- Se a Kaká envia 1 BTC para Carol, ela pode estar gastando uma saída de uma transação anterior que ela recebeu de Fernanda.
- Essa saída de transação, anteriormente recebida de Fernanda, agora será usada como entrada na nova transação enviada por Kaká para Carol.
Embora isso possa parecer complexo à primeira vista, continuaremos a explicação para que, ao final, tudo faça sentido.
A seguir vamos detalhar o passo a passo do mecanismo de transações no Bitcoin, desde sua criação até sua confirmação, para que fique fácil de entender todo o processo.
1. Criação da transação
Quando alguém deseja enviar Bitcoin a outra pessoa:
- O remetente especifica o endereço do destinatário e a quantidade de Bitcoin que deseja enviar.
- A transação vai incluir uma ou mais “entradas” (inputs) e uma ou mais “saídas” (outputs).
O que são Entradas (Inputs)?
As entradas são referências a UTXOs (Unspent Transaction Outputs) anteriores, ou seja, saídas de transações anteriores que ainda não foram gastas. São as “moedas” que o remetente está usando para financiar a transação.
As Inputs nos ajudam a verificar de onde vêm os bitcoins que vão ser usados em uma nova operação e mostram o endereço onde esses bitcoins foram inicialmente recebidos.
O que são Saídas (Outputs)?
Os Outputs indicam o endereço de destino da transferência e a quantia enviada. Também mostram o endereço de “troco” ou devolução, para onde vão os valores restantes da operação. Por isso, uma transação pode ter várias saídas.
Na imagem abaixo, é possível entender como funcionam os Inputs e Outputs.
Alice recebeu três transações de Bitcoin, que representam os inputs. Quando Alice envia 0.8 BTC, o valor total de sua carteira, para sua amiga Nancy, essas três transações são combinadas em um único output.
Se Alice tivesse enviado 0.7 BTC para Nancy, ela teria um troco de 0.1 BTC, que seria enviado de volta para o endereço de troco indicado no output da transação.
2. Definição das taxas de transação (fee)
Para incentivar os mineradores a incluir a transação em um bloco, o remetente normalmente inclui uma taxa de transação. Essa taxa é a diferença entre os inputs e os outputs da transação.
3. Assinatura digital
No terceiro passo, a transação é assinada digitalmente pelo remetente com sua chave privada, provando que ele é o proprietário dos UTXOs que está gastando e autorizando a transferência.
4. Propagação da transação na rede
Uma vez criada e assinada, a transação é transmitida à rede Bitcoin e entra na mempool, onde espera ser incluída em um bloco.
5. Verificação e confirmação da transação pelos mineradores
Os mineradores escolhem transações da pool de transações não confirmadas, verificam sua validade (garantindo que os UTXOs usados ainda não foram gastos) e tentam incluí-las em um novo bloco por meio do processo de mineração.
Uma vez que a transação é incluída em um bloco e esse bloco é adicionado à blockchain, a transação é considerada “confirmada“.
8. Criação do identificador (TXid) da transação
Cada transação confirmada possui um código único, chamado hash. Esse código é criado com base nas entradas e saídas da transação. Ele serve para reconhecer e diferenciar cada operação de maneira exclusiva na blockchain.
7. Mais confirmações na rede
Para maior segurança, especialmente para transações de valor elevado, espera-se que mais blocos sejam adicionados acima do bloco que contém a transação. Cada novo bloco adicionado representa uma confirmação adicional.
Agora que você viu como é o processo de uma transação no Bitcoin e como os UTXOs desempenham um papel fundamental, vamos explicar especificamente esse mecanismo.
O que é UTXO?
UTXO, ou “Saída de Transação Não Gasta”, representa a quantidade de Bitcoin que permanece não utilizada após uma transação. Cada transação envolve entradas e saídas, onde as UTXOs são os saldos disponíveis que um usuário pode gastar.
Cada UTXO é associado a um endereço Bitcoin, ou seja, para gastar seu bitcoin, primeiro alguém tem que ter enviado um valor pra você, criando um Unspent Transaction Output em sua carteira.
Por exemplo, imagine que você possui um UTXO de 10 BTC e deseja enviar 7 BTC para outra pessoa. Ao fazer isso, você gasta o UTXO de 10 BTC, criando dois novos UTXOs: um para o destinatário, com 7 BTC, e outro para você mesmo, com 3 BTC como “troco”.
Esse sistema garante que você tenha controle total sobre seus fundos e saiba exatamente em que situações esses fundos podem ser gastos.
Esse processo ocorre continuamente desde o início do Bitcoin. Quando um minerador cria um novo bloco, ele recebe bitcoins como recompensa, e isso também é representado como uma Saída de Transação não Gasta, adicionando o valor ganho à “conta” do minerador para uso futuro.
É assim para todos que usam Bitcoin.
Conjunto UTXO
Uma pessoa pode fazer diversas transações usando o mesmo endereço bitcoin, isso significa que um único endereço pode acumular inúmeros UTXOs. Por isso, os UTXOs são vistos como um agrupamento de operações.
Todos eles juntos, ou seja, todas as saídas de transações que ainda não foram gastas, compõem o que chamamos de Conjunto UTXO.
Os nodes, ou participantes verificadores da rede Bitcoin, mantêm e atualizam constantemente este conjunto. Eles fazem isso para ter um registro claro de quais moedas bitcoin estão disponíveis para serem gastas e, principalmente, quem tem o direito de gastá-las.
Uma pessoa pode combinar vários UTXOs em uma única transação, mesmo que eles venham de diferentes endereços dentro da mesma carteira.
Além disso, é possível também combinar UTXOs de várias carteiras em uma só transação, desde que cada UTXO seja validado com sua chave específica.
Entretanto, um UTXO só pode ser usado uma única vez. Isso é crucial para o bom funcionamento do sistema blockchain, pois garante que a mesma moeda digital não seja gasta duas vezes, evitando o problema que mencionamos no início do artigo, o gasto duplo.
O Problema do Gasto Duplo
O problema do gasto duplo é um desafio central enfrentado por moedas digitais, ocorrendo quando alguém tenta gastar a mesma unidade de dinheiro digital mais de uma vez.
Em termos de moedas tradicionais, pode ser comparado a alguém usando a mesma nota de dinheiro para comprar dois itens diferentes em lugares distintos, sem que os vendedores percebam.
Em um sistema que não possui uma autoridade central (como um banco) para verificar transações, existe o risco de um usuário copiar uma moeda digital e usá-la em várias transações. Esse problema era um obstáculo significativo para a criação de uma moeda digital descentralizada, até o surgimento do Bitcoin.
Como o Conjunto UTXO previne e resolve o Gasto Duplo?
Com o conjunto UTXO, o Bitcoin encontrou uma maneira eficaz de combater o gasto duplo. Isso acontece porque sempre que é feita uma transação, os nodes verificam esse conjunto para garantir que os UTXOs que estão sendo usados como entradas para a transação ainda não foram gastos.
Assim, se um UTXO já tiver sido utilizado, a transação será considerada inválida e rejeitada pela rede.
Aqui estão pontos importantes para enteder como os UTXOs resolvem o gasto duplo:
- Registro Único de Propriedade: Cada UTXO representa uma quantidade específica de bitcoin que foi enviada para um endereço e ainda não foi gasta. O UTXO contém uma referência clara ao endereço que pode gastá-lo.
- Verificação Antes da Transação: Quando uma transação é proposta, os nodes da rede verificam se os UTXOs que estão sendo usados como entradas para a transação ainda são “não gastos” e se pertencem de fato ao remetente. Se um UTXO já foi gasto, a transação é considerada inválida.
- Atualização Contínua: Uma vez que um UTXO é usado em uma transação (ou seja, torna-se uma entrada), ele é considerado “gasto” e não pode ser usado novamente em futuras transações. A mesma transação criará novos UTXOs para os destinatários, que agora podem gastá-los em futuras transações.
- Imutabilidade da Blockchain: Uma vez que uma transação é confirmada e incluída em um bloco na blockchain, torna-se computacionalmente difícil (e, depois de várias confirmações, praticamente impossível) revertê-la. Isso garante que, uma vez que um UTXO é gasto, ele não pode ser “desgasto”.
- Visibilidade Pública: A blockchain é um registro público. Qualquer participante da rede pode verificar a validade de uma transação e a existência de UTXOs. Uma maneira de fazer isso é através de exploradores de blocos.
Em resumo, o modelo UTXO do Bitcoin garante que cada bitcoin só possa ser gasto uma vez, rastreando rigorosamente a propriedade e o gasto de cada fragmento de bitcoin através de um sistema público, transparente e à prova de adulterações.
Na prática, isso torna o gasto duplo extremamente difícil, se não impossível.
Qual a relação do Unspent Transaction Output com privacidade?
Ao enviar bitcoin, você pode escolher usar UTXOs específicos como entradas para sua transação. Isso permite alguma flexibilidade, pois os usuários podem optar por gastar UTXOs de endereços que consideram menos sensíveis ou menos vinculados à sua identidade (sem KYC).
Além disso, a maioria das carteiras Bitcoin automaticamente envia o “troco” de uma transação para um novo endereço gerado pelo próprio usuário (um novo UTXO). Isso é feito para melhorar a privacidade, tornando mais difícil a vinculação de transações futuras a transações anteriores e à identidade do usuário.
No entanto, é importante ter em mente que o modelo UTXO, por si só, não garante privacidade completa.
Analistas e empresas especializadas, como a Chainalysis, têm a capacidade de usar técnicas de análise de blockchain para deduzir padrões e, potencialmente, identificar usuários, especialmente quando não há medidas adicionais de privacidade em vigor.
Existem ferramentas e técnicas, como CoinJoin e assinaturas Schnorr, que buscam aumentar a privacidade nas transações Bitcoin. Elas têm o objetivo de dificultar ainda mais a análise e o rastreamento de UTXOs, tornando as transações mais confidenciais e protegendo a privacidade dos usuários.
Como verificar o UTXO de um endereço?
Verificar um UTXO no Bitcoin significa verificar se uma determinada saída de transação ainda não foi gasta e está disponível para ser usada como entrada em uma nova transação. Para realizar essa verificação, geralmente se consulta a blockchain do Bitcoin.
Aqui estão algumas maneiras de como você pode verificar um UTXO:
1. Usando um explorador de blocos
Existem vários exploradores de blockchain disponíveis, sendo um dos mais populares o Mempool.space.
Ao acessar o Mempool.space, você pode inserir um endereço Bitcoin específico e ver os UTXOs associados a ele.
O explorador mostrará uma lista de transações associadas ao endereço e, entre elas, as saídas não gastas (UTXOs) que ainda estão disponíveis.
Aqui está um exemplo:
2. Usando uma carteira de Bitcoin
Muitas carteiras Bitcoin permitem que você visualize os UTXOs associados aos endereços contidos na carteira. Além disso, quando você cria uma transação, a carteira seleciona automaticamente UTXOs para financiar a transação.
3. Usando software ou um node
Se você estiver executando um nó Bitcoin (por exemplo, usando o software Bitcoin Core), poderá consultar os UTXOs diretamente. Esta é a maneira mais privada e segura de verificar os UTXOs, pois você não está dependendo de um site de terceiros nem revelando suas consultas a uma entidade externa.
No entanto, rodar seu próprio nó exige um conhecimento um pouco mais avançado.
As transações na rede Lightning possuem UTXO?
Não! As transações dentro da Lightning Network não utilizam o sistema UTXO da mesma maneira que as transações on chain (na blockchain principal) do Bitcoin.
Vamos entender isso:
Iniciando um canal Lightning
Quando você abre um canal na Lightning Network, o que ocorre on-chain é a criação de uma transação que bloqueia uma certa quantidade de Bitcoin em um endereço multiassinatura. Essa transação cria um UTXO.
Transações dentro do canal
Uma vez que o canal está aberto, os participantes podem realizar um número quase ilimitado de transações entre si usando esse canal.
Essas transações são fora da cadeia (off-chain) e não resultam na criação de novos UTXOs na blockchain do Bitcoin.
As transações dentro do canal se assemelham mais à atualização de saldos em um livro-razão compartilhado entre as duas partes do canal. Portanto, elas não estão sujeitas ao sistema UTXO tradicional.
Fechando o canal
Quando os participantes decidem fechar um canal, uma transação final é criada e transmitida para a blockchain do Bitcoin, refletindo o saldo final entre as partes.
Esta transação on-chain eliminará o UTXO original (criado ao abrir o canal) e criará novos UTXOs correspondentes aos saldos finais de cada parte.
Portanto, enquanto a abertura e o fechamento de canais na Lightning Network envolvem UTXOs na blockchain do Bitcoin, as transações que ocorrem na Lightning Network não utilizam ou criam UTXOs diretamente.
A beleza da Lightning Network é que ela permite um grande número de transações fora da cadeia, reduzindo a necessidade de registrar cada transação individual na blockchain principal e, assim, aliviando a congestão e as taxas associadas.
Conclusão
Espero que você tenha gostado desse artigo e que ele tenha te ajudado a esclarecer o que são UTXOs e como esse mecanismo funciona no Bitcoin.
Continue aprendendo com a gente através dos textos aqui no blog, nos vídeos em nosso canal do youtube e também nos cursos de bitcoin disponíveis em nossa plataforma.
Até mais e opt out!
Compartilhe em suas redes sociais:
Uma das principais educadoras de Bitcoin no Brasil e fundadora da Area Bitcoin, uma das maiores escolas de Bitcoin do mundo. Ela já participou de seminários para desenvolvedores de Bitcoin e Lightning da Chaincode (NY) e é palestrante recorrente em conferências sobre Bitcoin ao redor do mundo, bem como Adopting Bitcoin, Satsconf, Bitcoin Atlantis, Surfin Bitcoin e mais.
Curtiu esse artigo? Considere nos pagar um cafezinho para continuarmos escrevendo novos conteúdos! ☕