Bitcoin transações duplicadas: um caso raro mas interessante
As transações de Bitcoin geralmente utilizam saídas não gastas referindo-se ao ID da transação anterior. Essas saídas só podem ser gastas uma vez, caso contrário, haverá um problema de dupla despesa. No entanto, na história do Bitcoin, houve de fato duas séries de transações idênticas. Essa situação pode ocorrer porque as transações coinbase não têm entradas, mas geram novas moedas diretamente. Portanto, duas transações coinbase diferentes podem enviar a mesma quantidade de moeda para o mesmo endereço, construindo assim transações idênticas. Como essas transações têm conteúdos idênticos, seus IDs de transação também são iguais.
Esses dois conjuntos de transações duplicadas ocorreram entre 14 e 15 de novembro de 2010, com uma duração de aproximadamente 16 horas. O primeiro conjunto de transações duplicadas foi inserido entre o segundo conjunto. Classificamos as transações com ID que começam com d5d2 como a primeira transação duplicada, embora tenha aparecido pela primeira vez na blockchain mais tarde do que a outra transação duplicada.
Em alguns exploradores de blocos, é possível ver a ocorrência de transações duplicadas aparecendo em blocos diferentes. Diferentes exploradores de blocos podem ter comportamentos padrão diferentes ao exibir essas transações duplicadas.
Essas transações repetidas envolvem 50 BTC cada, totalizando 200 BTC. Até agora, esses Bitcoins ainda não foram gastos. Teoricamente, se alguém possuir a chave privada relacionada, pode gastar esses Bitcoins. Mas uma vez que forem gastos, os 50 BTC repetidos serão perdidos, portanto, o que realmente está disponível é apenas 100 BTC. Quanto a partir de qual bloco esses moedas serão gastos, ainda não está claro.
Transações duplicadas trazem claramente alguns problemas. Elas podem causar confusão para carteiras e exploradores de blocos, além de dificultar a determinação da origem do Bitcoin. Isso também pode ser utilizado em alguns ataques, como depósitos repetidos em exchanges.
Para resolver este problema, em março de 2012, o Bitcoin implementou o BIP30 através de um soft fork, proibindo o uso de IDs de transação duplicados para transações. Em setembro de 2012, houve uma nova modificação, tornando a verificação do BIP30 aplicável a todos os blocos, exceto para os dois conjuntos de transações duplicadas mencionados anteriormente.
Em março de 2013, o Bitcoin ativou novamente o soft fork BIP34, exigindo que as transações coinbase incluíssem informações sobre a altura do bloco. Isso parece resolver completamente o problema de transações duplicadas, teoricamente todas as transações deveriam ser únicas.
No entanto, em alguns blocos antes da ativação do BIP34, ainda existem algumas transações coinbase cujo primeiro byte do scriptSig corresponde exatamente à altura do bloco que será válida no futuro. Isso significa que, em casos extremamente raros, transações duplicadas ainda podem ocorrer. O próximo bloco onde transações duplicadas podem aparecer é 1,983,702, previsto para ser gerado por volta de janeiro de 2046.
No entanto, considerando a dificuldade e o custo de replicar este tipo de transação, bem como a raridade das oportunidades para utilizá-la, esta vulnerabilidade não é uma ameaça de segurança principal para o Bitcoin. Apesar disso, os desenvolvedores ainda estão investigando maneiras de corrigir completamente este problema, o que pode exigir a implementação de uma bifurcação suave. Uma possível solução de correção é a imposição do compromisso SegWit.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
Fenómenos raros na história do Bitcoin: transações duplicadas e a sua evolução
Bitcoin transações duplicadas: um caso raro mas interessante
As transações de Bitcoin geralmente utilizam saídas não gastas referindo-se ao ID da transação anterior. Essas saídas só podem ser gastas uma vez, caso contrário, haverá um problema de dupla despesa. No entanto, na história do Bitcoin, houve de fato duas séries de transações idênticas. Essa situação pode ocorrer porque as transações coinbase não têm entradas, mas geram novas moedas diretamente. Portanto, duas transações coinbase diferentes podem enviar a mesma quantidade de moeda para o mesmo endereço, construindo assim transações idênticas. Como essas transações têm conteúdos idênticos, seus IDs de transação também são iguais.
Esses dois conjuntos de transações duplicadas ocorreram entre 14 e 15 de novembro de 2010, com uma duração de aproximadamente 16 horas. O primeiro conjunto de transações duplicadas foi inserido entre o segundo conjunto. Classificamos as transações com ID que começam com d5d2 como a primeira transação duplicada, embora tenha aparecido pela primeira vez na blockchain mais tarde do que a outra transação duplicada.
Em alguns exploradores de blocos, é possível ver a ocorrência de transações duplicadas aparecendo em blocos diferentes. Diferentes exploradores de blocos podem ter comportamentos padrão diferentes ao exibir essas transações duplicadas.
Essas transações repetidas envolvem 50 BTC cada, totalizando 200 BTC. Até agora, esses Bitcoins ainda não foram gastos. Teoricamente, se alguém possuir a chave privada relacionada, pode gastar esses Bitcoins. Mas uma vez que forem gastos, os 50 BTC repetidos serão perdidos, portanto, o que realmente está disponível é apenas 100 BTC. Quanto a partir de qual bloco esses moedas serão gastos, ainda não está claro.
Transações duplicadas trazem claramente alguns problemas. Elas podem causar confusão para carteiras e exploradores de blocos, além de dificultar a determinação da origem do Bitcoin. Isso também pode ser utilizado em alguns ataques, como depósitos repetidos em exchanges.
Para resolver este problema, em março de 2012, o Bitcoin implementou o BIP30 através de um soft fork, proibindo o uso de IDs de transação duplicados para transações. Em setembro de 2012, houve uma nova modificação, tornando a verificação do BIP30 aplicável a todos os blocos, exceto para os dois conjuntos de transações duplicadas mencionados anteriormente.
Em março de 2013, o Bitcoin ativou novamente o soft fork BIP34, exigindo que as transações coinbase incluíssem informações sobre a altura do bloco. Isso parece resolver completamente o problema de transações duplicadas, teoricamente todas as transações deveriam ser únicas.
No entanto, em alguns blocos antes da ativação do BIP34, ainda existem algumas transações coinbase cujo primeiro byte do scriptSig corresponde exatamente à altura do bloco que será válida no futuro. Isso significa que, em casos extremamente raros, transações duplicadas ainda podem ocorrer. O próximo bloco onde transações duplicadas podem aparecer é 1,983,702, previsto para ser gerado por volta de janeiro de 2046.
No entanto, considerando a dificuldade e o custo de replicar este tipo de transação, bem como a raridade das oportunidades para utilizá-la, esta vulnerabilidade não é uma ameaça de segurança principal para o Bitcoin. Apesar disso, os desenvolvedores ainda estão investigando maneiras de corrigir completamente este problema, o que pode exigir a implementação de uma bifurcação suave. Uma possível solução de correção é a imposição do compromisso SegWit.