Глоссарий / Майнинг и консенсус
Правила консенсуса
- Что такое правила консенсуса?
- Правила консенсуса представляют собой проверки действительности, которые каждый полный узел применяет к блоку, и нарушение хотя бы одного из них делает этот блок недействительным независимо от того, сколько работы в него вложено.
Свод правил изобилует конкретными требованиями: никаких двойных трат, никаких выходов, которые стоят больше своих входов, действительные скрипты и транзакция coinbase, которая не требует больше субсидии плюс комиссий. Bitcoin Core жестко задает числа: 4 000 000 единиц веса на блок, 80 000 операций с подписью и ожидание в 100 блоков, прежде чем добытые монеты можно будет потратить. Именно из-за этих правил ни одна биржа не может зачислить вам монету, которую сеть никогда не создавала.
Как это работает
Правила консенсуса делятся на четыре группы, и почти все они намеренно скучны.
Первая группа управляет деньгами. Вознаграждение за блок уменьшается вдвое каждые 210 000 блоков, и выход coinbase не может требовать ни на один сатоши больше этой субсидии плюс комиссии фактически включенных транзакций. Монеты, созданные блоком, нельзя потратить в течение следующих 100 блоков. Любая другая транзакция должна тратить выходы, которые существуют, еще не потрачены и удовлетворяют скрипт, который их заблокировал, причем общая сумма на выходе никогда не превышает общую сумму на входе.
Вторая группа управляет ресурсами, потому что проверка должна оставаться достаточно дешевой для обычной машины. Блок не может превышать 4 000 000 единиц веса или 80 000 единиц операций с подписью. Третья группа управляет структурой: транзакция coinbase идет первой и только один раз, корень дерева Меркла в заголовке должен совпадать с присутствующими транзакциями, а хеш заголовка должен быть не выше целевого значения, которое требуют правила сложности. Четвертая группа управляет временем. Отметка времени блока должна быть позже медианы предыдущих одиннадцати и не более чем на два часа опережать собственные часы узла, а с BIP113 по той же медиане времени отсчитываются locktime.
Где записаны эти правила, вот неудобная часть. Независимой спецификации не существует: правила являются тем, что принимает развернутый код, а для подавляющего большинства сети это логика проверки Bitcoin Core, включая ее причуды и случайности. Поэтому переписывание на другом языке считается опасностью, а не улучшением, и поэтому Bitcoin Knots, самый известный вариант, сохраняет поведение консенсуса Core байт в байт и отличается только политикой ретрансляции и майнинга.
Изменить список можно в одном из двух направлений. Мягкая вилка убирает возможности, поэтому блоки, созданные по новым правилам, по-прежнему выглядят действительными для старого программного обеспечения: строгое кодирование подписей DER стало обязательным на блоке 363 725, а OP_CHECKLOCKTIMEVERIFY на блоке 388 381, и ни то, ни другое не разделило сеть. Жесткая вилка добавляет возможности, из-за чего новые блоки выглядят недействительными для всех, кто не обновился, и порождает две цепочки, если только принятие не станет всеобщим.
Почему это важно при покупке биткоина
Правила консенсуса являются единственной частью владения биткоином, о которой никто не сможет потом договориться с вами заново.
Они задают твердый минимум под небольшим числом рисков. Никто не может выпускать монеты вне графика, потратить выход без его ключа или удалить платеж, погребенный под реальной работой. Этот минимум узок, и стоит точно понимать, что остается за его пределами, потому что именно там люди на самом деле теряют деньги: биржа становится неплатежеспособной, фишинговый сайт собирает сид-фразу, сотрудник поддержки замораживает счет, приходит налоговый счет, не заложенный в бюджет. Ни в одном из этих случаев правило не нарушается. Во всех них вы доверяете чему-то, что правила никогда не охватывали.
Это различие дает вам проверку для маркетинговых заявлений. Если сервис может отменить подтвержденный платеж, он не отменил транзакцию биткоина; он скорректировал собственный реестр, и вы никогда не были ончейн. Если продукт обещает расчет быстрее, чем позволяют блоки, он дает вам кредит и берет риск на себя, и это может быть вполне хороший сервис, если вы понимаете, что именно купили. Если монета заявляет о безопасности биткоина при тысячах транзакций в секунду, ограничения ресурсов, описанные выше, являются причиной, по которой биткоин этого не делает.
Чем правила консенсуса решительно не являются, так это законом. Сеть применяет одинаковые проверки к каждому пользователю на земле, а правовой свод правил меняется на каждой границе, поэтому гиды по странам на этом сайте существуют отдельно от всего, что сказано на этой странице. Действительность определяют узлы. Законность, отчетность и то, примет ли вас вообще биржа, определяет ваша юрисдикция, и эти две стороны ни разу не договаривались советоваться друг с другом.
184 миллиарда биткоинов, продержавшихся пять часов
15 августа 2010 года транзакция в блоке 74 638 создала два выхода более чем по 92 миллиарда биткоинов каждый.
Ошибка была арифметической. Код проверял, что каждый выход представляет собой разумную сумму, но складывал их в значение, которое переполнялось, поэтому итог, превышающий весь график выпуска, читался как небольшое положительное число и проходил проверку. Сатоши Накамото опубликовал версию 0.3.10 с исправлением в течение нескольких часов, узлы перешли на нее, и исправленная цепочка обогнала неисправную через 53 блока. Инцидент занесен в каталог как CVE-2010-5139 и остается единственным случаем, когда выпуск биткоина превысил свой график.
Сохраняются два урока. Предел в 21 миллиона не является законом физики, это строка кода, а код может быть ошибочным. И исправление сработало именно потому, что никто им не руководил: тысячи независимых операторов каждый самостоятельно решили запустить исправленное программное обеспечение, и это единственный механизм, который когда-либо было у правила консенсуса.
Правила консенсуса vs политика мемпула
Правила консенсуса решают, что действительно; политика мемпула решает, что узел передаст дальше. Политика мягче, локальна и настраивается для каждого узла: минимальная комиссия за ретрансляцию по умолчанию 1 sat/vB, порог пыли 546 сатоши на устаревшем выходе, ограничения на выходы, несущие данные, и список типов скриптов, считающихся стандартными. Нарушьте политику, и ваша транзакция может просто не распространиться. Нарушьте правило консенсуса, и блок с таким нарушением никогда не сможет существовать. Майнеры регулярно включают транзакции, которые некоторые узлы не стали бы ретранслировать, и полученные блоки полностью действительны, поэтому «мой кошелек говорит, что транзакция нестандартная» является проблемой маршрутизации с обходными путями, а «недействительна» является окончательным решением.