MSTR Cat

Blockchain/Nível II · Mecânica/2.2 Transações/Lição 4

Alterar saídas

O restante que revela o remetente e os algoritmos que tentam escondê-lo

MateriaisUm explorador de blocos (por exemplo, mempool.space ou blockchain.com)Uma carteira de Bitcoin com pelo menos dois UTXOsUma planilha para registrar IDs de transações, valores de entrada e estruturas de saída

Curiosidade

  1. Por que uma transação que paga um valor exato costuma parecer diferente daquela que requer troco?
  2. Como um analista pode determinar qual saída é o pagamento e qual é o troco sem ver o estado interno da carteira?
  3. O que faz com que um algoritmo de seleção de moeda prefira uma taxa ligeiramente mais alta a uma menor?

Explorar

  1. As entradas de transações em Bitcoin funcionam como notas monetárias físicas indivisíveis. Se Alice pretende pagar 5 BTC, mas possui apenas um UTXO no valor de 20 BTC, ela não pode dividir essa entrada. Ela precisa gastar os 20 BTC inteiros e receber 15 BTC de volta como troco, após descontar as taxas. Consequentemente, a maioria das transações inclui duas saídas: uma para o destinatário e outra para o retorno do troco.
  2. No nível do protocolo, não há distinção entre uma saída de “pagamento” e uma saída de “troco”. Ambas são scripts de bloqueio padrão, como P2PKH ou P2WPKH, aguardando condições para serem utilizadas. Somente o criador da transação identifica a propriedade. Essa falta de diferenciação é um mecanismo fundamental de privacidade: se um endereço de troco e um endereço de pagamento parecerem idênticos, observadores externos não conseguem distingui-los com certeza.
  3. As carteiras utilizam algoritmos de seleção de moedas para determinar quais entradas devem ser gastas. Se Alice possui duas UTXOs de 50.000 satoshis e deseja pagar Bob 85.000 satoshis, ela gasta ambas as entradas (100.000 sats) e cria duas saídas: uma para Bob (85.000 sats) e outra para si mesma (15.000 sats, menos a taxa). Essa estrutura, com uma ou mais entradas e exatamente duas saídas, é uma das mais comuns na cadeia.
  4. Por questões de privacidade, é padrão atribuir o troco a um endereço novo, nunca utilizado antes, do conjunto de chaves da carteira. Reutilizar um endereço antigo para o troco permite que analistas da cadeia conectem as atividades transacionais anteriores à nova transação. Em casos ideais, tanto os pagamentos quanto os valores de troco são atribuídos a endereços novos, garantindo que pareçam idênticos aos olhos de observadores externos.
  5. Nem toda transação de pagamento precisa de troco. Algoritmos de seleção de moedas como o Branch and Bound, descritos por Mark Erhardt em 2016 e utilizados no Bitcoin Core, buscam um conjunto de entradas cujo valor total corresponda ao pagamento mais a taxa de forma suficientemente precisa, de modo que o pequeno valor restante possa ser simplesmente destinado à taxa. Uma transação sem troco é mais barata, não gera novas saídas pequenas e oferece aos analistas um dado a menos para análise.
  6. Saídas muito pequenas criam seu próprio problema. Abaixo do limite de valor (por padrão, cerca de 546 satoshis para saídas P2PKH e 294 para P2WPKH), uma saída custa mais para ser gasta do que vale, e os nodes não transmitirão transações que a criem. Os analistas também procuram padrões de troco característicos: a saída com valor redondo costuma ser o pagamento, enquanto uma saída cujo tipo de endereço corresponde aos inputs geralmente representa o troco.

Fatos-chave

  • Os valores inseridos na transação são indivisíveis; o excedente além do pagamento e da taxa é devolvido como troco, a menos que seja pequeno o suficiente para ser somado à taxa.
  • No nível do protocolo, não há diferença técnica entre uma saída de alteração e uma saída de pagamento; apenas o criador da transação sabe qual é qual.
  • A seleção de moedas por Branch and Bound (Erhardt, 2016) procura conjuntos de entrada que não precisam de alteração na saída.
  • Transações imutáveis não devolvem fundos ao remetente; qualquer pequeno valor restante vai para a taxa.
  • Usar um endereço novo e nunca antes visto para a transferência impede que terceiros o distingam facilmente de um pagamento.
  • O limite padrão de “dust” do Bitcoin Core é de aproximadamente 546 satoshis para saídas P2PKH e 294 para P2WPKH.

Exercício nove, seis, três, um

9ReunirListe 9 transações recentes de Bitcoin que você observou ou criou. Anote o número de entradas e saídas de cada uma e se havia uma saída de troco.
6AgruparAgrupe os 9 com base em sua estrutura em 6 categorias: entrada única/saída única, múltiplas entradas/duas saídas (troco), múltiplas entradas/saída única (sem troco), coinbase, OP_RETURN ou outras estruturas complexas.
3DestilarReduza os 6 grupos a 3 implicações de privacidade distintas em relação à facilidade com que um analista pode associar saídas a uma identidade de usuário específica.
1CristalizarEscreva 1 frase explicando por que a ausência de uma distinção técnica entre saídas de pagamento e de troco é, ao mesmo tempo, uma vantagem para a fungibilidade e um desafio para a privacidade individual.

Verificação de fatos

Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.

Abrir na academia interativa →

EN ES ZH JA KO RU DE FR MS