Биткойн-транзакции обычно используют неиспользованные выходы, ссылаясь на ID предыдущей транзакции. Эти выходы могут быть потрачены только один раз, иначе возникнет проблема двойной траты. Тем не менее, в системе Биткойн действительно существуют две группы совершенно одинаковых транзакций. Это происходит потому, что coinbase-транзакции не имеют входов, а просто создают новые токены. Таким образом, две разные coinbase-транзакции могут отправить одинаковое количество на один и тот же адрес, строясь совершенно аналогичным образом, что приводит к созданию одинакового ID транзакции. Кроме того, единственной возможностью для повторения ID транзакции является коллизия хешей, но это почти невозможно в современных криптографических технологиях.
Эти две группы повторных транзакций произошли между 14 и 15 ноября 2010 года, охватывая примерно 16 часов. Первая группа повторных транзакций (d5d2....8599) находится между второй группой, хотя она впервые появилась на блокчейне позже.
Блокчейн-эксплорер показывает, что первая повторная транзакция появляется в двух разных блоках. Разные блокчейн-эксплореры имеют некоторые различия в отображении этих повторных транзакций: некоторые по умолчанию показывают более ранний блок, а другие - более поздний.
В четырех затронутых блоках только один блок (,812) содержит другие транзакции, объединив 1 Биткойн и 19 Биткойн в 20 Биткойн.
Из-за наличия двух одинаковых идентификаторов транзакций, эти повторяющиеся транзакции в общей сложности касаются 200 BTC, или можно сказать 100 BTC. На данный момент эти 200 BTC не были потрачены. Теоретически, человек, имеющий соответствующий приватный ключ, может потратить эти Биткойн, но как только они будут потрачены, повторяющиеся 50 BTC станут недоступными и будут потеряны, таким образом, фактически можно вернуть только 100 BTC. Что касается того, из какого блока эти токены будут вычтены после их расходования, в настоящее время это еще не определено.
Повторные транзакции могут вызвать путаницу в кошельках и блокчейн-обозревателях, а также затуманить источник Биткойна. Это также может быть использовано для атак, например, чтобы дважды заплатить кому-то двумя повторными транзакциями, хотя на самом деле доступна только половина средств. Это может быть использовано для атаки на биржи, пытаясь вызвать ошибку в их средствах.
Чтобы решить проблему повторных транзакций, в марте 2012 года был реализован мягкий форк BIP30, запрещающий использование повторяющихся идентификаторов транзакций, если предыдущая транзакция не была потрачена. В сентябре того же года это правило было дополнительно изменено и стало применяться ко всем блокам.
В марте 2013 года мягкий форк BIP34 потребовал, чтобы транзакции coinbase содержали высоту блока, что в основном решило проблему повторных транзакций. После этого узлы прекратили проверку BIP30, так как эта дорогая проверка больше не была необходима.
Несмотря на то, что BIP34 решает большинство проблем, в некоторых блоках до его активации первый байт scriptSig coinbase-транзакции совпадает с будущей действительной высотой блока. Это означает, что в определенные будущие высоты блока все еще может возникать дублирование транзакций.
Следующий блок, в котором могут возникнуть повторные транзакции, — это 1,983,702, который ожидается примерно в январе 2046 года. Для использования этой уязвимости майнерам потребуется потратить огромные суммы, по текущей цене Биткойна это может превышать 15 миллионов долларов, и при этом практически нет реальной выгоды.
После потенциального риска блоков 169985 ожидается, что он может быть скопирован в 2078 году. Также затраты на использование этой уязвимости могут быть очень высокими.
Вывод
Учитывая сложность копирования сделок, затраты и редкость возможностей, эта уязвимость не представляет собой главную угрозу безопасности Биткойна. Тем не менее, разработчики продолжают искать решения и, возможно, потребуется в конечном итоге исправить эту проблему с помощью мягкого форка. Одним из возможных методов является принудительное выполнение обязательств 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.
15 Лайков
Награда
15
5
Поделиться
комментарий
0/400
rugpull_survivor
· 11ч назад
Смотри, этот баг неплох! Мы, бедные, можем только этим развлекаться.
Посмотреть ОригиналОтветить0
ZenChainWalker
· 11ч назад
Этот баг с майнингом уже 13 лет. Помню, тогда не спал, смотрел за этим делом.
Посмотреть ОригиналОтветить0
ImpermanentPhilosopher
· 11ч назад
Эта уязвимость слишком рано?
Посмотреть ОригиналОтветить0
ser_we_are_ngmi
· 11ч назад
2010 года баг... Это действительно темная история мира криптовалют.
Анализ уязвимости повторной торговли Биткойн: исторические причины, потенциальные риски и будущие вызовы
Биткойн повторные транзакции: редкий системный дефект
Обзор
Биткойн-транзакции обычно используют неиспользованные выходы, ссылаясь на ID предыдущей транзакции. Эти выходы могут быть потрачены только один раз, иначе возникнет проблема двойной траты. Тем не менее, в системе Биткойн действительно существуют две группы совершенно одинаковых транзакций. Это происходит потому, что coinbase-транзакции не имеют входов, а просто создают новые токены. Таким образом, две разные coinbase-транзакции могут отправить одинаковое количество на один и тот же адрес, строясь совершенно аналогичным образом, что приводит к созданию одинакового ID транзакции. Кроме того, единственной возможностью для повторения ID транзакции является коллизия хешей, но это почти невозможно в современных криптографических технологиях.
Эти две группы повторных транзакций произошли между 14 и 15 ноября 2010 года, охватывая примерно 16 часов. Первая группа повторных транзакций (d5d2....8599) находится между второй группой, хотя она впервые появилась на блокчейне позже.
! Дубликаты транзакций биткоина: интересная ошибка с минимальным риском
Подробности о повторной сделке
Блокчейн-эксплорер показывает, что первая повторная транзакция появляется в двух разных блоках. Разные блокчейн-эксплореры имеют некоторые различия в отображении этих повторных транзакций: некоторые по умолчанию показывают более ранний блок, а другие - более поздний.
В четырех затронутых блоках только один блок (,812) содержит другие транзакции, объединив 1 Биткойн и 19 Биткойн в 20 Биткойн.
! Дубликаты транзакций биткоина: интересная ошибка с минимальным риском
Обработка повторного вывода
Из-за наличия двух одинаковых идентификаторов транзакций, эти повторяющиеся транзакции в общей сложности касаются 200 BTC, или можно сказать 100 BTC. На данный момент эти 200 BTC не были потрачены. Теоретически, человек, имеющий соответствующий приватный ключ, может потратить эти Биткойн, но как только они будут потрачены, повторяющиеся 50 BTC станут недоступными и будут потеряны, таким образом, фактически можно вернуть только 100 BTC. Что касается того, из какого блока эти токены будут вычтены после их расходования, в настоящее время это еще не определено.
! Дубликаты транзакций биткоина: интересная ошибка с минимальным риском
Проблема повторных сделок
Повторные транзакции могут вызвать путаницу в кошельках и блокчейн-обозревателях, а также затуманить источник Биткойна. Это также может быть использовано для атак, например, чтобы дважды заплатить кому-то двумя повторными транзакциями, хотя на самом деле доступна только половина средств. Это может быть использовано для атаки на биржи, пытаясь вызвать ошибку в их средствах.
! Дубликаты транзакций биткоина: интересная ошибка с минимальным риском
Решение
Чтобы решить проблему повторных транзакций, в марте 2012 года был реализован мягкий форк BIP30, запрещающий использование повторяющихся идентификаторов транзакций, если предыдущая транзакция не была потрачена. В сентябре того же года это правило было дополнительно изменено и стало применяться ко всем блокам.
В марте 2013 года мягкий форк BIP34 потребовал, чтобы транзакции coinbase содержали высоту блока, что в основном решило проблему повторных транзакций. После этого узлы прекратили проверку BIP30, так как эта дорогая проверка больше не была необходима.
! Дубликаты транзакций биткоина: интересная ошибка с небольшим риском
Потенциальные проблемы будущего
Несмотря на то, что BIP34 решает большинство проблем, в некоторых блоках до его активации первый байт scriptSig coinbase-транзакции совпадает с будущей действительной высотой блока. Это означает, что в определенные будущие высоты блока все еще может возникать дублирование транзакций.
Следующий блок, в котором могут возникнуть повторные транзакции, — это 1,983,702, который ожидается примерно в январе 2046 года. Для использования этой уязвимости майнерам потребуется потратить огромные суммы, по текущей цене Биткойна это может превышать 15 миллионов долларов, и при этом практически нет реальной выгоды.
После потенциального риска блоков 169985 ожидается, что он может быть скопирован в 2078 году. Также затраты на использование этой уязвимости могут быть очень высокими.
Вывод
Учитывая сложность копирования сделок, затраты и редкость возможностей, эта уязвимость не представляет собой главную угрозу безопасности Биткойна. Тем не менее, разработчики продолжают искать решения и, возможно, потребуется в конечном итоге исправить эту проблему с помощью мягкого форка. Одним из возможных методов является принудительное выполнение обязательств SegWit.
! Дубликаты транзакций биткоина: интересный баг с минимальным риском