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