Алгоритмы консенсуса — их уже более 65 видов

    Алгоритмы консенсуса — их уже более 65 видов
    0

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

    Первый алгоритм консенсуса в криптовалютной сети – Proof of Work, был реализован в 2009 году создателем Bitcoin, Сатоши Накамото.

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

    Следующий этап развития блокчейн-технологии – виртуальная машина для выполнения смарт-контрактов Ethereum. Изначально она использует алгоритм PoW, но уже с первых лет рассматривалась возможность перехода на PoS – доказательство доли владения. Требования к такой системе: масштабирование и высокая пропускная способность с сохранением децентрализации могут быть более эффективно удовлетворены PoS и решением задачи византийских генералов (BFT) валидаторами, размещающими свои токены ETH в стейк.

    Валидаторы – участники сети, подтверждающие валидность блоков с помощью заданного алгоритма консенсуса.

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

    Новые алгоритмы консенсуса и их модификации появляются регулярно. Получите представление о том, как они работают.

    PoW (Proof of Work)

    Доказательство работы требует вычислительной мощности майнеров. Например CPU (процессоров) или GPU (видеокарт). Это гарантирует, что действия в сети утверждаются только заинтересованными в её процветании участниками.

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

    Есть много реализаций PoW (например: Dagger Hashimoto у Ethereum). Но очевидно самая популярная, первая, была у Биткоина.

    В Биткоине узлы выполняют поиск хэша, в котором закодирован набор данных (путём двойного хэширования алгоритмом SHA-256). Искомый хэш содержит: актуальную версию ПО, хэш предыдущего блока, корень Меркла с актуальным состоянием всех транзакций в блокчейне, временной штамп, значение уровня сложности и случайное значение (nonce). Зная все эти пункты кроме последнего, майнер начинает подставлять и перебирать число нонс, начиная от 0.

    Тот, кто быстрее остальных найдёт нужное число, получит производное искомого хэша и сможет включить транзакции в блок (тем временем они ожидают в мемпуле). Майнер сам принимает решение, какие транзакции будут добавлены в блок. Их количество ограничено размером блока (2MB, или около 2500 транзакций). Отправитель оставляет некоторое количество монет в виде награды для майнера, и по принципу аукциона, зачастую, предпочтение отдаётся тем, кто готов заплатить максимум за включение в блок.

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

    Сеть достигает консенсуса, когда более 51%, а в действительности 70-80% нод соглашаются с одной и той же версией блока. В случае несогласия, происходит форк: часть майнеров начинает добывать параллельную ветку. Во избежание атаки 51% (двойной траты), когда отправитель овладевает большей частью вычислительной мощности в сети и успешно размещает в сети блок с поддельной информацией о расходе, пользователи ожидают 3, 5 или 10 подтверждений сети. Каждый новый блок увеличивает дистанцию, которую способен теоретически симулировать злоумышленник.

    Используют: Bitcoin, Litecoin, Bitcoin Cash, Ethereum 1.0, Monero, ZCash.

    PoPoW (Proof of Proof of Work)

    Доказательство доказательства работы.

    Предложены как интерактивные так и неинтерактивные. Неинтерактивные доказательства работы (NIPoPoWs), могут быть адаптированы к существующим криптовалютам на основе PoW, чтобы улучшить их производительность и расширить их функциональность. В отличие от традиционного блокчейн-клиента, PoPoW являются краткими доказательствами и не должны проверять всю линейно растущую цепочку.

    Метод может применяться для узлов SPV (Simplified Payment Verification), которые не хранят всю цепочку и не участвуют в поисках блока, но тем не менее участвуют в валидации платежей. Например – в консенсусе могут принимать участие клиенты (устройства) пользователей.

    Используют: ERGO, Nimic, WebDollar.

    PoMW (Proof of Meaningful Work)

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

    Используют: Vrenelium.

    HPoW (Hybrid Proof of Work)

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

    Майнер может добывать блок не чаще чем раз в 30 минут, и удачливый майнер выбирается случайным образом, независимо от скорости нахождения блока лично им.

    Используют: Lynx.

    PoWT (Proof of Work Time)

    Скорость чеканки блоков увеличивается с ростом вычислительной мощности сети. Время на появление нового блока варьируется от 15 секунд до 6 минут.

    Используют: Verium.

    Delayed Proof of Work (dPoW)

    64 узла «нотариуса» фиксируют состояние в сети, и примерно каждые 10 минут делают слепок последнего блока своей сети и записывают его хеш транзакцией в сеть Bitcoin, откуда затем могут проверять валидность собственной цепочки.

    Используют: Komodo.

    PoED (Proof of Edit Distance)

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

    Например: Bitcoin, Ethereum и NEO создали блоки с хешами 0000000000000000006abfe31e59af9f81b3fc84a1a25a8fdc095e429dc6dffa, 0x73413ff99013f6007b72e299aee87da63311602ae4dfb1466b254b7c89b8e1bd, 0b58e3e1980eb79c293ee1d047997c5a7092da8d49813c2407e90f85e0ba1f9e. При пороге 0.29 искомый хеш будет ниже 0.29 для всех блоков – c53a147e80b2ae87c50d62dfdc82501d0405c9734d0daf6197918f182ca6c7f5.

    дистанция-между-хешами-proof-of-edit-distance-poed

    Используют: Overline (Block Collider).

    ePoW (energy-saving Proof of Work)

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

    Используют: HDAC.

    SSPoW (Semi-Synchronous Proof of Work)

    Поиск блока, как и в Bitcoin, происходит асинхронно и первый кто найдёт блок, будет его включать в основную цепь. Но формирование пула транзакций для включения в блок алгоритм SSPoW совершает синхронно, используя принцип византийской отказоустойчивости (⅔ узлов должны сообщиться касательно истинного состояния пула транзакций и порядка их очереди на включение в блок).

    Также известно как PoP (Proof of Proof).

    Используют: Purple, Veriblock.

    Spectre (Serialization of Proof of Work Events)

    Совмещает PoW и DAG, чтобы достичь консенсуса. Блоки выпускаются несколькими родителями вместо одного, и сеть потенциально может создавать несколько блоков в секунду. Получается спектр. В сравнении с принципом PoW, где побеждает самая длинная цепочка, в Spectre побеждает блок с наибольшим количеством «детей».

    PoS (Proof of Stake)

    Доказательство доли владения требует наличия стейка (монет на балансе валидатора) и сервер для вычислений. Объем добычи не зависит от мощности сервера.

    Более подробно об алгоритме PoS.

    Поскольку чеканка блоков в PoS моделях, в сравнении с PoW, не требует сложных вычислений, она может происходить в фиксированном временном интервале.

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

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

    Используют: Peercoin, Blackcoin, Nxt, Polygon.

    DPoS (Delegated Proof of Stake)

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

    граф-сабграфы-блокчейн-индексация

    Впервые предложено Дэном Ларимаром и вызвало неоднозначную реакцию сообщества: с одной стороны такой подход значительно быстрее большинства других PoS-алгоритмов консенсуса, с другой – более централизован. Хотя в действительности половина вычислительной мощности PoW сети Bitcoin сконцентрирована всего в 4 пулах, что не мешает считать его децентрализованным.

    Более подробная статья про алгоритм DPoS содержит особенности блокчейна, его историю, преимущества и недостатки.

    Используют: TRON, Tezos, Cardano, Lisk, Elastos, Ark, Rise, Credits, Aunite.

    PoA (Proof of Authority)

    Транзакции и блоки в механизме PoA проверяются утверждёнными валидаторами. В сети должна хранится подтверждённая информация об их личности. Право на участие труднодостижимо и лицензируется с привязкой к личности, например, у государственного нотариуса. Для создания эффективного органа, проверки и процедуры должны быть полностью единообразны.

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

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

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

    Узлы-валидаторы должны убедиться, что: блок сгенерировала лидирующая нода (в правильном временном интервале); это единственный сгенерированный ею блок; он сформирован и подписан корректно. Затем подтвердить транзакции, одна за другой. Если блок успешно подтверждён, он добавляется в цепочку, если нет: отвергнуть его и отправить «bad block» транзакцию. Ведущая нода, что продолжает генерировать плохие блоки будет исключена из процесса.

    Проблема форка решается по принципу самой длинной цепочки.

    Также известно как PoR (Proof of Reputation).

    Используют: Ethereum Kovan, Ethereum Parity, Clique Rinkeby (TestNet), POA.Network.

    PoS (Proof of Service)

    Особенностью алгоритма доказательства обслуживания является система, которая запрограммирована на псевдослучайный (стохастическая модель с репутацией) выбор мастернод, которые подписывают блок. Алгоритм консенсуса основан на концепции комитетов, которые переизбираются для подписания каждого блока. Комитет формируется с использованием системы репутации, которая зависит от первоначальной ставки и качества работы мастерноды (мастернода всегда онлайн и предлагает только настоящие блоки).

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

    Существует 2 типа аккаунтов: операционные и репутационные. При первом запуске мастернода должны перевести часть монет на свой репутационный баланс.

    Комитет, сформированный после подтверждения последнего блока, получает запросы на хранение открытых ключей. Из этих запросов каждая мастернода, входящая в комитет, формирует свой вариант блока.

    Каждый блок содержит открытый ключ из запроса и транзакцию со ставкой. Мастерноды транслируют произведенные блоки всем членам комитета. Консенсус по подтверждению блока достигается внутри комитета, и структура комитета изменяется после каждого успешного подтверждения блока. Если комитет консенсусом принял блок, предложенный мастернодой – мастернода получает вознаграждение.

    Используют: remChain.

    PoB (Proof of Believability)

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

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

    Доказательство доверия делит всех участников процесса на две группы: правдивую и нормальную. Вначале правдивые ноды быстро обрабатывают транзакции и завершают первую фазу. Затем нормальные ноды финализируют состояние цепи.

    Избрание в правдивую лигу рассчитывается на основании нескольких факторов активности (баланс, вклады, отзывы).

    Суровая система наказаний предусматривает лишение валидатора всех токенов и репутации в системе при некорректном поведении.

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

    Используют: IOST.

    PoI (Proof of Importance)

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

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

    • Транзакции на адресах должны быть не старше 30 дней (поздние транзакции имеют больший вес).
    • У получателя должно быть минимум 10 тыс. монет на адресе (чем больше монет тем выше шансы).
    • Количество кластеров (учётные записи, завязанные в активных кластерах предпочитаются выше, чем брошенные адреса и концентраторы).

    Поощряются торговцы и биржи, вместо традиционных крупных держателей PoS-систем. PoI снижает риски атаки 51%, поскольку при форке потребуется поддержка транзакционной активности на двух ветвях одновременно.

    Используют: NEM.

    PoSV (Proof of Stake-Velocity)

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

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

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

    Используют: Reddcoin.

    LPoS (Leased Proof of Stake)

    Расширенная модель PoS, где внутренняя архитектура блокчейна позволяет пользователям сдавать в аренду свои средства полным узлам под валидацию блоков, без участия третьих лиц (P2P).

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

    В остальном консенсус в LPoS может достигаться по аналогии с классическим PoS.

    Используют: WAVES.

    PoF (Proof of Formulation)

    В отличие от консенсусов PoW и PoS, PoF не требует чрезмерных вычислительных ресурсов и не зависит от суммы «доли», которой кто-то обладает. Из-за этого уменьшается конкуренция за то, кто добывает и создает блоки, и каждый получает ход. PoF также имеет встроенные механизмы, предотвращающие возможность возникновения любых форков. 

    В остальном принцип достижения консенсуса близок к Proof of Service.

    Proof of Formulation – запатентованный алгоритм консенсуса в Патентном бюро Соединённых Штатов (Приложение №62717695).

    Используют: FLETA.

    PoD (Proof of Devotion)

    Право утверждать блоки получают валидаторы с наибольшим количеством влияния и распространения. Аналог PoI (Proof of Importance).

    Набор валидаторов динамически меняется, а для участия в раунде утверждения требуется сформированная группа из валидаторов владеющих ⅔ объёмом от всех стейкинг депозитов (по принципу BFT).

    Используют: Nebulas.

    PoSV (Proof of Stake Voting)

    Система аналогичная DPoS (Delegated Proof of Stake), но с улучшениями в области голосования.

    В классических DPoS узлы не имеют прямой заинтересованности в постоянном голосовании, а некоторые даже требуют для этого финансовых затрат (что приводило к усилению централизации). В PoSV реализована концепция бесплатного и неограниченного голосования за избрание валидаторов, где все участники вознаграждаются наравне.

    Используют: TomoChain.

    Roll-DPoS (Randomized Delegated Proof of Stake)

    Аналог DPoS, с минорным различием в подходе к голосованию и масштабированию.

    Также известно как VBFT (Verifiable Random Function, Byzantine Fault Tolerant).

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

    Сеть масштабируется по принципу сайдчейнов (субцепей).

    Используют: IoTeX.

    PoL (Proof of Lock)

    Метод, используемый для усиления алгоритма DBFT PoS (Delegated Byzantine Fault Tolerant Proof of Stake). Валидатор, собравший ⅔ голосов за предложение блока – блокируется в этом предложении. В этот период другие валидаторы могут запросить у него заблокированные данные, и быть уверены в их неизменности. Это позволяет передавать надёжное состояние между валидаторами, даже если у некоторых из них возникают проблемы с соединением (черпая состояние у заблокированного валидатора).

    Используют: Exonum.

    PoST (Proof of Stake Time)

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

    Используют: Vericoin, Postcoin.

    PoSB (Proof of Stake Boo)

    Снижает риск атаки 51% путём прогрессивного штрафа стейка за попытки нарушить консенсус.

    Повышает устойчивость к цензуре (узел, который нашёл блок и не включает в него транзакции из очереди, рискует быть оштрафован; в отличие от например PoW алгоритма, где майнер может отказаться включать транзакции в блок избирательно).

    Используют: SHIELD.

    HiPoS (High Interest Proof of Stake)

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

    Используют: Positron, BitBean, EdgeCoin, GRAVITYBITS.

    APoS (Asset PoS)

    В качестве залога для стейкинга валидаторы предоставляют популярные активы (например – BTC). Это позволяет найти применение нестейкабельной криптовалюте и обеспечить сети защиту от злоупотреблений.

    Используют: MarcoPolo Protocol.

    BFT PoS (Byzantine Fault Tolerant Proof of Stake)

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

    Достигается BFT путём утверждения тех блоков, чьё содержимое по крайней мере ⅔ узлов считают валидным. Поведение всех узлов постоянно отслеживается: простои и отправка ложной информации наказываются лишением награды, либо даже стейка.

    Толерантность находит активное применение в PoS системах. Узлы получают возможность выходить из строя по сценарию, вместо остановки и отказа в обслуживании.

    Используют: Ethereum 2.0.

    DBFT PoS (Delegated Byzantine Fault Tolerant Proof of Stake)

    Ускоряет финализацию блоков путём делегирования права валидации конкретному набору узлов. Подобно DPoS.

    Используют: NEO.

    FBA (Federated Byzantine Agreement)

    Форма Византийской отказоустойчивости, когда каждый генерал несёт ответственность за свой блокчейн. Ноды собираются в кворумы и федеративно проводят валидацию лишь части событий, экономя ресурсы и увеличивая пропускную способность сети. Избавляет от недостатков традиционного BFT, когда крупные собственники капитала могут представлять угрозу, влияя на валидацию блока целиком.

    Узлы должны быть известны и проверены заранее (в Ripple) или могут подключаться произвольно (в Stellar).

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

    Используют: Ripple, Stellar, Bravo, Shaan.

    LFT (Loop Fault Tolerance)

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

    В традиционном дизайне BFT есть 3 шага: предварительная подготовка, подготовка и фиксация. LFT сокращает процесс до 2,5 шагов, ограничивая количество узлов, транслирующих результаты генерации блоков; остальные узлы в нём участвуют только в голосовании. Это сокращает расходы на коммуникацию за счёт консолидации сообщений из сети.

    Механизм LFT использует технику «спиннинга», чтобы упростить алгоритм выбора первичного узла. На иллюстрации выше показан принцип его работы. Ноды-валидаторы передают необходимые транзакции считывающим нодам. Основные ноды собирают затем все транзакции и генерируют блок, рассылая его с подписью для того, чтобы остальные валидационные узлы могли проверить его.

    Loop Fault Tolerance продолжает серию эволюционных решений для Byzantine Fault Tolerance (BFT), одного из самых безопасных, высокопроизводительных и масштабируемых консенсусных алгоритмов для блокчейнов.

    Используют: ICON.

    SBFT (Simplified Byzantine Fault Tolerance)

    В упрощённой форме BFT валидаторы назначаются и удаляются вручную руководителями приложения. Все участники знают подписывающие лица и доверяют им.

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

    Может использоваться в блокчейнах частных коммерческих компаний и организаций.

    HPBFT (Hybrid PBFT с Aurand)

    Гибридный Practical Byzantine Fault Tolerant алгоритм, с дополнительным слоем валидации блоков механизмом Aurand. Валидаторы быстро предлагают Aurand блоки (каждые ±4-5 секунд), но могут быть оштрафованы за подачу ложных данных или уход в оффлайн. Периодически PBFT финализирует состояние цепочки (каждые ±30 секунд).

    hybrid-pbft-aurand

    Используют: Polkadot.

    FFG (Casper the Friendly Finality Gadget)

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

    Часть семейства протоколов Correct by Construction Casper (CBC).

    Используют: Ethereum 2.0.

    Albatross

    Модификация PBFT с двумя типами блоков: макро (финализация) и микро (содержит все транзакции). Следующий производитель блока выбирается псевдослучайно, используется VRF.

    Asynchronous BFT

    Увеличение пропускной способности в сравнении с традиционным PBFT. Обеспечивает равномерное распределение нагрузки и повышает устойчивость к враждебным атакам. Возможность запуска через анонимный коммуникационный слой Tor.

    Используют: HoneyBadgerBFT.

    HotStuff

    Когда сетевое взаимодействие достигает синхронности, HotStuff назначает лидера, который ведёт протокол к консенсусу на линейной скорости. Коммуникационный охват остаётся постоянным, несмотря на частые смены лидеров. Одно из решений репликации конечного автомата (State Machine Replication, SMR).

    Используют: LibraBFT, Cypherium, BFTree.

    BFTree

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

    bftree-алгоритм-консенсуса

    Используют: Celo.

    GRANDPA

    Финализация блоков происходит путём соглашения «GHOST-based Recursive ANcestor Deriving Prefix Agreement». Прежде оно было известно как SHAFT (SHared Ancestry Finality Tool), а изначально произошло от AfG (Al’s Finality Gadget).

    Если консенсус Накамото является вероятностным, то GRANDPA – детерминирован.

    Это непрерывный процесс производства блоков, где валидаторы постоянно оглядываются в прошлое (на блоки «предки») и всегда отдают предпочтение самому устойчивому «корню». Отсюда и было выбрано название игрой слов: GRANDPA в переводе также означает дедушка.

    grandpa-финализация-алгоритм

    Используют: Polkadot.

    Proof of Capacity/Space

    PoC (Proof of Capacity) или PoWeight (Proof of Weight)

    Тип алгоритмов консенсуса, где для вероятности обнаружения узлом следующего блока используется какое-то другое значение, нежели вычислительная мощность. Например, вместо объема стейка (как в PoS системах), Filecoin чаще вознаграждает участников, которые хранят в IPFS больше данных (Proof of Spacetime или Proof of Storage). 

    Для валидации ноды собираются в комитеты случайным образом и приоритет отдаётся узлам с наибольшим «весом».

    Используют: Algorand, Filecoin, Digital Ocean, Chia, Burstcoin, Spacemint.

    PoR (Proof of Retrievability)

    Доказательство возможности восстановления для файловых систем позволяет устройству убедить клиента (верификатора) в том, что целевой файл не повреждён и может быть полностью восстановлен в полном объеме. Алгоритм изложен в научной работе Университета Мэриленда по возможному использованию Биткоина для сохранения данных, и реализован в проекте Permacoin.

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

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

    Используют: Microsoft, Permacoin.

    PoH (Proof of History)

    Для доказательства события используется сравнение наследственности хешей, чтобы не зависеть от синхронизации с временными метками (timestamp).

    Например: мы уверены, что транзакция 1 была перед транзакцией 2, потому что из 1 мы можем произвести хеш 2. И транзакция 3 была после транзакции 2, потому что из 2 мы произведём хеш 3. Соответственно произвести 1 из 3 не получится, ведь хеширование – однонаправленный алгоритм.

    proof-of-history-poh-solana

    Используют: Solana.

    LCPoA (Limited Confidence Proof of Activity)

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

    Используют: IZZZ, Bitcoen.

    PoC (Proof of Care)

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

    Используют: Quantstamp, TomoCoin.

    PoRep (Proof of Replication)

    Доказательство, что узел обладает необходимым ресурсом для хранения данных, без убытков на репликацию.

    Также известно как PoR (Proof of Replica) или PoSt (Proof of Storage and Time).

    Алгоритм является смесью механизмов PoR (Proof of Retrievability) и PoS (Proof of Space). Но в отличие от многих Proof of Space, узел обязан предоставить доказательство не только того, что у него есть объём памяти для хранения информации, а также доказать, что он хранит её самым эффективным образом. Потребители в сети могут получать доход, проверяя и доказывая, что у узлов действительно хранятся эти данные.

    Важная особенность PoRep – дублированные данные не оплачиваются дважды. Учитываются только входные данные, и масштабирование их хранения не требует увеличения расходов.

    Используют: Filecoin.

    PoR (Proof of Resource)

    Оценивает ресурсы узлов: мощность процессора, пропускную способность, время выполнения и место на жёстком диске.

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

    Используют: Maidsafe (SAFE Network).

    PoP (Proof of Provenance)

    Протокол для отслеживания перемещения физических активов (например: золота) и публикации живых доказательств в блокчейн.

    Используют: Digix.

    PoV (Proof of View)

    Запатентованный протокол отслеживания натуральности просмотров на видеоплощадке.

    Награду создателям контента платят пользователи, а не только рекламодатели.

    Используют: Verasity.

    PoSign (Proof of Signature)

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

    Используют: XBY.

    PoL (Proof of Location)

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

    Используют: FOAM, XYO, Platin, Animist.

    PoE (Proof of Existence)

    Доказательство существования любого файла в определённый момент времени прошлого. Для этого файл хешируется, и этот хеш прикрепляется к транзакции в любом блокчейне (например – Bitcoin). В будущем в любое время можно вновь хешировать файл и убедиться, что файл с данным содержимым гарантированно существовал в день и минуту доказательства (верификации).

    Используют: Poex.io, HeroNode, DragonChain.

    PoB (Proof of Burn)

    Доказательство сжигания не требует расхода физических ресурсов. Валидаторы заменяют потраченные усилия бёрнингом части собственных монет.

    В PoW процессоры расходуют электроэнергию, и это является доказательством того, что им будет невыгодно или затруднительно жульничать. PoB делает то же самое, но в виртуальной форме: майнеры отправляют установленную сумму монет на адрес, к которому никто не сможет получить доступ, тем самым «сжигая» их. Взамен они получают награду, если удалось найти блок. Вероятность успеха напрямую зависит от сожжённой суммы, аналогично тому, сколько процессоров подключают майнеры в PoW системах.

    Сжигаться могут как собственные токены экосистемы, так и другие монеты с уже существующей стоимостью (пример: конвертация ценности BTC в Counterparty).

    Используют: Counterparty, Slimcoin, OpenBazaar, SATOZ.

    PoT (Proof of Time)

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

    Используют: ChronoLogic.

    PoD (Proof of Disintegration)

    Фундаментальные ноды – мастерноды. Они участвуют в валидации сети, но за своё участие они вначале должны внести сумму токенов, которая будет сожжена.

    Используют: b3coin.

    Hybrid

    PoA (Proof of Activity)

    Комбинация из последовательно применяемых алгоритмов PoW и PoS, усиливающая защиту от атаки 51%.

    Вначале происходит традиционный поиск блока путём вычислений, доказательством работы. Когда блок найден, очередь из валидаторов, владеющих крупной долей стейка, подтверждают (подписывают) найденный блок доказательством владения.

    Комиссия делится между удачливым майнером и валидаторами, что подписали действительный блок.

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

    Используют: Decred, Espers.

    PoR (Proof of Research)

    Механизм доказательства исследования сочетает в себе черты классического Proof of Stake, плюс Proof of BOINC. Berkeley Open Infrastructure for Network Computing – платформа для распределительных вычислений, что используется научными исследователями в различных областях, позволяя им использовать простаивающие вычислительные ресурсы компьютеров по всему миру.

    PoR использует Gridcoin. Эту криптовалюту может заработать любой, кто поделится своим ресурсом с BOINC. Независимые инвесторы тоже могут получать вознаграждение, размещая свои монеты в стейкинг.

    Исследователь устанавливает программное обеспечение BOINC и регистрирует проект из белого списка BOINC со своим адресом электронной почты. Исследователю присваивается уникальный проектный идентификатор (CPID), и он начинает загрузку рабочей доли. Как только вычисление завершено, исследователь возвращает результат с кредитной рекомендацией для выполненной рабочей нагрузки. Рекомендация сравнивается с рекомендацией другого исследователя, и присуждается минимальный балл. Эти кредитные данные рабочей нагрузки хранятся в заголовке каждого блока, и исследователь награждается соответствующей суммой Gridcoin. 

    В достижении консенсуса доминирует PoS, при этом Proof of BOINC действует как механизм вознаграждения за совместное использование неиспользуемых вычислительных ресурсов, доступных исследователям. Его безопасность аналогична безопасности традиционного PoS.

    Используют: Gridcoin.

    DAG

    DAG (Direct Acyclic Graph Tangle)

    Публикуя действие, нужно связать его с двумя предыдущими. Так они образуют граф. Когда блокчейн ещё мал, существует риск зловредного участника, который начнёт производить ⅓ транзакций и захватит консенсус (для защиты поначалу используется роль централизованного участника «координатора»). Высоконагруженные сети не рискуют стать жертвой спам атаки, поскольку в интернете вещей например используются реальные устройства, и затраты начинают превышать потенциальную выгоду.

    directed-acyclic-graph-dag

    Используют: Hashgraph, IOTA, Nano.

    Другие

    PoET (Proof of Elapsed Time)

    Hyperledger Sawtooth разработан Intel для создания распределенных реестров. Он использует Proof of Elapsed Time, который зависит от функционала Intel SGX (Software Guard Extension).

    Intel SGX – это новый тип доверенной среды выполнения (TEE), интегрированный в процессоры Intel нового поколения. SGX позволяет выполнять код в защищенном анклаве внутри процессора, достоверность которого может быть проверена с помощью процесса удалённой аттестации, поддерживаемого SGX.

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

    Используют: Hyperledger Sawtooth.

    PoB (Proof of Brain)

    Алгоритм консенсуса, вознаграждающий пользователей за социальную активность, создание контента. Доказательство мозга предусматривает максимальную награду участникам, чья информация больше всего просматривается и нравится пользователям.

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

    Для чеканки блоков избирается 21 активный свидетель путём голосования, и они перемешиваются в каждом раунде. Валидаторы могут проводить модерацию самостоятельно, либо исходя из объема запросов пользователей на удаление нежелательного контента. Блоки генерируются каждые 3 секунды.

    Используют: Steem.

    PII (Proof of Involvement and Integrity)

    Идея доказательства вовлечённости и добросовестности, в системе, где узлами выступают боты. Алгоритмы измеряют поведение ботов и стимулируют оптимальные пути к цели.

    Используют: NeuroChain.

    PoT (Proof of Trust)

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

    Используют: Astra Protocol.

    PoC (Proof of Contribution)

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

    MC (Mediated Consensus)

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

    Используют: PolySwarm.

    от Кошелёк