Как известно, несколько дней назад в платёжной сети Bitcoin случился сбой с раздвоением цепочки транзакций. Сбой произошёл из-за совершенно незначительной ошибки в старой версии клиентского обеспечения Bitcoin 0.7. Этой версией по-прежнему пользуются многие майнеры биткоинов, которые одновременно занимаются подтверждением транзакций. Из-за бага родилась параллельная цепочка транзакций, которую генерировали пользователи Bitcoin 0.8.

Если посмотреть на историю не с технической точки зрения, а с экономическо-криминальной, то этот маленький баг вполне можно использовать для… ограбления обменного пункта! В течение нескольких дней транзакции вносились в две цепочки по отдельности, то есть можно потратить биткоины сначала в одной цепочке транзакций, а потом в другой цепочке.

Такое «ограбление» или «мошенничество» возможно минимальными усилиями, ведь спровоцировать двойную цепочку транзакций оказалось совершенно несложно. Судя по всему, обнаружена самая главная уязвимость в платёжной системе Bitcoin: это баги в программном обеспечении, то есть в клиентах Bitcoin.

Ограбление обменного пункта — не просто теоретическая возможность. Вчера один из пользователей на Bitcoin Forum рассказал реальную историю, как ему удалось успешно потратить свои монеты дважды.

Вот краткая хронология событий, время указано для часового пояса UTC +8:00.

08:08 – До того, как пользователь узнал о баге, он перечислил биткоинов на $10000 в обменник BTC-e через OKPAY, на адрес 12z2n8YCJw1BEsJhhQPLCTuLqwH341nKnE отправлено 211,9093 BTC с комиссией 0,0005 BTC.

09:30 – Транзакция включена в цепочку версии 0.8, блок 225446.

10:08 – Депозит осуществлён, $9800 перечислено на счёт BTC-e.

12:53 – После изучения цепочки пользователь обнаружил, что транзакция включена в форк 0.8, но так и не была подтверждена в форке 0.7, так что он решил поэкспериментировать и отправил команду OKPAY на осуществление транзакции через API, комиссия 0,001 BTC.

13:01 – Вторая транзакция на те же биткоины включена в форк 0.7, блок 225446.

Как известно, именно форк 0.7 впоследствии решено было сделать «настоящим», а 0.8 — аннулировать.

Таким образом, пользователь дважды обменял свои биткоины на доллары, используя две цепочки транзакций от клиентов с веток Bitcoin 0.7 и Bitcoin 0.8. Неудивительно, что с такими багами рыночный курс BTC одномоментно упал на 25%, хотя вскоре восстановился. Кто может гарантировать, что из-за нового бага в программе цепочка снова не раздвоится? И если так, то как гарантировать необратимость транзакций при сохранении высокой скорости проведения платежей?

Оставить мнение