Bitcoin repetição de transações: um defeito de sistema raro
Resumo
As transações de Bitcoin geralmente utilizam saídas não gastas referenciando o ID da transação anterior. Essas saídas podem ser gastas apenas uma vez, caso contrário, surgirá um problema de dupla despesa. No entanto, existem de fato dois conjuntos de transações completamente idênticas no sistema Bitcoin. Essa situação ocorre porque as transações coinbase não têm entradas, mas geram diretamente novas moedas. Assim, duas transações coinbase diferentes podem enviar a mesma quantidade para o mesmo endereço, com a construção completamente idêntica, resultando no mesmo ID de transação. Além disso, a única possibilidade de repetir um ID de transação seria uma colisão de hash, mas isso é quase impossível de ocorrer com a tecnologia criptográfica atual.
Esses dois conjuntos de transações duplicadas ocorreram entre 14 e 15 de novembro de 2010, com um intervalo de aproximadamente 16 horas. O primeiro conjunto de transações duplicadas (d5d2....8599) está entre o segundo conjunto, embora tenha aparecido pela primeira vez na blockchain mais tarde.
Detalhes da Transação Repetida
O explorador de blocos mostra que a primeira transação duplicada aparece em dois blocos diferentes. Diferentes exploradores de blocos apresentam algumas diferenças ao mostrar essas transações duplicadas; alguns exibem por padrão o bloco mais antigo, enquanto outros mostram o bloco mais recente.
Nos quatro blocos envolvidos, apenas um bloco (91,812) contém outras transações, combinando 1 BTC e 19 BTC em 20 BTC.
Processamento de Saída Repetida
Devido à existência de dois conjuntos de IDs de transação idênticos, estas transações duplicadas envolvem um total de 200 BTC, ou pode-se entender como 100 BTC. Até agora, estes 200 BTC não foram gastos. Teoricamente, a pessoa que possui as chaves privadas relacionadas pode gastar estas moedas, mas uma vez gastas, os 50 BTC duplicados não poderão ser utilizados e serão perdidos, portanto, na prática, apenas 100 BTC podem ser recuperados. Quanto a quais blocos estes fundos serão deduzidos após serem gastos, ainda não é possível determinar.
Problema de transações repetidas
Transações duplicadas podem causar confusão nas carteiras e nos exploradores de blocos, além de obscurecer a origem do Bitcoin. Também pode ser usado para ataques, como pagar alguém duas vezes com duas transações duplicadas, mas na verdade apenas metade dos fundos está disponível. Isso pode ser usado para atacar as exchanges, tentando causar erros nos seus fundos.
Solução
Para resolver o problema das transações duplicadas, foi implementado o soft fork BIP30 em março de 2012, proibindo o uso de IDs de transações duplicadas, a menos que a transação anterior tenha sido gasta. Em setembro do mesmo ano, essa regra foi ainda mais modificada, aplicando-se a todos os blocos.
Em março de 2013, o fork suave BIP34 exigiu que as transações coinbase incluíssem a altura do bloco, o que basicamente resolveu o problema das transações duplicadas. Desde então, os nós pararam de verificar o BIP30, uma vez que essa verificação cara não era mais necessária.
Questões potenciais futuras
Embora o BIP34 tenha resolvido a maior parte dos problemas, em alguns blocos antes da sua ativação, o primeiro byte do scriptSig da transação coinbase coincidia exatamente com a altura do bloco que se tornaria válida no futuro. Isso significa que, em certas alturas de bloco específicas no futuro, ainda poderá haver transações duplicadas.
O próximo bloco que pode apresentar transações duplicadas é 1,983,702, que deve ser gerado por volta de janeiro de 2046. Aproveitar esta vulnerabilidade exigiria que os mineradores gastassem uma quantia enorme de dinheiro, que, com o preço atual do Bitcoin, pode ultrapassar os 15 milhões de dólares, e quase não haveria lucro real.
O bloco de risco potencial subsequente é 169985, e espera-se que possa ser replicado em 2078. Da mesma forma, o custo de explorar essa vulnerabilidade também pode ser muito alto.
Conclusão
Tendo em conta a dificuldade de copiar transações, os custos e a escassez de oportunidades, esta vulnerabilidade não representa uma ameaça significativa à segurança do Bitcoin. No entanto, os desenvolvedores continuam a trabalhar em soluções, podendo ser necessário corrigir este problema através de um hard fork. Uma possível abordagem é a aplicação obrigatória do compromisso SegWit.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
16 Curtidas
Recompensa
16
4
Compartilhar
Comentário
0/400
rugpull_survivor
· 15h atrás
Olha, este bug é interessante! Nós, os pobres, temos apenas esta pequena diversão.
Ver originalResponder0
ZenChainWalker
· 15h atrás
Este bug de mineração já tem 13 anos. Lembro-me que na altura não dormi a ver esta situação.
Ver originalResponder0
ImpermanentPhilosopher
· 15h atrás
Esta vulnerabilidade é um pouco cedo, não é?
Ver originalResponder0
ser_we_are_ngmi
· 15h atrás
2010 do bug... Foi realmente uma parte da história negra do mundo crypto
Análise da vulnerabilidade de transação duplicada do Bitcoin: causas históricas, riscos potenciais e desafios futuros
Bitcoin repetição de transações: um defeito de sistema raro
Resumo
As transações de Bitcoin geralmente utilizam saídas não gastas referenciando o ID da transação anterior. Essas saídas podem ser gastas apenas uma vez, caso contrário, surgirá um problema de dupla despesa. No entanto, existem de fato dois conjuntos de transações completamente idênticas no sistema Bitcoin. Essa situação ocorre porque as transações coinbase não têm entradas, mas geram diretamente novas moedas. Assim, duas transações coinbase diferentes podem enviar a mesma quantidade para o mesmo endereço, com a construção completamente idêntica, resultando no mesmo ID de transação. Além disso, a única possibilidade de repetir um ID de transação seria uma colisão de hash, mas isso é quase impossível de ocorrer com a tecnologia criptográfica atual.
Esses dois conjuntos de transações duplicadas ocorreram entre 14 e 15 de novembro de 2010, com um intervalo de aproximadamente 16 horas. O primeiro conjunto de transações duplicadas (d5d2....8599) está entre o segundo conjunto, embora tenha aparecido pela primeira vez na blockchain mais tarde.
Detalhes da Transação Repetida
O explorador de blocos mostra que a primeira transação duplicada aparece em dois blocos diferentes. Diferentes exploradores de blocos apresentam algumas diferenças ao mostrar essas transações duplicadas; alguns exibem por padrão o bloco mais antigo, enquanto outros mostram o bloco mais recente.
Nos quatro blocos envolvidos, apenas um bloco (91,812) contém outras transações, combinando 1 BTC e 19 BTC em 20 BTC.
Processamento de Saída Repetida
Devido à existência de dois conjuntos de IDs de transação idênticos, estas transações duplicadas envolvem um total de 200 BTC, ou pode-se entender como 100 BTC. Até agora, estes 200 BTC não foram gastos. Teoricamente, a pessoa que possui as chaves privadas relacionadas pode gastar estas moedas, mas uma vez gastas, os 50 BTC duplicados não poderão ser utilizados e serão perdidos, portanto, na prática, apenas 100 BTC podem ser recuperados. Quanto a quais blocos estes fundos serão deduzidos após serem gastos, ainda não é possível determinar.
Problema de transações repetidas
Transações duplicadas podem causar confusão nas carteiras e nos exploradores de blocos, além de obscurecer a origem do Bitcoin. Também pode ser usado para ataques, como pagar alguém duas vezes com duas transações duplicadas, mas na verdade apenas metade dos fundos está disponível. Isso pode ser usado para atacar as exchanges, tentando causar erros nos seus fundos.
Solução
Para resolver o problema das transações duplicadas, foi implementado o soft fork BIP30 em março de 2012, proibindo o uso de IDs de transações duplicadas, a menos que a transação anterior tenha sido gasta. Em setembro do mesmo ano, essa regra foi ainda mais modificada, aplicando-se a todos os blocos.
Em março de 2013, o fork suave BIP34 exigiu que as transações coinbase incluíssem a altura do bloco, o que basicamente resolveu o problema das transações duplicadas. Desde então, os nós pararam de verificar o BIP30, uma vez que essa verificação cara não era mais necessária.
Questões potenciais futuras
Embora o BIP34 tenha resolvido a maior parte dos problemas, em alguns blocos antes da sua ativação, o primeiro byte do scriptSig da transação coinbase coincidia exatamente com a altura do bloco que se tornaria válida no futuro. Isso significa que, em certas alturas de bloco específicas no futuro, ainda poderá haver transações duplicadas.
O próximo bloco que pode apresentar transações duplicadas é 1,983,702, que deve ser gerado por volta de janeiro de 2046. Aproveitar esta vulnerabilidade exigiria que os mineradores gastassem uma quantia enorme de dinheiro, que, com o preço atual do Bitcoin, pode ultrapassar os 15 milhões de dólares, e quase não haveria lucro real.
O bloco de risco potencial subsequente é 169985, e espera-se que possa ser replicado em 2078. Da mesma forma, o custo de explorar essa vulnerabilidade também pode ser muito alto.
Conclusão
Tendo em conta a dificuldade de copiar transações, os custos e a escassez de oportunidades, esta vulnerabilidade não representa uma ameaça significativa à segurança do Bitcoin. No entanto, os desenvolvedores continuam a trabalhar em soluções, podendo ser necessário corrigir este problema através de um hard fork. Uma possível abordagem é a aplicação obrigatória do compromisso SegWit.