Біткойн повторні транзакційні вразливості: історичні випадки та аналіз ризиків на майбутнє

robot
Генерація анотацій у процесі

Біткойн повторні транзакції: цікава, але дуже ризикована уразливість

Біткойн-транзакції зазвичай використовують невитрачені виходи, посилаючись на ID попередньої транзакції. Ці виходи можуть бути витрачені лише один раз, інакше це призведе до проблеми подвійних витрат. Проте в історії Біткойна дійсно були зафіксовані дві групи абсолютно однакових транзакцій. Це могло статися тому, що coinbase-транзакції не мають входів, а безпосередньо генерують нові монети. Таким чином, дві різні coinbase-транзакції можуть надіслати однакову кількість монет на одну й ту ж адресу і бути побудованими абсолютно однаково, що робить їх абсолютно ідентичними. Оскільки вміст транзакцій однаковий, їхні ID транзакцій також однакові.

Біткойн повторних транзакцій: цікавий баг з дуже малим ризиком

Ці дві групи повторних угод відбувалися між 14 і 15 листопада 2010 року, тривалість близько 16 годин. Перша група повторних угод d5d2....8599, хоча спочатку стала копією, але насправді з'явилася на блокчейні пізніше за іншу повторну угоду e3bf....b468.

Біткойн повторні транзакції: цікавий баг з мінімальним ризиком

Цікаво, що різні блокчейн-оглядачі по-різному відображають ці повторювані транзакції. Деякі за замовчуванням показують більш ранні блоки, тоді як інші - більш пізні.

У чотирьох залучених блоках лише один блок містить інші транзакції, об'єднавши виходи 1 Біт і 19 Біт в один вихід 20 Біт.

Ці повторні транзакції з 200 BTC досі не були витрачені. Теоретично, особа, що має відповідний приватний ключ, може витратити ці біткойни, але як тільки вони будуть витрачені, повторні 50 BTC будуть втрачені, тому фактично доступними залишаються лише 100 BTC. Щодо того, з якого блоку ці монети будуть витрачені, наразі не можна визначити.

! Дублювання транзакцій Bitcoin: цікавий баг з мінімальним ризиком

Повторні транзакції очевидно створюють багато проблем. Вони можуть викликати плутанину в гаманцях і блокчейн-браузерах, а також не давати зрозуміти, звідки походить Біткойн. Ще серйозніше, це може бути використано для атак на біржі та інші установи.

Для вирішення цієї проблеми в березні 2012 року було реалізовано м'який форк BIP30, який забороняє використання повторюваних ідентифікаторів транзакцій для транзакцій. У вересні 2012 року це правило було розширено на всі блоки.

Повторні транзакції Біткойна: цікавий баг з мінімальним ризиком

У березні 2013 року активовано м'який форк BIP34, який вимагав, щоб транзакції coinbase містили висоту блоку, що додатково вирішило проблему повторних транзакцій. Отже, у листопаді 2015 року програмне забезпечення Bitcoin Core призупинило перевірку BIP30.

Проте, BIP34 не є ідеальним рішенням. У деяких блоках, створених до активації BIP34, перший байт scriptSig транзакції coinbase точно відповідає майбутній дійсній висоті блоку. Це означає, що все ще можлива поява повторних транзакцій, наступний можливий блок - 1,983,702, який, як очікується, буде згенерований приблизно в січні 2046 року.

Біткойн повторна транзакція: цікава помилка з дуже низьким ризиком

Однак вартість використання цього уразливості є дуже високою. Наприклад, для блоку 1,983,702 майнеру потрібно спалити близько 170 BTC, що за поточною ціною становить близько 15 мільйонів доларів. І ці кошти, ймовірно, не можуть бути повернуті.

Беручи до уваги складність і витрати на копіювання угод, а також рідкість можливостей, ця вразливість не становить основної загрози безпеці Біткойна. Тим не менш, розробники все ще працюють над пошуком способів повного виправлення цієї проблеми, що, можливо, знадобиться реалізувати через м'який форк.

Біткойн повторні транзакції: цікава помилка з дуже низьким ризиком

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Поділіться
Прокоментувати
0/400
CafeMinorvip
· 10год тому
Більше протоколів не завжди означає більшу безпеку~
Переглянути оригіналвідповісти на0
MEVHunterBearishvip
· 07-18 00:45
Цей баг виправляти дійсно нудно...
Переглянути оригіналвідповісти на0
CompoundPersonalityvip
· 07-18 00:42
Раніше про вразливості говорили прямо, і це справді лякало людей.
Переглянути оригіналвідповісти на0
screenshot_gainsvip
· 07-18 00:42
Код завжди є ямою.
Переглянути оригіналвідповісти на0
fren_with_benefitsvip
· 07-18 00:34
Розробники знову щось витворяють~
Переглянути оригіналвідповісти на0
RugPullSurvivorvip
· 07-18 00:27
Дивно, що є такий баг
Переглянути оригіналвідповісти на0
  • Закріпити