Как уже писалось здесь ранее неоднократно , виртуальная криптовалюта Биткойн переживает не лучшие времена.
Уже несколько недель пользователи старейшей и некогда крупнейшей биржи MtGox испытывают трудности при попытке вывести свои биткоины с биржи.
За последние несколько дней трудности Биткойна вышли на новый уровень.
Стоит отметить, что проблемы у MtGox начались весной прошлого года, когда ее текущий счет в США был ликвидирован.
арестован в связи с расследованием незаконной деятельности по переводу денежных средств без соответствующей лицензии.
С тех пор биржа не может найти надежных банковских партнеров и регулярно задерживает платежи в традиционной валюте.
Это привело к заметной разнице обменного курса по сравнению с другими биржами.
Однако что касается вывода биткойнов, то с подобными проблемами биржа сталкивается не впервые.
Как Об этом сообщает Грегори Максвелл, один из ключевых разработчиков Bitcoin Foundation. (ссылка), биржа уже сталкивалась с подобными проблемами в сентябре прошлого года:
Впервые я услышал, как люди сообщают о застрявших транзакциях примерно в сентябре.MtGox не использует эталонное программное обеспечение, предоставленное Bitcoin Foundation, для выполнения биткойн-транзакций.Я изучил это и определил, что Mtgox тратит незрелые монеты.
Только что сгенерированные биткойны (в результате майнинга) нельзя потратить, пока они не достигнут глубины не менее 100 блоков в блокчейне.
Это предотвращает бесповоротное исчезновение средств в случае реорганизации сети.
Я пинговал MagicTux [примечание: Марк Карпеллес] и через пару попыток попытался его дозвониться.
Я думаю, что они также потратили некоторое время на то, чтобы зайти в тупик, пытаясь решить эту проблему, прежде чем их внимание было доведено до фактического характера проблемы, например.
поднимали комиссии за транзакции, ошибочно полагая, что их комиссии недостаточно высоки.
Mtgox не отслеживал, были ли монеты сгенерированы недавно или какова была их высота в их программном обеспечении.
Включение этих данных, очевидно, будет нетривиальным изменением, а для программного обеспечения для финансирования высокого риска даже тривиальное изменение требует большой работы.
Я предложил обходной путь (по сути, просто попробуйте потратить самые старые монеты), и, насколько мне известно, они его реализовали, и он оказался эффективным.
Как они утверждают, эталонный софт не подходит для своих объемов.
Вместо этого они используют собственный кошелек, который, по слухам, был написан на PHP лично Марком Карпеллесом (он же MagicalTux), директором биржи.
При выводе криптовалюты пытались использовать недавно сгенерированные биткойны (менее 100 подтверждений), что запрещено правилами протокола.
В результате эти транзакции были заблокированы и не подтверждены.
Чтобы радикально решить эту проблему, пришлось бы существенно переработать существующее программное обеспечение и отслеживать количество подтверждений для каждой порции монет. Скорее всего, MtGox не решилась на радикальные изменения и вместо этого обошла проблему, изменив алгоритм выбора монет для исходящих транзакций — отдав приоритет самым старым полученным монетам.
Проблема, с которой они столкнулись на этот раз, в чем-то похожа.
Эти проблемы, видимо, начались еще в начале ноября и постепенно ухудшалось, поскольку все больше и больше биткойнов в их кошельках застревали в потерянных исходящих транзакциях.
Здесь уже публиковалось более-менее нормальное объяснение произошедшего на русском языке.
ранее .
Я просто сделаю пару комментариев.
Во-первых, податливые сделки не «пластичны», а «податливы» (колотушка = молоток), или, если переводить по смыслу, «деформируемые».
Во-вторых, многие исходящие транзакции MtGox изначально были не совсем корректны и блокировались большинством узлов сети, поскольку содержали подпись в неверном формате.
Данная блокировка была добавлена в эталонную реализацию клиента сравнительно недавно, и, судя по всему, не все ноды и не все майнеры успели обновить свое программное обеспечение, что позволило MtGox до поры до времени продолжать отправлять кривые транзакции.
Кроме того, MtGox имеет прямой доступ к некоторым майнинговым пулам, что позволило им обходить блокировку транзакций сетью.
Так или иначе, в какой-то момент кто-то внимательно посмотрел, почему его транзакция не проходит, исправил ее (податливость позволяет сделать это без изменения подписи) и отправил.
Поскольку транзакция изменилась по форме (а не по содержанию), изменился и ее хеш, который mtGox использовал для отслеживания.
Пользователь увидел, что монеты поступили на его адрес, однако MtGox продолжала считать, что транзакция не подтверждена.
Позже, либо автоматически, либо вручную (я склонен думать автоматически), MtGox пытается отправить новую транзакцию тому же пользователю.
Если в этой новой транзакции используются «отклеившиеся» монеты (которых поначалу было немного), то либо транзакция снова прошла успешно (иногда случайно подпись была в правильном формате), либо пользователю нужно было « «Перековать» транзакцию еще раз, и он получил новую порцию монет на свой адрес.
Таким образом, эта уязвимость стала очевидной, возможной и легко эксплуатируемой.
Хакеру не пришлось ни конкурировать с исходной некорректной транзакцией, которая уже была заблокирована сетью, ни придумывать хитрые способы «переподделать» транзакцию (многие из которых больше не доступны).
Все, что ему нужно было сделать, это «исправить» транзакцию.
Было известно, что на хэш нельзя полагаться для отслеживания транзакции.
Чуть позже в эталонное программное обеспечение были внесены соответствующие изменения, чтобы оно не полагалось только на идентификатор транзакции, а отслеживало любые транзакции, потребляющие соответствующие выходные данные (забегая вперед, этих изменений оказалось недостаточно).
Несмотря на это, по состоянию на конец января 2014 года разработчики MtGox понятия не имели, что происходит. После нескольких дней расследования, 10 февраля, MtGox наконец заблокировала все исходящие транзакции и опубликовала реклама на вашем сайте .
В нем они кратко приводят техническое описание проблемы и заявляют, что это критическая ошибка в протоколе, а атакам подвержены все биржи и онлайн-кошельки.
В объявлении не упоминаются проблемы с реализацией собственного клиента, которые упростили реализацию атаки.
MtGox так спешили обвинить всех и вся в своих проблемах, что даже забыли извиниться за собственные недостатки, нерасторопность и те, мягко говоря, неудобства, которые они причиняли и продолжают причинять своим пользователям.
После этого заявления первой отреагировала MtGox лично от некоторых ключевых разработчиков , почему официальный Ответное заявление Bitcoin Foundation .
Все они признают, что это давно известный недостаток конструкции протокола, но он ни в коем случае не является критическим.
Утверждается, что эталонное программное обеспечение уже давно содержит код, позволяющий справиться с этими трудностями, и что MtGox следует исправить собственное программное обеспечение.
Многие недоумевают, почему это используется как предлог для блокировки вывода средств с биржи.
Многие биткойнеры сходятся во мнении, что основной целью этого заявления MtGox была дестабилизация цены, чтобы покрыть потери биткойнов за счет их покупки по низкой цене на собственной бирже и арбитража на других биржах.
Однако самое интересное началось вчера.
Кто-то запустил в сети узел/узлы Биткойна, которые перехватывают все транзакции и «подделывают» их в промышленных масштабах.
К некоторые данные Только за 11 и 12 февраля «мутировали» около 30 000 транзакций.
Протокол Биткойна не позволяет украсть деньги таким образом, и единственной целью хакера, похоже, является атака на Биткойн в целом, чтобы еще больше дестабилизировать цену.
Как я отмечал ранее, эталонная реализация протокола не использует идентификатор tx (хэш транзакции) для отслеживания расходования выходов.
Однако есть у него одна особенность, не совсем совместимая с «перековкой».
В настоящее время bitcoin-qt позволяет тратить «сдачу» от транзакции сразу, не дожидаясь подтверждений.
Считалось, что это безопасная практика – поскольку сдача всегда шла в наш собственный кошелек.
Если транзакция, создающая сдачу, подтверждена, то последующая транзакция, расходующая сдачу, будет правильной, и общий баланс кошелька не будет затронут. Если первая транзакция не подтверждена, то транзакция, на которую тратится сдача, не будет иметь смысла.
Переформирование транзакций меняет это предположение, так как перефорсированная транзакция с измененным идентификатором tx может быть подтверждена, но транзакция, тратящая сдачу, становится недействительной из-за того, что идентификатор tx транзакции, от которой она зависит, изменился.
Таким образом, если кто-то активно тратит средства из своего кошелька, баланс может отображаться неправильно, а некоторые транзакции никогда не завершатся.
Биткойны не теряются! Однако это вносит хаос в учет потраченных биткойнов и создает определенные трудности, поскольку «зависшие» транзакции невозможно легко удалить вручную.
Сейчас готовится патч для срочного решения этой проблемы.
Решение простое: не тратьте сдачу, пока не будет получено хотя бы одно подтверждение.
Также будет добавлена команда для ручной «очистки» застрявших транзакций.
В долгосрочной перспективе предлагается минимизировать возможности «перековки» транзакций , хотя пока не совсем ясно, можно ли это полностью исключить.
Я рекомендую не отправлять биткойны с использованием эталонного bitcoin-qt до тех пор, пока не будет выпущена новая версия.
Если все же возникла острая необходимость это сделать, то перед совершением новых транзакций дождитесь хотя бы одного подтверждения.
Обновление: Bitcoin Foundation наконец-то создал новый версия 0.9.0 Ссылка на биткойн.
Теги: #bitcoin #Криптовалюты #bitcoin #MtGox #гибкость
-
Оптимизация Debian
19 Oct, 24 -
Маленькая Радость Питона №2: Старлетт
19 Oct, 24 -
Зонтичный Мониторинг Ит-Ресурсов
19 Oct, 24 -
Что Не Так С Лиспом?
19 Oct, 24