Глоссарий / Майнинг и консенсус
Консенсус
- Что такое консенсус?
- Консенсус в биткоине представляет собой состояние, в котором независимо работающие узлы, следующие одинаковым правилам, приходят к согласию относительно одной цепи: действительной цепи с наибольшим накопленным доказательством работы.
Никто не голосует и никто не главный. Каждый узел проверяет каждый блок по одному и тому же своду правил, а затем следует за той действительной цепочкой, которая несет больше всего работы, и именно так ноутбук, синхронизирующийся с нуля, восстанавливает идентичную историю вплоть до 3 января 2009 года. Когда вы покупаете биткоин, этот механизм определяет, что отправленные вам средства действительно ваши.
Как это работает
Согласие достигается постановкой двух вопросов в фиксированном порядке, а никогда опросом.
Первый вопрос касается действительности. Узел получает блок и проверяет его в одиночку: подписи, суммы, корень Меркла, субсидию, запрошенную майнером, вес, метку времени. Все, что не проходит проверку, отбрасывается на месте, и количество электроэнергии, сожженной на его создание, не имеет значения. Второй вопрос касается выбора между действительными вариантами. Когда две конкурирующие истории обе проходят проверку, узел оставляет ту, у которой больше суммарная работа, сложенная по ее заголовкам, а это не то же самое, что цепочка с наибольшим числом блоков: более короткая ветвь из более сложных блоков побеждает более длинную ветвь из более легких.
Обратите внимание, чего здесь нет. Узлы никогда не обмениваются мнениями, никогда не объявляют о предпочтении и никогда не считают друг друга. Они передают блоки и транзакции, применяют одну и ту же проверку к тому, что приходит, и оказываются в одном и том же месте, потому что проверка детерминирована. Согласие является побочным эффектом того, что каждый считает отдельно, и поэтому у сети нет кворума, который можно подкупить, и нет комитета, который можно вызвать в суд.
Кратковременное расхождение является обычным делом. Два майнера иногда находят решение с разницей в секунду, и половина мира первой видит один блок, поэтому в течение нескольких минут существуют две кандидатные вершины. Следующий блок разрешает ничью, одна ветвь отбрасывается как устаревший блок, а ее транзакции возвращаются в пул памяти. Глубокое расхождение является интересным случаем, и он происходит только тогда, когда узлы работают по разным правилам. Ужесточите правила, и старое программное обеспечение по-прежнему принимает все, что производит новое, а это мягкий форк: Taproot появился так в ноябре 2021 года и ничего не разделил. Ослабьте их, и две группы навсегда пойдут по разным цепочкам, а это жесткий форк, и именно это произошло 1 августа 2017 года, когда отделился Bitcoin Cash.
Почему это важно, когда вы покупаете биткоин
Консенсус делает баланс биткоина вашим, а не обещанием того, кто его держит.
Цепочка приходит к согласию о выходах и ключах, которыми их можно потратить. У нее нет понятия владельца счета. Пока ваши биткоины лежат на бирже, консенсус видит адреса биржи и ничего больше, а ваше право на них является строкой в базе данных этой компании, которое обеспечивается договорным правом, а не узлами. Переведите их в кошелек, ключи которого храните вы, и положение меняется на обратное: глобальный свод правил теперь напрямую признает ваше право распоряжаться, и никакое обращение в поддержку, заморозка или банкротство этого не меняет. В этом весь аргумент в пользу самостоятельного хранения, и это утверждение о консенсусе, а не о доверии.
Форки делают это различие видимым. Каждый, кто хранил свои ключи 1 августа 2017 года, в итоге распоряжался биткоинами в обеих цепочках, потому что обе цепочки унаследовали одну и ту же историю выходов. Каждый, кто хранил их через платформу, получил то, что решила сделать эта платформа, и несколько платформ потратили недели на зачисление нового актива или вовсе отказались его поддерживать. Та же логика применима к любому будущему разделению.
Консенсус также глобален в том смысле, в каком регулирование таковым не является. 231 гид по стране на этом сайте сильно различается в том, что законно, что нужно декларировать и какие платформы вас примут, но ничего из этого не доходит до реестра. Биткоин, купленный в Германии, и биткоин, купленный в Нигерии, проверяются по одним и тем же правилам, находятся в одном и том же наборе UTXO и неразличимы для узла. На границе меняется то, кто вам продаст и что вы должны налоговой, а не то, что сеть считает действительным.
Шесть часов в марте 2013 года, когда биткоин работал с двумя цепочками
Блок 225 430, добытый 11 марта 2013 года, был принят одной версией программного обеспечения и отклонен предыдущей версией.
Bitcoin 0.8 перевел свою базу данных с Berkeley DB на LevelDB и при этом незаметно отбросил недокументированный предел на количество блокировок, которые старая база данных могла взять при обработке крупного блока. Блок превысил этот предел. Узлы, работавшие на 0.7, отклонили его, узлы на 0.8 строили на нем, и сеть около шести часов несла две цепочки. Один двойной расход примерно на 10 000 $ прошел против платежного процессора OKPay.
Разрешение ситуации говорит то, чего не говорит ни один документ протокола. Разработчики попросили майнинговые пулы откатиться на 0.7, чтобы победила более строгая цепочка, и пулы сделали это, отбросив блоки, за которые им уже заплатили. Вскоре вышла версия 0.8.1 с временным ограничением в 500 000 байт на блоки, которые она производила, а BIP50 был написан как разбор после инцидента. Этот эпизод является стандартным доказательством того, что правила биткоина представляют собой то, что фактически обеспечивает развернутое программное обеспечение, включая ошибки, и что когда программное обеспечение противоречит само себе, людям приходится выбирать.
Консенсус vs правила консенсуса
Консенсус является результатом; правила консенсуса представляют собой критерии, по которым он достигается. Правила представляют собой фиксированный список проверок действительности, записанный в коде и одинаковый для всех, кто запускает совместимое программное обеспечение. Консенсус представляет собой меняющийся результат применения этого списка к тем блокам, которые пришли, и поэтому два честных узла могут на мгновение оказаться вне консенсуса, держа разные вершины после почти одновременного блока, при полном согласии о правилах. Измените правила, и вы измените то, какой консенсус возможен; не меняйте ничего, и консенсус все равно сдвигается каждые десять минут по мере поступления новой работы.