Двойная трата биткоинов… Так что произошло на самом деле?

Вопрос о двойной трате возник после недавних публикаций, что сеть биткоин допускает расходование одного и того же биткоина в двух транзакциях. И это при том, что сама сеть проектировалась, чтобы избегать подобных ситуаций. Так что же произошло на самом деле? Давайте разберемся.

Конечно такая ситуация сильно напугала инвесторов. Двойная трата это по сути означает, что один и тот же биткоин был потрачен дважды. Но на самом деле ничего подобного не произошло.

В данном случае произошла реорганизация цепочки одного блока, что является довольно частым явлением », — сказал Джейсон Лау, главный операционный директор биржи OKCoin.

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

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

Что такое реорганизация блока биткоинов?

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

Скажем, например, майнинг-пул A и майнинг-пул B одновременно добывают блок, что приводит к двум различным историям цепочки блоков (версии A и B). В дальнейшем все остальные майнеры должны выбрать, на какой версии цепочки строить последующие блоки. Предположим, майнер, который находит следующий блок в последовательности, выбирает использовать версию A, но затем следующие два, три или более майнера решают использовать версию B. Версия B в конечном итоге выигрывает, поскольку все больше майнеров решают добывать в эту цепочку.

Другая история удаляется из сети и считается неактуальной, а любые блоки, добытые в ней, становятся устаревшими.

Так было в блоке 666 833, где два блока были порождены отдельными майнинговыми пулами и произошла реорганизация одного блока, как описано Лау. Вышеупомянутый сценарий является причиной того, почему Сатоши Накамото сказал в официальном документе, что транзакция должна считаться окончательной только после шести подтверждений (т.е. Шесть новых блоков добавляются в цепочку, которая записала транзакцию).

Нет, двойной траты на самом деле не было

Предполагаемое двойное расходование впервые стало новостью вчера после того, как BitMex Research сообщила об отклонениях в блоке 666 833 в Twitter . Реорганизация означала добычу «устаревшего блока» (также иногда называемого «сиротский блок»), который содержал биткоины, также потраченные на действующую цепочку биткоинов, поэтому транзакция, содержащая тот же биткоин, была записана как в релевантных, так и в нерелевантных цепочках. 

Вот что произошло на самом деле

Произошло это примерно так: кто-то отправил 0,00062063 BTC на этот адрес, но установил минимально возможную комиссию (1 сатоши за байт или менее доли цента за байт данных транзакции). 

Поскольку комиссия была настолько низкой, для подтверждения транзакции потребовалось время, поэтому отправитель попытался опередить ее, отправив так называемую «транзакцию замены с комиссией» (RBF).

Однако вместо того, чтобы RBF заменял медленную транзакцию, как предполагалось, транзакция с более низкой комиссией очищалась первой и попадала в блок, который был добыт в самой длинной цепочке.

Между тем, транзакция с более высокой комиссией попала в устаревший блок.

Важность 6 подтверждений

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

«Это своего рода двойная трата, но не совсем. Обычно двойное расходование означает, что вы намеренно заменяете транзакцию, которая отправляет деньги кому-то на транзакцию, которая отправляет их в ваш собственный кошелек », — сказал Бен Карман, участник и разработчик Bitcoin Core в Suredbits.

В этом сценарии «важно знать, что да, могут быть разные версии одной и той же транзакции, но только [одна] в конечном итоге будет принята» узлами и пользователями сети Биткойн, Coin Metrics, аналитик данных сети Биткойн. — написал Лукас Нуцци в Twitter.

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

Как выразился в Twitter соучредитель CoinMetric, то, что произошло вчера, было для Биткойна на самом деле довольно банальным, не говоря уже о том, что Сатоши Накамото описывает такое поведение в официальном документе.

Так что все в порядке. Выдыхаем. Никаких двойных транзакций.

Читайте также: Как купить биткоин?