Біткойн повторна торгівля: рідкісний, але цікавий випадок
Біткойн-торгівля зазвичай здійснюється через посилання на ID попередньої транзакції для використання незайнятих виходів. Ці виходи можна витратити лише один раз, інакше виникне проблема подвійних витрат. Проте в історії Біткойна дійсно були випадки, коли існували дві абсолютно однакові транзакції. Це могло статися, оскільки транзакції coinbase не мають жодних входів, а безпосередньо створюють нові монети. Таким чином, дві різні транзакції coinbase можуть надіслати однакову кількість монет на одну й ту ж адресу, створюючи абсолютно однакову транзакцію. Оскільки ці транзакції мають однаковий вміст, їхні ID транзакцій також будуть однаковими.
Ці дві групи повторних транзакцій сталися між 14 і 15 листопада 2010 року, тривалістю приблизно 16 годин. Перша група повторних транзакцій розміщена між другою групою. Ми класифікуємо транзакції, ID яких починається на d5d2, як першу повторну транзакцію, хоча вона з’явилася на блокчейні пізніше за іншу повторну транзакцію.
У деяких блокчейн-браузерах можна побачити випадки повторюваних транзакцій, які з'являються в різних блоках. Різні блокчейн-браузери можуть мати різну поведінку за замовчуванням при відображенні цих повторюваних транзакцій.
Ці повторні транзакції кожна стосується 50 Біткойн, всього 200 Біткойн. На даний момент ці Біткойн ще не були витрачені. Теоретично, якщо хтось має відповідний приватний ключ, він може витратити ці Біткойн. Але як тільки вони будуть витрачені, повторні 50 Біткойн будуть втрачені, тому фактично доступними буде лише 100 Біткойн. Щодо того, з якого блоку ці монети будуть витрачені, наразі ще не відомо.
Повторні транзакції, очевидно, можуть призвести до деяких проблем. Вони можуть заплутати гаманці та блокчейн-браузери, а також ускладнити визначення джерела Біткойну. Це також може бути використано для деяких атак, таких як повторне внесення монет на біржу тощо.
Щоб вирішити цю проблему, у березні 2012 року Біткойн через м'який хардфорк реалізував BIP30, заборонивши використання повторюваних ідентифікаторів транзакцій для виконання транзакцій. У вересні 2012 року було проведено подальші зміни, які зробили перевірку BIP30 застосовною до всіх блоків, за винятком двох згаданих раніше груп повторюваних транзакцій.
У березні 2013 року Біткойн знову активував м'який форк BIP34, що вимагав, щоб транзакції coinbase містили інформацію про висоту блоку. Це, здавалося, повністю вирішило проблему повторних транзакцій; теоретично всі транзакції повинні бути унікальними.
Однак, у деяких блоках, що були створені до активації BIP34, перший байт scriptSig деяких coinbase-транзакцій точно відповідає майбутній дійсній висоті блоку. Це означає, що в надзвичайно рідкісних випадках повторні транзакції все ще можуть відбуватися. Наступний блок, в якому можуть з'явитися повторні транзакції, - це 1,983,702, який, як очікується, буде згенеровано приблизно в січні 2046 року.
Однак, враховуючи складність і витрати на копіювання такої угоди, а також те, що можливість її використання є дуже рідкісною, цей недолік не є основною загрозою безпеці Біткойна. Тим не менш, розробники все ще досліджують способи повного виправлення цієї проблеми, що може вимагати реалізації через м'який форк. Одним із можливих варіантів виправлення є примусове виконання обіцянки SegWit.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Рідкісне явище в історії Біткойна: повторні транзакції та їх еволюція
Біткойн повторна торгівля: рідкісний, але цікавий випадок
Біткойн-торгівля зазвичай здійснюється через посилання на ID попередньої транзакції для використання незайнятих виходів. Ці виходи можна витратити лише один раз, інакше виникне проблема подвійних витрат. Проте в історії Біткойна дійсно були випадки, коли існували дві абсолютно однакові транзакції. Це могло статися, оскільки транзакції coinbase не мають жодних входів, а безпосередньо створюють нові монети. Таким чином, дві різні транзакції coinbase можуть надіслати однакову кількість монет на одну й ту ж адресу, створюючи абсолютно однакову транзакцію. Оскільки ці транзакції мають однаковий вміст, їхні ID транзакцій також будуть однаковими.
Ці дві групи повторних транзакцій сталися між 14 і 15 листопада 2010 року, тривалістю приблизно 16 годин. Перша група повторних транзакцій розміщена між другою групою. Ми класифікуємо транзакції, ID яких починається на d5d2, як першу повторну транзакцію, хоча вона з’явилася на блокчейні пізніше за іншу повторну транзакцію.
У деяких блокчейн-браузерах можна побачити випадки повторюваних транзакцій, які з'являються в різних блоках. Різні блокчейн-браузери можуть мати різну поведінку за замовчуванням при відображенні цих повторюваних транзакцій.
Ці повторні транзакції кожна стосується 50 Біткойн, всього 200 Біткойн. На даний момент ці Біткойн ще не були витрачені. Теоретично, якщо хтось має відповідний приватний ключ, він може витратити ці Біткойн. Але як тільки вони будуть витрачені, повторні 50 Біткойн будуть втрачені, тому фактично доступними буде лише 100 Біткойн. Щодо того, з якого блоку ці монети будуть витрачені, наразі ще не відомо.
Повторні транзакції, очевидно, можуть призвести до деяких проблем. Вони можуть заплутати гаманці та блокчейн-браузери, а також ускладнити визначення джерела Біткойну. Це також може бути використано для деяких атак, таких як повторне внесення монет на біржу тощо.
Щоб вирішити цю проблему, у березні 2012 року Біткойн через м'який хардфорк реалізував BIP30, заборонивши використання повторюваних ідентифікаторів транзакцій для виконання транзакцій. У вересні 2012 року було проведено подальші зміни, які зробили перевірку BIP30 застосовною до всіх блоків, за винятком двох згаданих раніше груп повторюваних транзакцій.
У березні 2013 року Біткойн знову активував м'який форк BIP34, що вимагав, щоб транзакції coinbase містили інформацію про висоту блоку. Це, здавалося, повністю вирішило проблему повторних транзакцій; теоретично всі транзакції повинні бути унікальними.
Однак, у деяких блоках, що були створені до активації BIP34, перший байт scriptSig деяких coinbase-транзакцій точно відповідає майбутній дійсній висоті блоку. Це означає, що в надзвичайно рідкісних випадках повторні транзакції все ще можуть відбуватися. Наступний блок, в якому можуть з'явитися повторні транзакції, - це 1,983,702, який, як очікується, буде згенеровано приблизно в січні 2046 року.
Однак, враховуючи складність і витрати на копіювання такої угоди, а також те, що можливість її використання є дуже рідкісною, цей недолік не є основною загрозою безпеці Біткойна. Тим не менш, розробники все ще досліджують способи повного виправлення цієї проблеми, що може вимагати реалізації через м'який форк. Одним із можливих варіантів виправлення є примусове виконання обіцянки SegWit.