Glossário / Transações e taxas
Transação de bitcoin
Outros nomes: Transação.
- O que é uma transação de bitcoin?
- Uma transação de bitcoin é uma instrução assinada que destrói alguns bitcoins existentes e cria novos em seu lugar, e é a única forma de o valor se mover na rede.
Em bitcoin, nada guarda um saldo. O registro é um conjunto de saídas não gastas, um pagamento consome saídas inteiras e cria substitutas, e o que sobra vai para o minerador como taxa. A primeira de todas moveu 10 bitcoin de Satoshi Nakamoto para Hal Finney no bloco 170, em 12 de janeiro de 2009, e, como todas as que vieram depois, não podia ser desfeita.
Como funciona
Uma transação de bitcoin é uma estrutura binária curta com seis partes, e a carteira monta todas elas antes de transmitir qualquer coisa.
A versão ocupa 4 bytes. A versão 1 foi a original; a versão 2 existe porque o BIP68 deu aos números de sequência um novo significado para bloqueios temporais relativos, e as carteiras modernas a definem por padrão. Depois vêm as entradas, cada uma nomeando uma saída criada anteriormente e carregando a prova do direito de gastá-la. Em seguida vêm as saídas, cada uma com um valor em satoshis e um script de bloqueio que declara quem pode gastá-la em seguida. As transações SegWit acrescentam uma seção de testemunha que contém as assinaturas, e que fica fora da parte que determina o id da transação. Por último está o locktime, de 4 bytes, normalmente definido para a altura de bloco atual, para que a transação não possa ser puxada para um bloco anterior.
Não há campo de taxa em nenhum lugar dessa estrutura. A taxa é aritmética: o valor total das entradas menos o valor total das saídas, e o que você não atribuir a uma saída é entregue a quem minerar o bloco. É por isso que um erro em uma carteira que calcula mal o troco pode jogar dinheiro real fora, e por isso toda carteira cria uma saída de troco de volta para si mesma em vez de deixar uma sobra.
A assinatura amarra tudo. Pela regra padrão SIGHASH_ALL, cada assinatura se compromete com todas as entradas e todas as saídas, de modo que alterar um único satoshi de uma única saída invalida todas as assinaturas da transação. É isso que torna uma transação transmitida definitiva em conteúdo, ainda que não em confirmação.
O tamanho é medido em bytes virtuais, e não em bytes brutos, porque o SegWit desconta os dados da testemunha para um quarto do seu peso, e os blocos têm como limite um orçamento de 4 milhões de unidades de peso. Um gasto SegWit nativo de uma entrada e duas saídas chega a aproximadamente 141 bytes virtuais.
Por que isso importa quando você compra bitcoin
Duas coisas completamente diferentes recebem o nome de “enviar bitcoin” em uma corretora, e apenas uma delas é uma transação.
Mover bitcoins entre contas dentro da mesma plataforma é uma atualização de banco de dados. É instantâneo, geralmente gratuito e não deixa rastro na blockchain, porque nenhuma transação foi feita. Sacar para um endereço que você controla monta uma transação real, paga uma taxa real, espera por um bloco real, e é a única versão que termina com você sendo dono de bitcoin, e não de um crédito contra uma empresa.
Depois que você saca, três consequências práticas aparecem.
Você não pode cancelá-la. O replace-by-fee permite que o remetente aumente a taxa enquanto a transação está sem confirmação, mas apenas a carteira que a montou pode fazer isso, e uma corretora não fará isso em seu nome. Verifique o endereço antes de aprovar, não depois.
Todo depósito que você recebe se torna uma saída que você pagará para gastar mais tarde. Dez compras pequenas deixam dez saídas, e um pagamento futuro que precise gastar todas as dez custa várias vezes o que custaria uma única saída grande. Sacar em menos vezes e em valores maiores é o hábito mais barato em bitcoin, e adotá-lo não custa nada.
A taxa que sua corretora cobra é um número de política interna, não a taxa da rede. Ela é definida de antemão e raramente acompanha a mempool, então em um dia tranquilo você pode pagar várias vezes o custo real e em um dia movimentado bem menos. As análises de corretoras deste site registram como cada plataforma trata os saques, e vale a pena preferir as que permitem que você escolha sua própria taxa.
Lendo um saque real, campo por campo
Suponha que você compre 0,05 BTC e os saque. O que aparece em um explorador de blocos provavelmente vai confundir você, porque a transação não é só sua.
As grandes corretoras agrupam saques em lotes. Uma única transação de saque pode gastar 3 entradas da carteira quente, no valor total de 2,41 BTC, e criar 42 saídas, uma das quais são seus 0,05 BTC e outra é o troco que volta para a corretora. A cerca de 68 bytes virtuais por entrada, 31 bytes por saída e aproximadamente 11 bytes de sobrecarga, essa transação fica perto de 1.517 bytes virtuais. Com uma taxa de 6 sat/vB, o minerador recebe cerca de 9.102 satoshis, o que dá aproximadamente 217 satoshis para cada cliente do lote. Enviado sozinho, seu saque teria cerca de 141 bytes virtuais e custaria cerca de 846 satoshis.
Assim, o explorador mostra uma transação que move muito mais bitcoin do que você sacou, com dezenas de destinatários de quem você nunca ouviu falar. Nada está errado. Encontre sua própria saída pelo valor e pelo endereço, anote o id da transação e ignore o resto.
Transação de bitcoin vs txid
Uma transação é o objeto; um txid é sua impressão digital. O id é um hash de SHA-256 duplo da transação serializada sem os dados da testemunha, escrito como 64 caracteres hexadecimais, e existe para que a transação possa ser referenciada sem ser repetida. Os setores de suporte pedem o txid, os exploradores indexam por ele e as transações posteriores apontam para ele. O que ele não é: um recibo. Um txid prova que existe uma transação com exatamente aquele conteúdo e não diz nada sobre quem a enviou nem por quê.
Transação de bitcoin vs PSBT
Um PSBT é uma transação que ainda não está terminada. O formato, definido no BIP174, carrega as entradas e as saídas mais as informações extras de que um assinante precisa, como o valor e o script de cada entrada que está sendo gasta, e viaja entre dispositivos, e não pela rede. Configurações isoladas da rede e configurações de multiassinatura dependem dele: um assinante off-line lê o PSBT, acrescenta sua assinatura e o devolve. Só quando todas as entradas estão assinadas o arquivo é finalizado como uma transação que a rede aceitará, e até esse momento nada foi enviado.