Особенность протокола Bitcoin, которая привела к задержкам выводов Mtgox и общему переполоху

в 13:47, , рубрики: bitcoin, BTC-E, MtGox, биткойн, паника

MtGox выступил с заявлением, что в связи с «проблемой» в протоколе Bitcoin, у них были задержки с выводом BTC и поэтому им пришлось прекратить все выплаты, пока причина не будет устранена. www.mtgox.com/press_release_20140210.html

Если вам нужен быстрый ответ — нет ошибки в самом Bitcoin. Вы можете пойти на Bitstamp / Coinbase / btc-e и купить больше BTC с огромной скидкой, прежде чем курс вернется к $800 — $900…

Длинный ответ:

Неподтвержденные транзакции Bitcoin всегда были malleable (тягучими), то есть вы можете немного изменить транзакцию, которая «в подвешенном состоянии » (еще не в blockchain), и вы не нарушите свои подписи. Однако, невозможно изменить какие-то важные данные, такие как исходные операции, суммы, порядок входов и выходов, а также какие-то другие метаданные. То, что вы можете сделать, это добавить некоторые фиктивные данные, что не меняет сути сделки, но меняет ее содержание.

Что это означает? Вы можете отправить ABC123 транзакцию, а кто-то может увидеть ее в сети и по тихому изменить, в результате чего ее вид чего будет — ABC124. Если ему повезет, то ABC124 будут включена первой, а исходная ABC123 никогда не будет включена (для предотвращения даблспендинга). Нет никаких проблем для получателя сделки — он все равно получат все свои деньги на адрес, на который он запросил вывод. Но если он будут наблюдать за транзакцией через blockchain специально, то ABC123, он никогда там уже не обнаружит.

MtGox объясняет, как они были обмануты:

1). Пользователь делает запрос на вывод MtGox некоторое кол-во BTC на какой-то адрес.
2). MtGox принимает некоторые из его собственных «неизрасходованных выходов» и составляет транзакцию, которая посылает средства на адрес пользователя.
3). MtGox помнит хэш этой транзакции и смотрит появилась ли она в blockchain.
4). Пользователь или кто-то другой видит неподтвержденную транзакцию MtGox в p2p сети. Он изменяет некоторые байты в ней, чтобы сохранить саму транзакцию в силе, но сделать ее другой и изменить ее хэш.
5). Новая, измененная, транзакция включается в blockchain. MtGox послал деньги, но еще не знает об этом. Пользователь же, уже получил средства на кошелек и уже видит их.
6). Затем пользователь идет в поддержку MtGox и жалуется, что деньги не поступили. Или, MtGox сам видит, что средства не поступают слишком долго, и может автоматически, повторно, отправить другую транзакцию, которая посылает некоторые другие «неизрасходованные TX выходы» на тот же адрес (повторяет отправку). Так или иначе, он создает много путаницы для MtGox и первоначально может даже привести к отправке одной и той же сумы много раз.
Является ли это проблемой самого Bitcoin, который позволяет проводить такие изменения в транзакциях? Да, вероятно, так. Но не совсем ясно, как это можно предотвратить вообще.

MtGox наткнулись на эту проблему, потому что они не знали, об этом свойстве Bitcoin.

MtGox должно решить проблему таким образом: вместо того, чтобы использовать blockchain для наблюдения за появлением хэша конкретной транзакции, следует смотреть, если адрес X ( задается пользователем ) получил сумму N ( указанную пользователем ) с выходами Y, Z и W (используется MtGox ). Это гарантировало бы, что даже если сделка будет изменена, они наверняка это увидят и узнают, получил ли пользователь деньги, предназначенные для него или нет.

Автор: Ajex

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js