Я снова и снова возвращаюсь к одной детали в конструкции Ньютона, которая кажется незначительной, пока не сядешь с ней. Прежде чем операторы смогут произвести совместную подпись, протокол что-то изымает. Не мнения, не ставки — а саму аттестацию, которую каждый оператор сгенерировал, когда получал данные политики. Результат называется дайджестом консенсуса: он формируется путем обнуления строго тех полей, которые делают вклад каждого оператора отличимым. Все подписывают одинаковую, выхолощенную версию одного и того же события.
Я не думаю, что это недостаток. Возможно, это и есть тот самый механизм, который стоит изучить.
Ньютон использует подписи BLS, так что сотни операторов могут сгенерировать одну компактную проверку вместо сотен отдельных. Но агрегирование BLS работает только если каждый подписант указывает свое имя в точном одном и том же сообщении. Операторы независимо проверяют политику, используя свои собственные ключи, и каждое из этих подтверждений отличается, потому что оно несет уникальную подпись. Если бы протокол попытался агрегировать по полному, честному реестру, математика просто не сошлась бы. Поэтому Ньютон вычисляет два дайджеста вместо одного. Дайджест консенсуса, у которого поля подтверждения очищены, подписывается коллективно и проверяется в ончейне через уравнение попарного сравнения. Полный дайджест, содержащий каждое исходное подтверждение, лежит в контрактном хранилище для последующего использования — на случай если кому-то когда-нибудь понадобится оспорить результат.
Что это означает на практике: согласие здесь не обнаруживается — оно конструируется. Операторы не сходятся на общем понимании данных. Они сходятся на общей форме данных — после того, как были удалены те части, из-за которых они могли бы разойтись. Полная картина сохраняется, но лишь как доказательство, а не как то, что подлежит согласованию.
В этом есть что-то почти административное. Комитет не обсуждает сноски — он голосует по резюме, а сноски подшиваются на случай спора, если кого-то заставит вернуться и проверить их.
Я нахожу в этом утешение в одном смысле: на самом деле ничего не теряется — полный дайджест остается там, верифицируемый, ожидающий. Но это также означает, что состояние системы по умолчанию — урезанная версия событий, а более богатая версия подключается только после того, как уже что-то пошло не так. Большинство транзакций никогда не запускают оспаривание. Большинство дайджестов консенсуса никогда не проверяются на соответствие их полной версии. Сжатие становится постоянным по умолчанию не потому, что данные исчезли, а потому что у кого-то не было повода заглянуть назад.
Я не знаю, слабость ли это в точном смысле. Возможно, это просто то, как выглядит проверяемая инфраструктура в масштабе. Но это заставляет меня задуматься: как часто вообще извлекается полный дайджест, и отличается ли система, построенная вокруг почти постоянного невыполнения проверки своего детального журнала, по духу от той, которая вообще никогда не хранила этот журнал.
@NewtonProtocol #Newt $NEWT $XPIN $BEAT
