Если вам нужен быстрый ответ — нет ошибки в самом Bitcoin. Вы можете пойти на Bitstamp / Coinbase / btc-e и купить больше BTC с огромной скидкой, прежде чем курс вернется к $800 — $900…
Длинный ответ:
Неподтвержденные транзакции Bitcoin всегда были malleable (тягучими), то есть вы можете немного изменить транзакцию, которая «в подвешенном состоянии » (еще не в blockchain), и вы не нарушите свои подписи. Однако, невозможно изменить какие-то важные данные, такие как исходные операции, суммы, порядок входов и выходов, а также другие метаданных. То, что вы можете сделать, это добавить некоторые фиктивные данные, что не меняет сути сделки, но меняет ее содержание.
Что это означает? Вы можете отправить ABC123 транзакцию, а кто-то может увидеть ее в сети и по тихому изменить в результате ее вид чего будет — ABC124. Если ему повезет, то ABC124 будут включена первой, а исходная ABC123 никогда не будет включена (для предотвращения даблспендинга). Нет никаких проблем для получателя сделки — он все равно получат все свои деньги на адрес, куда он запросил вывод. Но если он будут наблюдать за транзакцией в blockchain специально, то ABC123, он никогда там уже не обнаружит.
MtGox объясняет, как они были обмануты:
1). Пользователь делает запрос на вывод из MtGox некоторое кол-во Bitcoins на какой-то адрес пользователя 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 ). Это гарантировало бы, что даже если сделка будет изменена, они наверняка это увидят, получил ли пользователь деньги, предназначенные для него или нет.
ссылка на оригинал статьи http://habrahabr.ru/post/212117/
Добавить комментарий