O que é a Bitcoin Improvement Proposal BIP 0069?
Este artigo está disponível nos seguintes idiomas:
Um BIP, ou Bitcoin Improvement Proposal, é uma sugestão de alteração para aprimorar o código do Bitcoin. Qualquer usuário pode apresentar propostas desse tipo e, após discussão e aprovação pela comunidade, elas podem ser adotadas e implementadas. Os BIPs normalmente trazem propostas para atualizações importantes (correções de bugs e ajustes menores não passam por discussões amplas).
Vamos analisar um BIP específico, o de número 0069, e entender por que ele é importante. Essa atualização busca aumentar a segurança das transações de Bitcoin, tornando-as mais resistentes à análise.
Quais dados podem ser analisados?
Para entender exatamente o que o BIP 0069 propõe, é preciso saber como os ativos são transferidos na rede Bitcoin. Cada transação tem entradas e saídas, mas nada realmente “flui” por elas. Elas apenas registram para onde os bitcoins estão sendo enviados e de onde vêm. As entradas representam ligações com as saídas de transações anteriores, chamadas de unspent transaction outputs (UXTOs). Pode parecer complicado, então vamos a um exemplo.
Vamos comparar as transações em Bitcoin com pagamentos em dinheiro físico. Por exemplo, você quer comprar algo de um amigo por 15 BTC. Antes disso, você recebeu duas transações de 10 BTC cada, ou seja, tem duas cédulas de “10” na carteira. A origem de cada uma está anotada a lápis em cada “cédula”. Essas são as entradas da sua nova transação. Como são duas cédulas, há também duas entradas.
Agora, você pode pegar essas cédulas, escrever “para Pedro de Carlos” nelas e entregá-las ao seu amigo. Essa mensagem se torna a primeira saída da transação. Como seu amigo precisa devolver o troco, ele pega 5 BTC da carteira dele, escreve “troco para Pedro de Carlos” — criando outra saída para o troco — e entrega para você.
Simplificamos bastante o processo, e só três cédulas participam da transação. Você pode receber seus 20 BTC em “troco miúdo”, ou seja, com várias transações pequenas em vez de duas maiores. Isso criaria muito mais entradas e saídas.
O problema de segurança
O problema está na forma como as entradas e saídas são ordenadas. Não existe um padrão para registrar esses dados; cada wallet pode usar seu próprio método de ordenação. Algumas listam primeiro as entradas de gasto e depois as saídas de troco, permitindo que observadores obtenham informações sobre os fundos nas carteiras do remetente e do destinatário. Outras ordenam as entradas pela data em que foram adicionadas à wallet, e assim por diante. Isso significa que a análise de dados pode identificar padrões específicos de uma determinada wallet ou serviço.
Existe ainda outro risco no desenvolvimento de carteiras cripto. Kristov Atlas, autor do BIP 0069, propôs um cenário hipotético em que um atacante com acesso ao código da wallet (como um desenvolvedor) modifica o sistema para que as entradas e saídas sejam ordenadas com base nos bits da chave privada. Essa modificação permitiria ao atacante descobrir a chave privada apenas rastreando as transações, e esse “implante” seria muito difícil de detectar.
Como resolver o problema?
A vulnerabilidade pode ser evitada se as entradas e saídas das transações forem ordenadas de modo que não haja padrões identificáveis. O BIP 0069 propõe uma abordagem não determinística para a ordenação, ou seja, uma forma que não pode ser deduzida a partir dos dados de entrada. Além disso, isso não exige algoritmos complexos; basta organizar os dados em ordem lexicográfica (ordem alfabética crescente).
A Tangem Wallet já utiliza essa abordagem. Sim, está disponível para dispositivos iOS e Android.