🧱 O que é um UTXO?
Unspent Transaction Output? É hora de entender o que significa através de 3 metáforas: Planilha de Excel, Bonecas Russas e Notas de Dinheiro.
Você já deve ter ouvido o termo "UTXO".
UTXO significa Unspent Transaction ("Tx.") Output. A tradução não ajuda muito.
UTXOs são a menor unidade de informação econômica que pode ser registrada na blockchain do Bitcoin.
Se a blockchain fosse um organismo, o bloco seria a molécula, e o UTXO seria um átomo.
Mesmo sendo a menor unidade de matéria em um corpo, átomos podem se distinguir pela composição ou carga elétrica. Mesmo sendo a menor unidade de informação em uma blockchain, UTXOs podem se distinguir pela quantidade de BTC que carregam e pela sua origem.
📝 Entendendo UTXOs pt.1: Uma Planilha do Excel
Um UTXO é um registro contábil na base de dados que é a blockchain.
Isto mesmo: na essência, a blockchain nada mais é que uma base de dados.
Entradas nessa base de dados podem conter um valor em bitcoin, ou não. Dentre as que contém, há 2 tipos: ou o UTXO foi minerado (e tem um valor predeterminado pelos parâmetros da rede), ou o UTXO carrega bitcoin de um UTXO anterior (foi transacionado). UTXOs recém minerados são chamados de coinbase (é daí que vem o nome da famosa bolsa americana).
A base de dados do Bitcoin tem algumas peculiaridades. Como é preciso garantir que nenhuma moeda seja gasta indevidamente, toda movimentação contém um link para uma movimentação anterior (a origem dos bitcoin sendo movidos). Assim como todo bloco remete ao bloco anterior (o que é um critério para ser aceito pela rede).
É por isso que a tecnologia por trás do Bitcoin é descrita como uma cadeia de blocos (blockchain).
Numa analogia com o Microsoft Excel, é como se o Bitcoin fosse uma grande planilha, onde cada linha é uma unidade de tempo (um bloco, ou 10 minutos), e cada coluna é um endereço (uma "conta de usuário"). A planilha pode se expandir nas duas direções - para baixo e para a direita - mas nenhuma célula já registrada pode ser apagada ou editada. Cada célula equivale a um UTXO:
Cada UTXO (ou célula) necessariamente referencia um UTXO anterior, do qual se origina o valor (ou parte do valor) do novo UTXO (célula). Não é permitido que um UTXO sem antecessor seja escrito na planilha. Um novo UTXO só pode conter bitcoin se estes bitcoin vierem de um UTXO já existente (salvo o caso de UTXOs minerados, ou coinbases - em laranja, na imagem acima).
Cada UTXO é associado a uma "conta de usuário" (as colunas, acima), e somente este usuário pode criar um novo UTXO (uma nova célula) contendo alguns dos bitcoin que possuía anteriormente em seu nome.
Uma transação é basicamente quando um UTXO é criado carregando bitcoin de uma "conta de usuário" para outra, através da adição de "uma nova célula na planilha", assinada pelo "dono" do primeiro UTXO.
🎎 Entendendo UTXOs pt.2: Bonecas Russas
Uma maneira visual de entender o que UTXO significa é pensar na blockchain do Bitcoin como um registro em camadas.
A unidade de informação central da blockchain é o bloco. Cada bloco "empacota" uma série de transações. Cada transação "empacota" uma série de UTXOs.
Confunde-se frequentemente UTXOs com endereços, e até com transações, mas é importante entender que são coisas diferentes.
Um endereço, na nossa analogia do Excel, equivale a uma coluna (e.g. Satoshi, a primeira coluna na planilha, e o primeiro endereço ativo na blockchain). Um endereço pode ser associado a vários UTXOs (uma coluna na planilha pode ter várias células preenchidas).
Também vale ressaltar que uma mesma pessoa pode ser dona de múltiplos endereços - como há, por exemplo, Satoshi 1, Satoshi 2 e Satoshi 3 na planilha.
Uma transação necessariamente contém mais que um UTXO (a não ser no caso de uma coinbase). Os UTXOs numa transação são divididos em inputs e outputs: o(s) UTXO(s) de onde os bitcoin sendo movidos vêm, e o(s) novo(s) UTXO(s) criado(s) (que podem ser incluídos na mesma coluna da planilha, ou em uma coluna diferente). Uma transação pode ter múltiplos inputs e outputs, referenciando e criando, assim, uma série de UTXOs.
💷 Entendendo UTXOs pt.3: Notas de Dinheiro
Além de células numa planilha de Excel, UTXOs também podem ser enxergados como notas de dinheiro em espécie.
Um UTXO é como "uma nota de Bitcoin".
No Brasil, há notas de 50, 100, 5, 2 reais; moedas de 5, 10, 25 centavos; e por aí vai. É comum que, em uma transação, você precise juntar um bocado destas para chegar ao valor que quer pagar.
Com o bitcoin acontece algo parecido. Se eu manejo um endereço que é dono de quatro UTXOs com 10, 1, 5, e 0.5 BTC, e quero fazer uma transação de 13.5 BTC, vou ter de combinar dois ou mais UTXOs como inputs, e "pegar um troco" na forma de um novo UTXO (output) criado sob meu endereço.
Abaixo, você visualiza uma transação na qual ROGER envia 15 BTC para EVA, no bloco 8 (gastando um UTXO de 30 BTC e tomando de volta 15 BTC como "troco"):
De novo: é parecido com notas de dinheiro. Para comprar um chiclete de R$1.45, você provavelmente vai combinar algumas moedas, e talvez ainda pegue um troco.
Mas, quando se anda com dinheiro na carteira, não se pensa em cada nota individualmente. O que importa é o valor coletivo que elas representam.
Por isso, quando se usa uma carteira digital de bitcoin, o programa trata de mostrar o saldo total sob controle do usuário - e não cada UTXO individualmente. Abstrai-se a complexidade das "notas", e se foca somente no "balanço" de cada endereço. Abaixo, você vê como uma carteira contaria o saldo de HAL no bloco 8 do exemplo que estamos usando:
A essa altura, já deve ter ficado claro que aquilo que chamamos de bitcoin é, na verdade, uma colcha de retalhos em eterna recostura.
Na prática, um bitcoin não "existe" isoladamente. O que existe é uma malha de UTXOs interconectados. Bitcoin fluem por esse tecido. Ele ganha um novo pedaço a cada mais ou menos 10 minutos.
🔧 UTXOs na prática
Por que diabos o Bitcoin foi desenhado dessa maneira? As razões são múltiplas.
De modo geral, a implementação de uma base de dados neste formato simplifica a contabilidade da blockchain. Se você está interessado em "verificar o estado atual da blockchain", não precisa armazenar e perscrutar cada transação individual transcorrida desde o bloco 1. Basta monitorar os UTXOs existentes para ter um retrato detalhado do que está acontecendo.
Se você quiser ver um UTXO como ele realmente é, e não através de metáforas, leia a continuação desta série.
Neste próximo texto, mostramos como um UTXO se apresenta para um desenvolvedor; vemos a cara dele em um explorador de blocos; e passamos pelas mais inovadoras maneiras de se monitorar UTXOs do Bitcoin.