Pular para o conteúdo
buybitcoinsmart

Glossário / Endereços e chaves

Endereço de troco

Outros nomes: Saída de troco.

O que é um endereço de troco?
Um endereço de troco recebe a parte de uma entrada que sua carteira não gastou, porque as saídas de bitcoin são consumidas por inteiro e qualquer resto precisa ir para algum lugar.

Especificação no BIP-32.

O bitcoin não tem o conceito de gasto parcial. Se você tem uma saída de 0,05 BTC e paga 0,012 BTC, a transação destrói essa saída e cria duas novas: o pagamento e cerca de 0,038 BTC de troco travados em um endereço que só você controla. Em um explorador de blocos, a segunda saída parece um pagamento a um desconhecido, e não é.

Como funciona

Todo pagamento em bitcoin começa pela escolha das saídas inteiras que vão alimentá-lo. Uma UTXO, propriamente uma saída de transação não gasta, não pode ser dividida no lugar: a transação a consome por completo e grava saídas novas. Sua carteira soma o que selecionou, subtrai o que você está pagando e o que o minerador vai receber, e envia o restante a um destino que ela gerou para si mesma. Esse destino é o endereço de troco.

As carteiras modernas mantêm esses destinos em um ramo separado de sua árvore de chaves. O BIP-44 fixou a estrutura como m / purpose' / coin_type' / account' / change / address_index, em que o penúltimo nível é 0 para os endereços que você entrega e 1 para os endereços que a carteira guarda para si. O primeiro endereço de troco de uma carteira SegWit nativa é, portanto, m/84'/0'/0'/1/0, derivado da mesma frase de recuperação que todo o resto, de modo que nada adicional precisa ser copiado como backup.

Isso nem sempre foi assim, e a história explica por que esse ramo existe. Os primeiros clientes do Bitcoin tiravam o troco de um conjunto de chaves aleatórias pré-geradas, 100 delas por padrão. Ao gastar além do fim do conjunto, um backup de wallet.dat feito antes já não continha a chave em que estava o seu troco, e foi assim que pessoas restauraram um backup e descobriram que faltava dinheiro. O Bitcoin Core só cria carteiras determinísticas hierárquicas desde a versão 0.16.0, e o conjunto de chaves pré-derivadas agora tem 1.000 chaves por padrão.

O valor do troco é aritmética: entradas menos pagamentos menos taxa. Nada na transação marca uma saída como troco. Um nó vê duas saídas e as trata de forma idêntica, e é exatamente por isso que o troco é um problema de privacidade, e não de contabilidade.

Por que isso importa quando você compra bitcoin

Sua primeira saída de troco costuma aparecer na primeira vez que você gasta bitcoins sacados de uma corretora, e ela herda tudo o que esse saque sabe sobre você.

Uma corretora que verificou seu passaporte registrou o endereço para o qual pagou. Quando você depois gasta a partir desse endereço, o troco é criado pela mesma transação, então quem segue a saída original segue o troco também, incluindo qualquer fornecedor de análise que a corretora pague. Dividir um saque entre duas carteiras não serve de nada se depois você gasta das duas em uma mesma transação. Manter os bitcoins da corretora em uma carteira própria e pagar a partir dela de forma deliberada é o que limita até onde a identidade se espalha.

As carteiras de hardware protegem contra um segundo risco, mais agudo. Um computador comprometido pode montar uma transação cuja saída de troco vai para um atacante em vez de ir para você, com um total que ainda parece correto, de modo que nada na tela parece errado. Um dispositivo Trezor ou Ledger verifica que cada saída de troco deriva da frase de recuperação que ele guarda e sinaliza qualquer saída que não derive dela. A verificação só funciona se você confirmar os valores na própria tela do dispositivo, e não no navegador.

Há também um custo que você pode influenciar. Duas saídas custam mais que uma: uma saída de troco SegWit nativa acrescenta 31 bytes à transação, cerca de 465 satoshis a 15 sat/vB, e cria uma saída cujo gasto futuro custará aproximadamente 68 bytes virtuais. As carteiras que usam seleção de moedas por ramificação e limite (branch and bound) tentam encontrar entradas que se ajustem ao pagamento o bastante para dispensar o troco por completo, e isso dá certo com mais frequência quando suas saídas têm tamanhos variados do que quando todas são saques de valores redondos.

O troco também não é uma alienação. Pagar a si mesmo o restante da sua própria saída não é uma venda, mas os rastreadores de portfólio costumam importar as saídas de troco como compras recebidas ou vendas enviadas, o que distorce a base de custo. Se o seu rastreador mostra uma transação que você não reconhece no dia em que pagou uma fatura, essa costuma ser a causa.

Seguir o troco em um saque de 0,05 BTC

Acompanhe uma saída vinda de uma corretora até um comerciante e cada valor fica visível on-chain. Você saca 0,05 BTC para um endereço bech32 da sua própria carteira, e o valor chega como uma única saída de 5.000.000 satoshis.

Semanas depois, você deve 1.200.000 satoshis a um comerciante. Sua carteira tem exatamente uma saída, então precisa gastar os 5.000.000 inteiros. A transação tem uma entrada e duas saídas, aproximadamente 141 bytes virtuais, e a 15 sat/vB a taxa é de 2.115 satoshis. O comerciante recebe 1.200.000. A saída de troco recebe 5.000.000 menos 1.200.000 menos 2.115, o que dá 3.797.885 satoshis, e vai parar em m/84'/0'/0'/1/0.

Nada nessa transação anuncia qual saída é qual. Duas heurísticas costumam entregar: o troco é a saída com o valor não arredondado, e o troco é muitas vezes a saída cujo tipo de script corresponde ao da entrada. As carteiras que arredondam o troco, ou que copiam o tipo de script do destinatário, existem justamente para frustrar essas suposições.

Endereço de troco vs endereço único

Um endereço de troco e um endereço de recebimento novo são ambos usados uma vez, e a diferença está em quem deve vê-los. Um endereço de recebimento vem do ramo externo, com índice de cadeia 0, e existe para ser copiado na carteira de outra pessoa. Um endereço de troco vem do ramo interno, com índice de cadeia 1, e nunca é mostrado a um pagador; a maioria das interfaces não exibe nenhum, a menos que você abra uma tela de controle de moedas. Os dois giram pelo mesmo motivo de privacidade, e os dois são restaurados a partir das mesmas doze ou vinte e quatro palavras.

Endereço de troco vs poeira

O troco é o que sobra; a poeira é um resto pequeno demais para valer a pena criar. O Bitcoin Core se recusa a retransmitir uma saída avaliada abaixo de 3 satoshis por byte virtual do seu gasto final, o que dá 546 satoshis para uma saída legada e 294 para SegWit nativa. Quando uma carteira calcula um troco abaixo dessa linha, ela não cria a saída e o valor vai para o minerador como taxa extra. É por isso que pagar um valor pouco abaixo de todo o seu saldo pode custar muito mais do que a taxa que foi informada.

Não confundir com

Perguntas frequentes

Por que minha carteira enviou bitcoin para um endereço que não reconheço?

Essa saída é quase certamente o seu próprio troco. O bitcoin gasta saídas inteiras, então o restante vai para um endereço novo do ramo interno da sua carteira. Abra uma tela de controle de moedas ou de detalhes da transação e a carteira marcará essa saída como pertencente a você.

Meu troco está seguro se eu só fiz backup da minha frase de recuperação?

Sim. Os endereços de troco são derivados da mesma frase de recuperação conforme o BIP-32, no ramo de número 1, então restaurar a frase os recupera junto com todo o resto. Isso não era verdade nas carteiras anteriores a 2016, que retiravam o troco de um conjunto fixo de chaves aleatórias.

Posso impedir que minha carteira crie troco?

Apenas de forma indireta. Envie todo o seu saldo, o que não produz saída de troco, ou use o controle de moedas para escolher entradas que correspondam ao pagamento de perto o suficiente para que a carteira descarte o troco. A maioria das carteiras já tenta a segunda opção automaticamente.

Para onde foi meu troco quando o valor era minúsculo?

Abaixo do limite de poeira, 546 satoshis para uma saída legada e 294 para SegWit nativa, as carteiras descartam a saída de troco e entregam esse valor ao minerador como taxa extra. Os bitcoins não se perdem em nenhum sentido recuperável, elas foram gastas na transação.

Leia a seguir

Termos relacionados

Mais em Endereços e chaves

Ler esta página em inglês