Перейти к содержимому
buybitcoinsmart

Глоссарий / Майнинг и консенсус

Реорганизация цепочки

Другие названия: Реорганизация цепи, Реорг, Реорганизация блокчейна.

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

Узлы не следуют за цепочкой, которую увидели первой. Они следуют за той, что несет больше доказательства работы, а когда появляется лучшая ветвь, откатываются до точки ветвления и заново проходят вперед. Почти каждая реорганизация в основной цепочке биткоина имеет глубину в один блок и завершается за секунды; самая глубокая зафиксированная, 24 блока в марте 2013 года, была вызвана ошибкой в программном обеспечении, а не атакующим.

Как это работает

Реорганизация цепочки состоит из трех шагов, и узел выполняет их все сам, ни с кем не советуясь.

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

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

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

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

Почему это важно при покупке биткоина

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

Биржа, которая зачисляет пополнение после трех блоков, решила, что откат на три блока не стоит страховать. Биржа, которая ждет шесть, оценила риск выше. Ни одно из этих чисел не исходит из протокола; оба являются внутренней политикой, и поэтому одно и то же пополнение зачисляется за двадцать минут на одной платформе и более чем за час на другой. Когда вы перемещаете биткоины между биржами, которые обозревает этот сайт, эту разницу стоит проверить, прежде чем предполагать, что что-то пошло не так.

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

История дает одно поучительное предостережение. 4 июля 2015 года несколько крупных пулов строили блоки на блоках, которые не проверяли, практика, известная как SPV-майнинг, и создали цепочку из шести блоков, которая оказалась недействительной. Bitcoin.org опубликовал предупреждение, советующее пользователям ждать 30 подтверждений, пока ситуация не разрешится. Урок состоял не в том, что биткоин хрупок; урок состоял в том, что нужная глубина зависит от того, что именно идет не так, и одно подтверждение никогда не является большим запасом.

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

Реорганизация на 24 блока в марте 2013 года

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

Bitcoin 0.8, выпущенная в феврале 2013 года, заменила движок хранения Berkeley DB на LevelDB. 11 марта пришел блок 225 430 с необычно большим числом входов. Узлы, работавшие на версии 0.8, приняли его. Узлы, работавшие на версии 0.7, уперлись в предел блокировок Berkeley DB, который их настройка никогда не позволяла превысить, и отвергли его. Сеть раскололась надвое, и каждая сторона была совершенно уверена, что ошибается другая.

Разработчики в течение часа согласовали действия в IRC и приняли неудобное решение: попросить пулы откатиться на версию 0.7, намеренно отказавшись от ветви с большей работой, потому что именно за этой ветвью не могла следовать большая часть работающих узлов. Раскол длился около шести часов. Когда цепочка версии 0.7 вышла вперед, отброшенная ветвь насчитывала 24 блока. Один платежный процессор, OKPay, сообщил о двойной трате в течение этого периода.

Исправление вышло через несколько дней в версии 0.8.1, которая заставила новые узлы имитировать старый предел до согласованной даты перехода. BIP50 подробно документирует весь этот эпизод и является лучшим материалом для чтения о том, как биткоин справляется с настоящей чрезвычайной ситуацией. Он же является причиной того, что самая глубокая реорганизация в истории биткоина представляет собой рассказ о настройке базы данных, а не о мощности майнинга.

Реорганизация цепочки vs хардфорк

Реорганизация цепочки происходит внутри одного набора правил и заканчивается тем, что все возвращаются на одну и ту же цепочку. Хардфорк меняет правила так, что две ветви уже никогда не смогут примириться, и обе продолжают расти как отдельные активы, что и произошло с Bitcoin Cash 1 августа 2017 года. Одна представляет собой временное разногласие о том, какая действительная цепочка является лучшей. Другой представляет собой постоянное разногласие о том, что значит «действительный».

Реорганизация цепочки vs двойная трата

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

Не путать с

Часто задаваемые вопросы

Насколько глубокой может быть реорганизация цепи биткоина?

На практике на один блок. Самая глубокая реорганизация основной цепи биткоина составила 24 блока в марте 2013 года, ее причиной стала несовместимость баз данных между двумя версиями программного обеспечения, а не вычислительная мощность майнеров, и с тех пор ничего близкого к этому не происходило.

Может ли реорганизация цепи забрать биткоин из моего кошелька?

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

Почему биржи ждут несколько подтверждений, прежде чем зачислить пополнение?

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

Читайте далее

Связанные термины

Еще в разделе «Майнинг и консенсус»

Читать эту страницу на английском