Pular para o conteúdo
buybitcoinsmart

Glossário / Transações e taxas

UTXO

Outros nomes: Saída de transação não gasta.

O que é um UTXO?
Um UTXO é uma parte não gasta de bitcoin que está em um endereço, criada por inteiro por uma transação anterior e que só pode ser gasta por completo, nunca em parte.

O bitcoin não tem contas nem saldos. Em vez disso, cada nó acompanha um conjunto ativo de saídas não gastas, e o saldo da sua carteira é apenas a soma daquelas cujas chaves ela guarda. Gastar destrói os UTXOs que você escolhe e cria novos, e é por isso que mover 100.000 satoshis pode custar mais do que mover 10.000.000.

Como funciona

O registro é uma coleção de UTXOs, não uma tabela de totais por conta. Cada saída registra duas coisas: um valor em satoshis, armazenado como um número de oito bytes, e um script de bloqueio que indica o que deve ser apresentado para desbloqueá-la. Até que algo a gaste, essa saída permanece no conjunto de não gastas, que todo nó completo mantém e atualiza bloco a bloco.

Um gasto é uma destruição seguida de uma criação. Sua carteira escolhe saídas inteiras como entradas, prova que pode desbloqueá-las e escreve saídas novas. Nada é subtraído no lugar, então pagar 0,3 BTC com um UTXO de 1 BTC significa criar um UTXO de 0,3 para o beneficiário e um UTXO de troco de aproximadamente 0,7 para você. O UTXO com que você começou desaparece do conjunto para sempre, e dois registros ocupam o lugar onde havia um.

Bitcoin Core mantém o conjunto inteiro em um banco de dados LevelDB chamado chainstate e guarda parte dele em cache na memória, com a opção -dbcache valendo 1.024 MiB por padrão, ou 450 em máquinas com menos de 4 GiB de RAM. Esse conjunto, e não o arquivo de blocos, é o que um nó consulta para responder à única pergunta que importa quando um pagamento chega: esta entrada aponta para algo que ainda existe? Um nó podado pode descartar centenas de gigabytes de blocos antigos e ainda validar perfeitamente, porque o conjunto de não gastas é o estado.

Duas curiosidades ficam nas bordas. Os 50 BTC pagos ao coinbase do bloco gênesis em 3 de janeiro de 2009 nunca foram gravados no banco de dados, então nunca poderão ser gastos. E em 2010, antes de o BIP30 ser aplicado, duas transações coinbase duplicaram transações anteriores e as sobrescreveram, apagando 100 BTC do conjunto; a regra que proíbe identificadores de transação duplicados existe por causa desses blocos.

Bitcoins recém-minerados também chegam bloqueados. Uma saída coinbase não pode ser gasta por 100 blocos, aproximadamente 16 horas, que é a proteção do próprio protocolo contra reorganizações curtas da cadeia.

Por que isso importa quando você compra bitcoin

Cada saque de uma corretora cria exatamente um UTXO na sua carteira, então o formato das suas reservas é decidido pela frequência com que você aperta esse botão. Uma compra semanal sacada toda semana deixa você com 52 UTXOs depois de um ano; as mesmas compras sacadas a cada trimestre deixam quatro. A Swan e a River ambas estruturam as compras recorrentes em torno disso, disparando saques ao atingir um limite em vez de a cada ordem, e o motivo é aritmético: cada um desses UTXOs custa depois cerca de 68 bytes virtuais de espaço de bloco para ser gasto.

A segunda consequência é a procedência. Um UTXO não é dinheiro em espécie anônimo. Ele carrega o histórico da transação que o criou, e um saque de qualquer plataforma que verifique identidade, o que abrange quase todas as corretoras analisadas aqui, produz um UTXO documentado como seu em um banco de dados de conformidade. Compras pela Relai, que entrega direto na sua própria carteira, chegam com o mesmo rastro documental. Manter esses bitcoins separados dos adquiridos em outros lugares só é possível porque, para começar, são objetos distintos.

Terceiro, restaurar uma carteira não restaura bitcoins. Uma frase de recuperação regenera chaves; depois disso, o software precisa procurar na cadeia as saídas que essas chaves podem desbloquear. Use um caminho de derivação incomum, ou restaure em um software que não verifica o seu tipo de endereço, e os bitcoins ficam seguros no conjunto de não gastas enquanto o seu saldo mostra zero. Guardar um descritor de saída junto das palavras da sua frase de recuperação é o que evita essa tarde de pânico.

Acompanhando uma compra de 0,02 BTC pelo conjunto

Compre 0,02 BTC na Kraken e saque. A corretora agrupa o seu pagamento com o de outros clientes, e uma saída desse lote, no valor de 2.000.000 satoshis, fica bloqueada no seu endereço. Sua carteira agora tem um único UTXO.

Dois meses depois, você paga 500.000 satoshis a alguém quando a taxa para o próximo bloco é de 5 sat/vB. Gastar uma entrada SegWit nativa e criar duas saídas ocupa cerca de 141 bytes virtuais, então a taxa é de 705 satoshis. Três coisas acontecem ao mesmo tempo: o UTXO de 2.000.000 satoshis sai do conjunto de não gastas, surge um UTXO de 500.000 satoshis para o destinatário e surge um UTXO de troco de 1.499.295 satoshis em um endereço novo que a sua carteira controla.

Seu saldo passou de 2.000.000 para 1.499.295 satoshis. O conjunto global cresceu em um registro, que é o custo silencioso de todo pagamento que qualquer pessoa faz e a razão pela qual os nós precisam de um banco de dados e não de uma planilha.

UTXO vs saída de transação

Todo UTXO é uma saída de transação; a maioria das saídas de transação deixou de ser UTXO há muito tempo. Uma saída é uma linha permanente do histórico, ainda legível no bloco que a carregou uma década depois. Um UTXO é um direito sobre o presente. No instante em que alguém gasta uma saída, ela sai do conjunto de não gastas embora permaneça na cadeia para sempre, e essa diferença é a razão pela qual um nó pode descartar blocos antigos mas nunca o estado atual.

UTXO vs poeira

Poeira é um UTXO com um problema econômico, não um tipo diferente de objeto. Pertencer ao conjunto de não gastas não diz nada sobre se vale a pena mover um UTXO. Uma saída de 600 satoshis é exatamente tão válida quanto uma saída de 6 BTC, mas a 30 sat/vB a entrada que a gasta custa cerca de 2.040 satoshis, mais de três vezes o que ela contém. É por isso que uma carteira pode mostrar um saldo que você não consegue gastar por completo.

Não confundir com

Perguntas frequentes

Por que minha carteira pode mostrar um saldo que não me deixa enviar por completo?

Porque o saldo é um conjunto de UTXOs separados, e enviar todos eles significa pagar por cada entrada. Se alguns UTXOs forem pequenos o bastante para que a taxa para gastá-los supere seu valor, a carteira os deixa de fora em vez de perder dinheiro na movimentação.

Um UTXO é a mesma coisa que um endereço?

Não. Um endereço é um bloqueio, e o mesmo endereço pode conter muitos UTXOs ou nenhum. Um UTXO é uma saída específica que está atrás de um bloqueio, identificado pela transação que o criou e por sua posição nessa transação.

Muitos UTXOs pequenos de fato me custam dinheiro?

Sim, na hora de gastar. Cada entrada SegWit nativa acrescenta aproximadamente 68 bytes virtuais, então uma carteira que tem trinta migalhas paga por trinta entradas quando por fim as gasta, e essa conta sai pela taxa vigente no momento.

Leia a seguir

Termos relacionados

Mais em Transações e taxas

Ler esta página em inglês