Перейти к основному контенту
Change page

Доказательство полномочий (PoA)

Доказательство полномочий (PoA) — это алгоритм консенсуса на основе репутации, который является модифицированной версией доказательства доли владения (PoS). В основном он используется частными цепями, тестовыми сетями и локальными сетями разработки. PoA — это алгоритм консенсуса на основе репутации, который требует доверия к набору авторизованных подписантов для создания блоков, в отличие от механизма на основе стейка в PoS.

Предварительные требования

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

Что такое доказательство полномочий (PoA)?

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

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

Существует несколько реализаций PoA, но стандартной реализацией для Эфириума является clique, которая реализует EIP-225 (opens in a new tab). Clique — это удобный для разработчиков и простой в реализации стандарт, поддерживающий все типы синхронизации клиентов. Другие реализации включают IBFT 2.0 (opens in a new tab) и Aura (opens in a new tab).

Как это работает

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

Репутация в этом контексте не является количественной величиной, а скорее представляет собой репутацию известных корпораций, таких как Майкрософт и Google. Следовательно, способ выбора доверенных подписантов не алгоритмический, а представляет собой обычный человеческий акт доверия. Например, если Майкрософт создает частную сеть PoA между сотнями или тысячами стартапов и берет на себя роль единственного доверенного подписанта с возможностью добавления других известных подписантов, таких как Google, в будущем, стартапы, без сомнения, будут доверять Майкрософт в том, что она всегда будет действовать честно, и будут использовать эту сеть. Это устраняет необходимость стейкать в различных небольших/частных сетях, созданных для разных целей, чтобы поддерживать их децентрализованными и функционирующими, а также устраняет потребность в майнерах, что потребляет много энергии и ресурсов. Некоторые частные сети используют стандарт PoA в чистом виде, например VeChain, а некоторые модифицируют его, например Binance, которая использует PoSA (opens in a new tab) — пользовательскую модифицированную версию PoA и PoS.

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

Может возникнуть ситуация, когда происходят небольшие форки; сложность блока зависит от того, был ли блок подписан в свою очередь или вне очереди. Блоки «в свою очередь» имеют сложность 2, а блоки «вне очереди» — сложность 1. В случае небольших форков цепь, в которой большинство подписантов запечатывают блоки «в свою очередь», накопит наибольшую сложность и победит.

Векторы атак

Злонамеренные подписанты

Злонамеренный пользователь может быть добавлен в список подписантов, или ключ подписания/машина могут быть скомпрометированы. В таком сценарии протокол должен быть способен защитить себя от реорганизаций и спама. Предлагаемое решение заключается в том, что при наличии списка из N авторизованных подписантов любой подписант может чеканить только 1 блок из каждых K. Это гарантирует, что ущерб будет ограничен, а остальные валидаторы смогут проголосовать за исключение злонамеренного пользователя.

Цензура

Другой интересный вектор атаки — если подписант (или группа подписантов) пытается подвергнуть цензуре блоки, которые голосуют за их удаление из списка авторизации. Чтобы обойти это, разрешенная частота чеканки для подписантов ограничена 1 из N/2. Это гарантирует, что злонамеренным подписантам необходимо контролировать не менее 51% аккаунтов для подписания, после чего они фактически станут новым источником истины для цепи.

Спам

Еще один небольшой вектор атаки — злонамеренные подписанты, внедряющие новые предложения для голосования в каждый блок, который они чеканят. Поскольку узлам необходимо подсчитывать все голоса для создания фактического списка авторизованных подписантов, они должны записывать все голоса с течением времени. Без ограничения окна голосования этот объем может расти медленно, но неограниченно. Решение состоит в том, чтобы установить скользящее окно из W блоков, после которого голоса считаются устаревшими. Разумным окном может быть 1-2 эпохи.

Параллельные блоки

В сети PoA, когда имеется N авторизованных подписантов, каждому подписанту разрешено чеканить 1 блок из K, что означает, что N-K+1 валидаторам разрешено чеканить в любой момент времени. Чтобы предотвратить гонку этих валидаторов за блоки, каждый подписант должен добавлять небольшое случайное «смещение» ко времени выпуска нового блока. Хотя этот процесс гарантирует, что небольшие форки происходят редко, случайные форки все же могут случаться, как и в Мейннете. Если обнаружится, что подписант злоупотребляет своей властью и вызывает хаос, другие подписанты могут проголосовать за его исключение.

Если, например, есть 10 авторизованных подписантов, и каждому подписанту разрешено создавать 1 блок из 6, то в любой момент времени 5 валидаторов могут создавать блоки. Чтобы предотвратить их гонку за создание блоков, каждый подписант добавляет небольшое случайное «смещение» ко времени выпуска нового блока. Это снижает вероятность возникновения небольших форков, но все же допускает случайные форки, как это видно в основной сети Ethereum. Если подписант злоупотребляет своими полномочиями и вызывает сбои, он может быть исключен из сети путем голосования.

Плюсы и минусы

ПлюсыМинусы
Масштабируется лучше, чем другие популярные механизмы, такие как PoS и PoW, поскольку он основан на ограниченном количестве подписантов блоковСети PoA обычно имеют относительно небольшое количество проверяющих узлов. Это делает сеть PoA более централизованной.
Блокчейны PoA невероятно дешевы в запуске и обслуживанииСтать авторизованным подписантом обычно недоступно для обычного человека, поскольку блокчейн требует участия организаций с устоявшейся репутацией.
Транзакции подтверждаются очень быстро, время может составлять менее 1 секунды, поскольку для проверки новых блоков требуется лишь ограниченное количество подписантовЗлонамеренные подписанты могут провести реорганизацию, двойную трату, цензурировать транзакции в сети; эти атаки смягчаются, но все еще возможны

Дополнительная литература

Лучше воспринимаете визуально?

Посмотрите визуальное объяснение доказательства полномочий:

Cryptoeconomics: proof of authority

A cryptoeconomics lecture explaining the proof-of-authority (PoA) consensus mechanism, covering how it works, its trade-offs compared to proof of work and proof of stake, and where it is used in practice.

Смотреть с расшифровкой