Недавний исследовательский документ от Виталика Бутерина под названием «Руководство по консенсусу с 99-процентной отказоустойчивостью» даёт упрощённые сведения об устройстве и внедрении алгоритма для блокчейнов, устойчивого к необъяснимым ошибкам, который в свою очередь основан на более простой версии алгоритма Лесли Лампорта, предложенного в 1982 году для решения задачи византийских генералов.
Алгоритм, рассматриваемый Бутериным в этом документе, не предполагает отказ от доказательства работы (PoW) или доказательства владения (PoS). Однако следует заметить, что при некоторой его модификации такая замена возможна, особенно в случае, если децентрализация не так важна. Алгоритм можно рассматривать прежде всего как способ отслеживания создания блоков для атаки 51% в реальном времени, а также как метод организации софтфорков, позволяющий устранить последствия таких атак. Модель предполагает, что, если произойдёт атака 51%, возможность её обнаружения сохранится даже при снижении количества добропорядочных узлов до 1%.
Хотя атаки 51% у эфириума и в других децентрализованных сетях маловероятны, данный алгоритм может оказаться весьма полезным. Риск централизации майнинговых пулов эфириума есть всегда, а алгоритм поможет защитить от этой угрозы и повысить доверие к сети, привлекая больше разработчиков, компаний и потребителей. Кроме того, предстоящий переход эфириума на PoS должен уменьшить отказоустойчивость на 30-33%, и вышеназванные консенсусные механизмы смогут функционировать только в случае, если две трети действующих узлов добропорядочны. Таким образом, выгода от дополнительной защиты против атак становится всё более очевидной.
Важно и то, что этот алгоритм применим не только к эфириуму. Он может использоваться любыми блокчейн-проектами, в том числе более централизованными, к которым потребители могут проявлять значительный интерес.
Постоянный пользователь Reddit с ником drcode (это Конрад Барски, CEO Forward Blockchain) объясняет вышеназванный консенсусный механизм следующим образом:
Обычно все проблемы блокчейна связаны с системами проверки (по сути, с майнерами). Виталик предлагает, чтобы независимый наблюдатель сетевого трафика — действующий пользователь блокчейна (но не майнер или система проверки) — следил за тем, что происходит в реальном времени, обращая внимание на потенциальную «грязную игру» майнеров с их намерениями атаки 51%. Это может обеспечить дополнительные гарантии безопасности.
Бутерин пишет о пользе алгоритма, видимо, соглашаясь с мнением drcode о том, что «понимание такого алгоритма выходит за пределы зоны технического комфорта».
[Алгоритм] может использоваться как инструмент обнаружения атак 51% и для координации предотвращения софтфорков со стороны меньшинства, что также не требует вмешательства со стороны людей в экстремальных ситуациях.
Итак, как это работает в практическом плане? Конечно, всё сводится к сложному математическому уравнению, однако разобраться можно, и не вникая в такие подробности.
На самом базовом уровне узлы действуют по алгоритму, который использует данные по хешу и таймаутам блокчейна, что позволяет доказать легитимность блоков. Таким образом, узлы-наблюдатели могут отслеживать блоки в реальном времени, чтобы вовремя замечать возникновение «грязной игры» со стороны майнеров. Такой механизм гарантирует, что если один добропорядочный узел видит «допустимое значение», то его увидят и все добропорядочные узлы — как майнинговые, так и наблюдающие. Следует сказать, что этот механизм привязан к временной задержке, и 99-процентная отказоустойчивость гарантируется только тогда, когда алгоритм синхронизирован с проверкой блоков.
Конечно, такие алгоритмы, как Casper, «Практическая реализация отказоустойчивости при необъяснимых ошибках» (PBFT, Мигель Кастро и Барбара Лисков) и аналогичные консенсусные механизмы могут финализировать блоки не постоянно, а только при условии, что уже создано заданное количество блоков. То есть алгоритм не может выполняться после каждого блока, как это требуется для обеспечения 99-процентной отказоустойчивости. В документе Бутерин также излагает способы модификации алгоритма, устойчивого к необъяснимым ошибкам, до 99-процентной отказоустойчивости, однако отмечает, что на практике критические уровни зависимости, скорее всего, уменьшат эту отказоустойчивость примерно до 95%.
Модификация алгоритма требует, чтобы некоторые узлы-наблюдатели всегда находились онлайн, наблюдая за финализацией формирования блоков. В то же время, по словам Бутерина, 512 произвольно выбранных «финализирующих» узлов должны выполнять заданный алгоритм каждые 4096 секунд и транслировать данные о готовых блоках для других узлов, в том числе для узлов-наблюдателей.
В завершение Бутерин также говорит об ограничениях для предлагаемого алгоритма, подчёркивая, что они неизбежны в любом алгоритме, устойчивом к необъяснимым ошибкам.
Итак, важно понимать: в случае реализации такого алгоритма все транзакции, записанные в блокчейне, будут действительны и безопасны, если 1% производителей блоков добропорядочен и существует сеть наблюдающих узлов.
По материалам ETHNews