Аналіз вразливості повторних транзакцій Біткойн: історичні причини, потенційні ризики та майбутні виклики

Біткойн повторні транзакції: рідкісний системний дефект

Огляд

Біткойн-транзакції зазвичай здійснюються шляхом посилання на 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.
  • Нагородити
  • 5
  • Поділіться
Прокоментувати
0/400
rugpull_survivorvip
· 6год тому
Подивіться, цей баг непоганий! Ми, бідні, маємо лише таку розвагу.
Переглянути оригіналвідповісти на0
ZenChainWalkervip
· 6год тому
Цей майнінг-баг вже 13 років. Пам'ятаю, тоді не спав, спостерігаючи за цим.
Переглянути оригіналвідповісти на0
ImpermanentPhilosophervip
· 6год тому
Ця уразливість занадто рання, так?
Переглянути оригіналвідповісти на0
ser_we_are_ngmivip
· 6год тому
2010 року баг... Це справжня чорна історія криптосвіту
Переглянути оригіналвідповісти на0
  • Закріпити