Bitcoin transações duplicadas: uma falha interessante mas de risco muito baixo
As transações de Bitcoin geralmente utilizam saídas não gastas, referenciando o ID de uma transação anterior. Essas saídas só podem ser utilizadas uma vez, caso contrário, ocorrerá um pagamento duplo, fazendo com que o Bitcoin perca valor. No entanto, na história do Bitcoin, realmente houve duas séries de transações idênticas. Essa situação pode ocorrer porque as transações coinbase não têm entradas de transação, mas geram novas moedas. Assim, duas transações coinbase diferentes podem enviar a mesma quantidade de moeda para o mesmo endereço, de forma completamente idêntica, resultando no mesmo ID de transação.
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 IDs que começam com d5d2 como a primeira transação duplicada, embora tenham aparecido pela primeira vez na blockchain após outra transação duplicada.
A ocorrência de transações duplicadas causou confusão nas carteiras e exploradores de blocos, tornando difícil determinar a origem do Bitcoin. Isso também pode trazer riscos de ataques e vulnerabilidades. Por exemplo, é possível pagar a alguém duas vezes com duas transações duplicadas, mas na realidade apenas metade dos fundos pode ser utilizada.
Para resolver este problema, foi implementada a bifurcação suave BIP30 em março de 2012, que proíbe o uso de IDs de transação duplicados, a menos que o anterior tenha sido gasto. Em setembro do mesmo ano, esta regra foi modificada para se aplicar a todos os blocos, com exceção apenas dos dois primeiros conjuntos de transações duplicadas. Em março de 2013, a bifurcação suave BIP34 exigiu que as transações coinbase incluíssem a altura do bloco, o que parece ter resolvido completamente o problema das transações duplicadas.
No entanto, alguns blocos antes da ativação do BIP34, o primeiro byte do scriptSig da transação coinbase coincide exatamente com a altura do bloco que será válido no futuro. Isso significa que, em alguns casos muito raros, transações duplicadas ainda podem ocorrer. O próximo bloco onde uma transação duplicada pode aparecer é 1,983,702, que se espera que seja gerado em torno de janeiro de 2046. Mas aproveitar essa vulnerabilidade é muito caro, exigindo queima de uma grande quantidade de Bitcoin, o que é quase inútil para o atacante.
Considerando a dificuldade e o custo de copiar transações, bem como a raridade de aproveitar oportunidades, essa vulnerabilidade não constitui uma ameaça de segurança significativa para o Bitcoin. No entanto, a longo prazo, os desenvolvedores podem buscar uma solução definitiva para esse problema antes de 2046, possivelmente através de um fork suave. Uma possível soluçã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.
20 gostos
Recompensa
20
5
Republicar
Partilhar
Comentar
0/400
MercilessHalal
· 08-03 13:23
Esta vulnerabilidade é muito nova
Ver originalResponder0
RektButAlive
· 08-01 06:06
Testemunhe um momento histórico
Ver originalResponder0
RunWhenCut
· 08-01 06:06
O risco não pode ser ignorado.
Ver originalResponder0
LiquidityWizard
· 08-01 05:47
Já notei essa vulnerabilidade há muito tempo.
Ver originalResponder0
ImpermanentLossFan
· 08-01 05:45
Os bugs iniciais eram realmente muito interessantes.
Bitcoin vulnerabilidade de transação duplicada: casos raros na história e riscos potenciais futuros
Bitcoin transações duplicadas: uma falha interessante mas de risco muito baixo
As transações de Bitcoin geralmente utilizam saídas não gastas, referenciando o ID de uma transação anterior. Essas saídas só podem ser utilizadas uma vez, caso contrário, ocorrerá um pagamento duplo, fazendo com que o Bitcoin perca valor. No entanto, na história do Bitcoin, realmente houve duas séries de transações idênticas. Essa situação pode ocorrer porque as transações coinbase não têm entradas de transação, mas geram novas moedas. Assim, duas transações coinbase diferentes podem enviar a mesma quantidade de moeda para o mesmo endereço, de forma completamente idêntica, resultando no mesmo ID de transação.
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 IDs que começam com d5d2 como a primeira transação duplicada, embora tenham aparecido pela primeira vez na blockchain após outra transação duplicada.
A ocorrência de transações duplicadas causou confusão nas carteiras e exploradores de blocos, tornando difícil determinar a origem do Bitcoin. Isso também pode trazer riscos de ataques e vulnerabilidades. Por exemplo, é possível pagar a alguém duas vezes com duas transações duplicadas, mas na realidade apenas metade dos fundos pode ser utilizada.
Para resolver este problema, foi implementada a bifurcação suave BIP30 em março de 2012, que proíbe o uso de IDs de transação duplicados, a menos que o anterior tenha sido gasto. Em setembro do mesmo ano, esta regra foi modificada para se aplicar a todos os blocos, com exceção apenas dos dois primeiros conjuntos de transações duplicadas. Em março de 2013, a bifurcação suave BIP34 exigiu que as transações coinbase incluíssem a altura do bloco, o que parece ter resolvido completamente o problema das transações duplicadas.
No entanto, alguns blocos antes da ativação do BIP34, o primeiro byte do scriptSig da transação coinbase coincide exatamente com a altura do bloco que será válido no futuro. Isso significa que, em alguns casos muito raros, transações duplicadas ainda podem ocorrer. O próximo bloco onde uma transação duplicada pode aparecer é 1,983,702, que se espera que seja gerado em torno de janeiro de 2046. Mas aproveitar essa vulnerabilidade é muito caro, exigindo queima de uma grande quantidade de Bitcoin, o que é quase inútil para o atacante.
Considerando a dificuldade e o custo de copiar transações, bem como a raridade de aproveitar oportunidades, essa vulnerabilidade não constitui uma ameaça de segurança significativa para o Bitcoin. No entanto, a longo prazo, os desenvolvedores podem buscar uma solução definitiva para esse problema antes de 2046, possivelmente através de um fork suave. Uma possível solução é a imposição do compromisso SegWit.