Біткойн системі повторні транзакції: рідкісна та цікава вразливість
Біткойн-транзакції зазвичай здійснюються шляхом посилання на ID попередньої транзакції для використання невитрачених виходів. Ці виходи можна використовувати лише один раз, інакше це призведе до проблеми подвійної витрати. Проте в історії Біткойна сталося дві групи повністю ідентичних транзакцій. Це стало можливим, оскільки coinbase-транзакції не мають входів, а натомість безпосередньо генерують нові монети. Таким чином, дві різні coinbase-транзакції можуть надіслати однакову кількість Біткойнів на одну й ту ж адресу, створюючи абсолютно однакові транзакції. Оскільки ці транзакції мають однаковий зміст, їхні ID транзакцій також збігаються.
Ці дві групи повторних транзакцій відбувалися між 14 і 15 листопада 2010 року, тривалість приблизно 16 годин. ID першої групи повторних транзакцій починається на d5d2 і закінчується на 8599; друга група починається на e3bf і закінчується на b468. Цікаво, що, незважаючи на те, що d5d2....8599 спочатку став копією, він вперше з'явився на блокчейні пізніше, ніж e3bf....b468.
Ці повторні транзакції включають загальну кількість Біткойнів у 200 BTC, по 50 BTC за кожну транзакцію. На даний момент ці Біткойни ще не були використані. Теоретично, особа, яка має відповідний приватний ключ, може витратити ці Біткойни, але як тільки вони будуть використані, повторні 50 BTC будуть втрачені, тому фактично доступні Біткойни можуть становити лише 100 BTC.
Повторні транзакції можуть спричинити проблеми для гаманців і блокчейн-браузерів, а також затуманити походження Біткойнів. Ще серйозніше, це може бути використано для атак на біржі та інші установи, що призведе до втрат коштів. Щоб вирішити цю проблему, у березні 2012 року було впроваджено м'який форк BIP30, який забороняє використання повторних ідентифікаторів транзакцій, якщо попередня транзакція вже не була використана. У вересні того ж року це правило було додатково розширено на всі блоки.
У березні 2013 року активовано м'який форк BIP34, який вимагав, щоб транзакції coinbase містили інформацію про висоту блоку, що далі зменшило ймовірність виникнення повторних транзакцій. Проте в деяких блоках до BIP34 існують транзакції coinbase, у яких перший байт scriptSig збігається з висотою блоку, що буде дійсною в майбутньому, що означає, що ризик повторних транзакцій все ще існує, хоч і надзвичайно рідко.
Наступний блок, у якому можуть виникнути повторні транзакції, - це 1,983,702, який, як очікується, з'явиться приблизно в січні 2046 року. Щоб скористатися цим уразливістю, майнерам потрібно буде понести величезні витрати, включаючи спалення великої кількості Біткойн як комісії за транзакції. Враховуючи витрати та складність, ця уразливість не є основною загрозою для безпеки системи Біткойн.
Попри це, розробники протягом багатьох років все ще намагаються вирішити цю проблему. Можливі варіанти виправлення включають впровадження зобов'язань 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.
Біткойн повторне交易漏洞: рідкісні історичні події та аналіз ризиків у майбутньому
Біткойн системі повторні транзакції: рідкісна та цікава вразливість
Біткойн-транзакції зазвичай здійснюються шляхом посилання на ID попередньої транзакції для використання невитрачених виходів. Ці виходи можна використовувати лише один раз, інакше це призведе до проблеми подвійної витрати. Проте в історії Біткойна сталося дві групи повністю ідентичних транзакцій. Це стало можливим, оскільки coinbase-транзакції не мають входів, а натомість безпосередньо генерують нові монети. Таким чином, дві різні coinbase-транзакції можуть надіслати однакову кількість Біткойнів на одну й ту ж адресу, створюючи абсолютно однакові транзакції. Оскільки ці транзакції мають однаковий зміст, їхні ID транзакцій також збігаються.
Ці дві групи повторних транзакцій відбувалися між 14 і 15 листопада 2010 року, тривалість приблизно 16 годин. ID першої групи повторних транзакцій починається на d5d2 і закінчується на 8599; друга група починається на e3bf і закінчується на b468. Цікаво, що, незважаючи на те, що d5d2....8599 спочатку став копією, він вперше з'явився на блокчейні пізніше, ніж e3bf....b468.
Ці повторні транзакції включають загальну кількість Біткойнів у 200 BTC, по 50 BTC за кожну транзакцію. На даний момент ці Біткойни ще не були використані. Теоретично, особа, яка має відповідний приватний ключ, може витратити ці Біткойни, але як тільки вони будуть використані, повторні 50 BTC будуть втрачені, тому фактично доступні Біткойни можуть становити лише 100 BTC.
Повторні транзакції можуть спричинити проблеми для гаманців і блокчейн-браузерів, а також затуманити походження Біткойнів. Ще серйозніше, це може бути використано для атак на біржі та інші установи, що призведе до втрат коштів. Щоб вирішити цю проблему, у березні 2012 року було впроваджено м'який форк BIP30, який забороняє використання повторних ідентифікаторів транзакцій, якщо попередня транзакція вже не була використана. У вересні того ж року це правило було додатково розширено на всі блоки.
У березні 2013 року активовано м'який форк BIP34, який вимагав, щоб транзакції coinbase містили інформацію про висоту блоку, що далі зменшило ймовірність виникнення повторних транзакцій. Проте в деяких блоках до BIP34 існують транзакції coinbase, у яких перший байт scriptSig збігається з висотою блоку, що буде дійсною в майбутньому, що означає, що ризик повторних транзакцій все ще існує, хоч і надзвичайно рідко.
Наступний блок, у якому можуть виникнути повторні транзакції, - це 1,983,702, який, як очікується, з'явиться приблизно в січні 2046 року. Щоб скористатися цим уразливістю, майнерам потрібно буде понести величезні витрати, включаючи спалення великої кількості Біткойн як комісії за транзакції. Враховуючи витрати та складність, ця уразливість не є основною загрозою для безпеки системи Біткойн.
Попри це, розробники протягом багатьох років все ще намагаються вирішити цю проблему. Можливі варіанти виправлення включають впровадження зобов'язань SegWit, що, можливо, вимагатиме реалізації через м'який форк. Хоча ця вразливість на практиці майже неможливо експлуатувати, вона підкреслює складність системи Біткойн та потенційні історичні проблеми.