O que são e como cuidar de seus UTXO
Organize sua carteira de maneira bem estruturada para evitar dores de cabeça
As wallets de bitcoin muitas vezes trazem interfaces bastante amigáveis que escondem toda a complexidade por baixo dos panos e oferece ao usuário uma visualização simples do seu saldo total e um resumo das suas entradas e saídas de dinheiro. Com isso, fica muito mais fácil trazer novos usuários para a rede e mostrar de forma simples e prática como enviar e receber bitcoins em uma carteira onchain.
Entretanto, conforme já mencionado aqui nesse post, uma carteira bitcoin moderna na verdade é um agregador de chaves de múltiplos endereços que estão no controle de uma única chave “mestre“. Essa chave mestre pode ser derivada infinitas vezes, criando múltiplos endereços para o detentor da carteira, como você pode visualizar na imagem abaixo:
Por isso, o que chamamos de carteira na verdade é um software complexo que monitora os endereços que estão sob controle de uma chave mestre e agrega o saldo de maneira inteligente para que o usuário possa somar tudo e ver quanto tem. Quando o usuário recebe bitcoin em um endereço, nesse momento é criado um UTXO (unspent transaction output), que representa na blockchain um saldo disponível sob controle do endereço X que pode ser gasto pelo detentor da chave privada daquele endereço.
Um UTXO é como se fosse uma cédula física de dinheiro representando um valor determinado. Vamos supor que João recebeu de Maria 0.1 bitcoins como pagamento e esse valor foi enviado para o endereço bc1xpt1 (exemplo):
Agora João possui uma “cédula“ de 0.1 bitcoins. No mês seguinte, Maria vai enviar mais um pagamento para João, agora de 0.2 bitcoins João abre a sua carteira e gera um novo endereço, o bc1xpt2. João agora possui dois UTXOS: um de 0.2 e outro de 0.1. A wallet dele mostra em uma interface amigável que João possui um saldo total de 0.3 bitcoins.
Caso João decida gastar um pouco de bitcoin, a wallet vai usar um desses endereços ou somar os endereços em uma transação única até chegar a quantia desejada do gasto de João. Vamos supor que João vai gastar 0.25 bitcoins de sua carteira e enviar para Pedrinho. A carteira vai montar a seguinte transação:
Quando um UTXO é gasto, ele é completamente destruído no processo. Porém a mesma carteira gera automaticamente um novo endereço onde João irá receber o troco restante da sua transação e com isso um novo UTXO! Agora João possui um novo UTXO em um novo endereço contendo o troco de 0.04995000 bitcoins (nesse exemplo João pagou 5000 sats de taxa de rede).
Dessa maneira, é muito simples desenhar uma analogia comum de como funciona uma transação de bitcoin: seria o equivalente a pagar por algo usando cédulas de papel e receber o troco de volta em outras cédulas.
Legal, mas e aí?
O “problema“ disso é que as transações onchain são abertas e podem ser rastreáveis por empresas que buscam identificar transações consideradas “criminosas“ e também por governos que podem usar o serviço dessas empresas para identificar o saldo total de bitcoin que um humilde contribuinte tem e se esse saldo condiz com o que foi declarado oficialmente.
Vejamos a seguinte situação agora: João está comprando uma parte de BTC usando a corretora e declarando certinho para ter um valor justificável quando precisar comprar algo caro, um passaporte ou algo do tipo, mas também faz um stack separado usando P2P, ou vende coisas por bitcoin, ou especula em plataformas de trading, ou qualquer outra coisa fora do radar. Caso João use a mesma carteira para seu BTC “limpo“ quanto para seu BTC “sujo“, isso pode acarretar problemas.
Vamos supor que João tenha 2 endereços que foram marcados pela corretora e comunicados a máfia estatal de serem dele e com saldo de 0.1 BTC cada. Esses endereços estão agora sendo rastreados por uma empresa fictícia de análise onchain, a CornoTech:
Mas eis que João decide gastar esses bitcoins comprando um XBox de natal em uma loja online qualquer. O XBox custa 0.15 bitcoin. João abre a carteira e escaneia o endereço de destino, e a carteira então monta uma transação somando os saldos dos UTXOs de João. Mas espere! João também possui na mesma carteira outros UTXOs de compras que ele fez com um P2P libanês. Na hora de gastar, a wallet simplesmente mistura um endereço rastreado pela CornoTech com outro endereço desconhecido:
Com isso, agora a CornoTech envia um report para o governo satânico dizendo que tem coisa estranha aí, pois João tem apenas 0.2 BTC declarados oficialmente mas naquela movimentação ele usou também como entrada um endereço não declarado, o que indica que ele também é o dono de um dinheiro que não foi comunicado aos parasitas!
Esse é um dos exemplos de problemas que podem acontecer caso o usuário misture UTXOs declarados e não declarados na mesma carteira.
O que eu faço então?
As estratégias mais simples para evitar esse tipo de problema são:
Segregar completamente o btc rastreado do não rastreado em wallets completamente distintas
Usar wallets que permitam que você rotule seus endereços e UTXOs e também fazer a seleção manual de quais UTXOs você deseja usar em uma transação
A opção 1 é a mais simples, apesar de que isso acarreta gerenciar mais de uma wallet. Uma alternativa é usar a mesma seed (as 12 ou 24 palavras) e passphrases diferentes para a carteira rastreada e não rastreada, assim você pode manter um único backup seguro.
A opção 2 é voltada para usuários mais avançados, pois o ideal é usar um software que traga esse tipo de funcionalidade, como a Sparrow, Electrum ou Specter Wallet. Porém esses aplicativos não são intuitivos e exigem maior conhecimento do usuário para serem configurados e utilizados da maneira correta. Muitas wallets de celular também trazem essas funcionalidades, mas elas ficam mais escondidas do usuário em detrimento a uma UI mais amigável.
Portanto identifique se esse é o caso e passe a cuidar melhor de suas UTXOs. Mesmo optando pela opção 1, um passo simples e eficaz é sempre dar um rótulo para cada endereço com saldo de forma a identificar a origem daquela entrada ou troco.
Show de bola, Doom 👏🏻👏🏻👏🏻👏🏻
Agora, faz outro artigo, ensinando a galera sobre o que ocorre por debaixo do Capô de uma transação assinada Air Gapped.
A bola que quero levantar, para vc cortar, é:
Para onde vai o meu troco, já que assinei off-line?
Abraço. Flying V do X (Twitter)
Finalmente entendi UTXO, obrigado!