Аннотация
Несколько недель назад мы запустили собственный узел-валидатор в блокчейне Ethereum на основе алгоритма Proof of Stake (PoS), и эта статья — наш первый подробный обзор системы PoS, в котором мы рассматриваем и классифицируем все виды вознаграждений и штрафов, которые могут получить валидаторы. Мы приводим примеры различных сценариев из реальной жизни и комментируем взаимосвязь между некоторыми вознаграждениями и количеством монет Ethereum. В заключение мы объясняем, что системы PoS отличаются эволюционной структурой и что многие сложные параметры и константы, рассматриваемые в этой статье, с течением времени обязательно будут оптимизированы, так как разработчики учатся, наблюдая за функционированием сети.
Обзор
Еще в мае 2020 года мы представили обзор механики и основных процессов в предложенной Ethereum системе PoS. Мы объяснили, как проводится голосование за предложенные блоки в комитетах валидаторов. Мы также объяснили такие понятия, как целевой блок, исходный блок, подтверждение (валидация), финализация и условия слэшинга. В этом материале мы более подробно расскажем о механизмах поощрения и наказания валидаторов за хорошее или плохое поведение. Мы постараемся рассмотреть все основные виды вознаграждений и штрафов и приведем примеры расчетов для каждого типа сценария.
Это первая из запланированной серии статей о системе PoS, после того как 31 августа 2021 года мы приняли решение стать валидатором. Напоминаем, что Ethereum 2.0 («сигнальная» цепь или Beacon Chain) в настоящее время работает параллельно с Ethereum 1.0. Сегодня система Beacon Chain работает на основе алгоритма доказательства концепции (Proof of Concept, PoC). Планируется, что в конечном итоге обе цепочки будут объединены, а старая система на основе алгоритма Proof of Work (PoW) будет отключена.
Вознаграждения
В таблице ниже указаны основные вознаграждения для валидаторов в сети Ethereum 2.0. Далее мы подробно рассмотрим каждое из них.
Рисунок 1. Сводная таблица вознаграждений
Событие | Типичный размер вознаграждения для 1 валидатора за 1 событие (исходя из текущих рыночных условий) |
Предложение блока | 0,005 ETH |
Правильная аттестация | 0,00002 ETH |
Быстрая аттестация | 0,000005 ETH |
Сообщение о нарушениях | 0,0625 ETH |
Вознаграждение за предложение блока
Kак мы уже писали в предыдущей статье на эту тему, 31 августа 2021 года валидатор BitMEX Research предложил свой первый блок в слоте 1 964 794. Каждому валидатору случайным образом выделяется слот, в котором он имеет право предложить блок. Ожидается, что это будет происходить примерно раз в месяц. Через две эпохи после генерации блока (когда слот был окончательно подтвержден или финализирован) наш узел-валидатор получил вознаграждение в размере 0,0052 ETH. Вознаграждение за создание блока — это, пожалуй, самый главный стимул в системе PoS, поэтому именно его мы рассмотрим в первую очередь. Размер этого вознаграждения не фиксирован, а зависит от нескольких факторов, а именно от общего количества Ethereum, участвующих в стейкинге, и количества активных валидаторов.
Первый компонент в уравнении, который нужно рассчитать, называется «базовое вознаграждение». Эта величина остается неизменной в масштабе всей сети в любой конкретный момент времени. Базовое вознаграждение можно рассчитать по приведенной ниже формуле.
Константы 4 и 64 — значения, установленные протоколом. 64 — это BASE_REWARD_FACTOR , а 4 — BASE_REWARDS_PER_EPOCH. Мы не сокращаем эти два числа в формуле выше, чтобы получить 16, так как эти константы также используются в других элементах протокола.
Общий активный баланс в сети в настоящее время составляет около 7,1 млн ETH, а эффективный баланс — это средний баланс каждого валидатора. Это среднее число обычно составляет около 32 ETH. Оно не может превышать 32 ETH, так как ограничено этим уровнем, и вряд ли может быть намного меньше 32 ETH, так как минимальный начальный баланс для участия в стейкинге составляет 32 ETH. Но средний эффективный баланс может быть незначительно меньше 32 ETH, если некоторые валидаторы были наказаны за нарушение правил или недобросовестное поведение, и размер штрафа превысил размер вознаграждения. Для простоты в приведенных ниже расчетах мы использовали значение 32.
Подставив эти числа в формулу и использовав актуальные данные сети, получаем следующее базовое вознаграждение:
Теперь, когда мы знаем базовое вознаграждение, можно рассчитать вознаграждение для каждого валидатора, предложившего блок, по формуле ниже. Число 8 в формуле — это еще одна константа из протокола, известная как PROPOSER_REWARD_QUOTIENT. Число аттестаторов — это количество аттестаций валидаторов, включенных в предлагаемый блок; это стимулирует создателей блоков включать голосование в свои блоки. По-другому это можно представить так: валидаторы, предлагающие блоки, получают часть вознаграждения за все аттестации в блоке, который они создали. При 100% участии эта величина должна составлять 1 к 32 всех валидаторов, голосующих по каждому блоку.
Используя формулу выше, получаем следующий размер вознаграждения каждому валидатору, предложившему блок.
Таким образом, получаем 0,0053 ETH, что близко к 0,0052 ETН в реальной сети. Пример показан на изображении ниже. Валидатор предложил блок и через две эпохи получил вознаграждение в размере примерно 0,005 ETH.
Рисунок 2. Вознаграждение валидатора за предложение блока
Источник: beaconcha.in
Интерпретация формулы
Чтобы лучше понять принцип вознаграждения, объединим две приведенные выше формулы для расчета вознаграждения на каждого создателя блока.
В большинстве случаев количество аттестаторов будет расти вместе с общим активным балансом, так что в некотором смысле эти две величины перекрывают друг друга. Но в формуле используется корень квадратный величины общего активного баланса. Поэтому по мере того, как все больше Ethereum переходит в Beacon Chain и участвует в процессе валидации, вознаграждение на одного создателя блока возрастает, но всё меньшими темпами. Это происходит потому, что количество создателей блоков в пределах одной эпохи не может превышать 32, поэтому размер вознаграждения может увеличиваться по мере увеличения общей суммы стейка, но это не приводит к увеличению эмиссии Ethereum. Это отличает вознаграждение валидаторов от других видов вознаграждения, например, вознаграждения аттестаторов, которое уменьшается в расчете на одного аттестатора по мере увеличения общей суммы монет в сети (подробнее на этом мы остановимся чуть позже). Так достигается одна из целей Beacon Chain — инфляция примерно пропорциональна квадратному корню суммы количества монет в сети.
Вознаграждение аттестаторов
Далее мы рассмотрим вознаграждение для аттестаторов. Аттестация — это процесс голосования за предложения создателей блоков.
Запись аттестации состоит из следующих элементов:
- Хеш блока, за который вы голосуете.
- Уровень блока, за который вы голосуете (т.е. конечный блок на момент голосования).
- Исходный блок: обычно хэш первого блока в предыдущей эпохе.
- Целевой блок: обычно хэш первого блока в текущей эпохе.
Вознаграждение за выполненную по правилам и без проблем аттестацию рассчитывается следующим образом:
Обратите внимание, что формула выше упрощена. На самом деле существует три категории правильной аттестации, и вознаграждение за каждую из них одинаково. Мы объединили их и умножили на три, вместо того чтобы рассматривать каждый сценарий по отдельности. Как и в случае с вознаграждением за предложение блока, выплата обычно поступает на счет через две эпохи после события (т.е. аттестации).
Выполнив расчет по этой формуле с базовым вознаграждением 6 064 Gwei (при условии 100% участия аттестаторов), получаем вознаграждение в размере 23 498 Gwei для каждого аттестатора. Это примерно 0,00002 ETH, т.е. соответствует размеру вознаграждения в сети и примерно в 225 раз меньше, чем вознаграждение, которое получает валидатор за предложение блока. При этом суммарное вознаграждение аттестаторов примерно в 32 раза больше, чем суммарное вознаграждение валидаторов, предложивших блоки.
На рисунке 3 показан пример правильной аттестации. В слоте 1 972 825 узел-валидатор BitMEX Research аттестовал блок 1 972 824 (предыдущий блок) и получил вознаграждение в размере 22,469 Gwei за идеальную аттестацию, что довольно близко к рассчитанному выше значению.
Рисунок 3. Правильная аттестация
Данные этой аттестации можно посмотреть на сайте beaconcha.in (см. ниже):
Рисунок 4. Пример правильной аттестации
Source: https://mainnet.beaconcha.in/block/1972825#attestations
Как упоминалось выше и как показано на рисунке 3, при оценке аттестации и расчете вознаграждения аттестатора необходимо учитывать три критерия:
- Голосование за правильный исходный блок
- Голосование за правильный целевой блок
- Голосование за правильный головной блок (конец цепочки).
Ниже показан пример неудачной аттестации, когда не удалось правильно указать все три характеристики. На уровне блока 1 972 769 валидатор BitMEX Research аттестовал блок 1 972 768 (предыдущий блок). Однако два из трех критериев не были выполнены, и мы получили два штрафа и одно вознаграждение. Как следствие, чистая сумма убытка (т.е. штрафа) составила 813 Gwei.
Рисунок 5. Частично неправильная аттестация
Данные этой аттестации можно посмотреть на сайте beaconcha.in (см. ниже):
Рисунок 6. Пример частично неправильной аттестации
Источник: https://mainnet.beaconcha.in/block/1972769#attestations
Наш валидатор указывал целевой блок и головной блок в качестве предыдущего, а не конечного блока. В большинстве случаев именно поэтому мы получали штраф. Наш узел допустил эту ошибку несколько раз. По-видимому, это ошибка связана с тем, что на момент аттестации наш узел не успел получить, загрузить и верифицировать последний блок. Поэтому узел голосовал так, как будто создатель самого последнего блока пропустил свой слот, и использовал вместо него предыдущий блок. Эта ошибка вызвана задержкой передачи данных в сети, но она считается незначительной и распространенной, поэтому штраф был небольшим.
Стимулирование быстрого голосования
Также в сети предусмотрено дополнительное поощрение в размере не более 7/8 от суммы базового вознаграждения. Этот стимул предназначен для ускорения голосования; его величина уменьшается по мере увеличения задержки в голосовании. Если аттестация включена в следующий слот, аттестатор получает вознаграждение в полном объеме, т.е. семь восьмых от базового вознаграждения. С каждым блоком задержки голосования стимул уменьшается. Так, если аттестация происходит на два блока позже, вознаграждение уменьшается вдвое, если на три блока позже — в три раза и т.д. Узел-валидатор BitMEX Research всегда голосовал своевременно, в следующем слоте. Но мы нашли примеры позднего голосования других валидаторов, например, 38 570. Как показано на снимке экрана ниже, аттестация блока 2 018 822 была включена в блок 2 018 826, т.е. задержка составляет три блока. Из-за временной задержки общая сумма выплаченного вознаграждения составила не 22 000 Gwei, а всего 18 990 Gwei.
Рисунок 7. Аттестация с задержкой
Источник: https://mainnet.beaconcha.in/validator/38570#attestations
Совокупный размер вознаграждения и эмиссия монет
Этот анализ позволяет оценить, сколько монет Ethereum было выпущено для выплаты этих вознаграждений. Это показано на рисунке 8. Как видно на графике, большая часть новой эмиссии уходит аттестаторам, при этом создатели блоков получают примерно в 32 раза меньше. График также показывает сложность эмиссии Ethereum; если вы хотите получить полное представление о количестве монет Ethereum, вам нужно разобраться в многочисленных тонкостях системы PoS.
Рисунок 8 – Ежегодная эмиссия Ethereum в зависимости от стейкинга (в идеальных сетевых условиях)
Источник: BitMEX Research
Сумма всех описанных выше видов вознаграждений приблизительно соответствует максимальной годовой эмиссии Ethereum, связанной с системой PoS, о чем писал Виталик Бутерин в своем комментарии на GitHub в апреле 2019 года. На приведенном выше графике компоненты инфляции Ethereum по сути разбиты на три вида вознаграждений. Помимо вознаграждений, существуют также штрафы (в том числе в результате слэшинга), которые уменьшают эмиссию нового Ethereum. На количество монет в системе (т.е. предложения) также влияет отсутствие активности. Поэтому показанную выше эмиссию следует рассматривать как максимальную.
Еще раз напоминаем: инфляция нового Ethereum зависит от трех ключевых факторов:
- Эмиссия в рамках PoW для Ethereum 1.0, что приводит к новой эмиссии.
- Сжигание монет в Ethereum 1.0 в результате обновления EIP-1599, что приводит к сокращению предложения монет (или их «выкупу»).
- Вознаграждения и штрафы в системе стейкинга Ethereum 2.0, что приводит к новой эмиссии.
В ближайшие годы планируется глобальное изменение всех трех перечисленных выше факторов или компонентов инфляции. Первый компонент (эмиссия, связанная с PoW) будет исключен. Ожидается, что к тому времени эмиссия Ethereum значительно уменьшится, а размер сжигаемой комиссии может даже превысить размер вознаграждения за стейкинг. Если предположить, что объемы выплаты комиссии будут оставаться такими же высокими, то, скорее всего, после этого предложение монет может сократиться. Если рассматривать «эфир» как деньги, это приведет к дефляции, а если как ценную бумагу (акцию), то к сокращению количества акций.
Штрафы
Штрафы за бездействие и неправильную аттестацию
Существует два вида штрафов. Первый — это штрафы за неправильную аттестацию, т.е. аттестацию, в которой допущена ошибка в одном из трех ключевых элементов (как описано выше в разделе о голосовании аттестаторов). Второй — это штрафы за бездействие валидатора. Неаттестация считается таким же нарушением, как неправильная аттестация: штраф составляет 3x от базового вознаграждения. Это точно такой же штраф, как за полностью неправильную аттестацию (при условии, что не происходит слэшинг).
Чтобы проверить, как списываются штрафы за бездействие, мы намеренно отключили наш узел валидатора на одну эпоху. Валидатор BitMEX Research специально пропустил аттестацию в эпоху 63 657. Как показано на изображении ниже, это нарушение было наказано штрафом в размере 17 841 Gwei. Это стандартный штраф за неправильную аттестацию по всем трем характеристикам (т.е. в три раза больше базового вознаграждения).
Рисунок 9. Штраф за бездействие
Существуют также штрафы за бездействие в масштабе всей сети: если вся сеть не может завершить блок за 4 эпохи, то все валидаторы получают штраф.
Слэшинг
Слэшинг отличается от штрафов тем, что это наказание за гораздо более серьезное нарушение правил, и поэтому оно гораздо более строгое. В системе предусмотрены условия слэшинга для двух типов субъектов стейкинга: i. создателей блоков и ii. аттестаторов.
В отношении создателей блоков условия слэшинга достаточно просты: если создатель блока предлагает два разных действительных блока в одном слоте, он подвергается слэшингу. Пример показан ниже на рисунке 10.
Рисунок 10. Пример слэшинга создателя блоков: производство двух блоков в одном слоте
Источник: https://beaconcha.in/block/476904#proposer-slashings
На рисунке 10 создатель блоков предложил два конфликтующих головных блока в слоте 476,903. Неизвестно, чем вызвана эта ошибка. Это мог быть злой умысел, ошибка программного обеспечения или сбой компьютера и его последующая перезагрузка в неудачный момент.
В отношении аттестаторов условия слэшинга более сложные. Существует две категории нарушений, которые наказываются слэшингом: i. двойное голосование и ii. окружное (кольцевое) голосование.
Двойное голосование — второе голосование в одну целевую эпоху. Это явление можно объяснить с помощью следующей формулы.
data_1 != data_2 and data_1.target.epoch == data_2.target.epoch
Источник: https://github.com/ethereum/eth2.0-specs/blob/dev/specs/phase0/beacon-chain.md#slash_validator
На рисунке 11 показан пример двойного голосования. Валидатор 45 276 отдал два противоречащих друг другу голоса, за разные конечные блоки, используя одни и те же исходный и целевой блоки.
Рисунок 11. Пример слэшинга аттестатора: голосование за два блока в одном слоте
Источник: https://beaconcha.in/block/2029833#attester-slashings
Условия слэшинга за окружное голосование мы объяснили в материале об Ethereum 2.0, опубликованном в мае 2020 года. Мы не смогли найти пример этого нарушения в Beacon Chain, и, насколько нам известно, подобных нарушений никогда не было.
Штрафы за слэшинг
Штрафы за слэшинг одинаковы независимо от типа нарушения. В системе предусмотрено четыре способа наказать нарушителя.
- Валидатор удаляется из выборки валидации. Этот процесс может занять 36 дней. После удаления валидатор становится неактивным; его баланс просто «замораживается» на счете, с ним ничего нельзя сделать. Валидатор также не может получить никакое вознаграждение. Возможно, когда в Ethereum 2.0 появятся новые функции, «замороженные» средства могут снова стать доступными.
- Нарушитель платит начальный штраф в размере 1/128 от суммы своего реального баланса — обычно это около 0,25 ETH. Этот штраф списывается сразу после выявления нарушения.
- Нарушитель платит повторяющийся штраф за каждую эпоху в размере 3 * базовое вознаграждение — это сумма вознаграждения, которое валидатор может получить за правильную аттестацию, с той только разницей, что это штраф, а не вознаграждение (т.е. это наказание аналогично штрафу за бездействие). Этот штраф списывается до тех пор, пока валидатор не будет удален из выборки валидации.
- «Особый штраф» — величина этого штрафа зависит от количества валидаторов, совершивших нарушение, которое наказывается слэшингом, в течение одной эпохи. Чем больше валидаторов подвергаются слэшингу, тем серьезнее штраф для каждого валидатора. Эта мера призвана стимулировать децентрализацию, т.к. чем больше валидаторов нарушают правила, тем выше штраф. Это мотивирует валидаторов использовать различное оборудование или работать в разных компьютерных сетях.
На рисунке 12 ниже показан ежедневный доход валидатора, подвергшегося слэшингу. До совершения нарушения валидатор каждую эпоху зарабатывает 3-кратное базовое вознаграждение. После совершения правонарушения валидатор платит большой первоначальный штраф, а затем платит повторяющийся штраф в размере 3-кратного базового вознаграждения каждую эпоху. В конце концов через 36 дней валидатор становится неактивным, и штрафы прекращаются.
Рисунок 12. Штрафы для валидаторов в случае слэшинга
Вознаграждение для изобличителей
Если создатель блока включает в блок особый тип аттестации — аттестацию, которая доказывает, что другой валидатор нарушил правило, в частности, совершил нарушение, которое наказывается слэшингом, то создатель блока получает дополнительное особое вознаграждение. Это вознаграждение называется вознаграждением изобличителя и рассчитывается путем деления эффективного баланса нарушителя на 512. Обычно это дает вознаграждение в размере 0,06 ETH. Это не ведет к инфляции, так как нарушитель будет оштрафован как минимум на 0,25 ETH. Таким образом, «слэшеры» способствуют дефляции и уменьшают предложение монет.
На рисунке 13 ниже показан ежедневный доход валидатора, получившего вознаграждение за изобличение. Как видно на диаграмме, доход валидатора за создание блока превысил 0,07 ETH, так как в него было включено вознаграждение изобличителя.
Рисунок 13. Вознаграждение изобличителя
Источник: https://beaconcha.in/validator/204685
Заключение
Если вы дочитали эту статью до конца, вы могли сделать два основных вывода: i. В системе слишком много лишней сложности и ii. Как узнать, будет ли все это работать? Главная проблема здесь — понять философию создателей системы PoS, а это преимущественно эволюционная философия. За последние годы мы видели множество реализаций систем PoS, большинство из которых были очень слабыми и фундаментально несовершенными. Но разработчики учились на своих и чужих ошибках, и со временем системы становились все совершеннее и совершеннее. Когда Сатоши запускал блокчейн биткоина, все было совсем иначе. Базовая система консенсуса биткоина достаточно проста, она никогда не менялась и практически незыблема. Похоже, большинство сторонников PoS не стремятся найти совершенную систему PoS, которая будет оставаться надежной на протяжении десятилетий, — им нужна эффективная система, которую можно непрерывно модернизировать и совершенствовать.
Насколько нам известно, разработчики планируют изменить некоторые константы и параметры в формулах расчета вознаграждения и штрафов, которые рассматриваются в этой статье. Так, вознаграждение изобличителя планируется разделить на части: 7/8 будет получать аттестатор, обнаруживший нарушение, а 1/8 — создатель блока, включивший эту аттестацию в свой блок. В настоящее время все вознаграждение (8/8) в полном объеме получает создатель блока. Также обсуждаются более значительные изменения, такие как увеличение части вознаграждения, которую получают создатели блоков (по сравнению с аттестаторами). В настоящее время аттестаторы в совокупности получают примерно в 32 раза больше, чем создатели блоков, и многие хотят снизить это соотношение до 8 раз в дальнейших обновлениях. По мере развития сеть будет совершенствоваться. Возможно, стейкинговые системы никогда не достигнут окончательного состояния, и некоторые их параметры будут всегда требовать доработки.
Поэтому не следует рассматривать описанную выше систему PoS как окончательный вариант — это всего лишь экспериментальная версия, которая может измениться. Мы по-прежнему скептически относимся к системам PoS, но не можем игнорировать или скрывать тот факт, что их реализация значительно улучшилась со временем. Мы сомневаемся, что вознаграждения и штрафы, описанные в этом отчете, станут надежным фундаментом для построения цензуроустойчивой «неубиваемой» сети, но уверены, что в ближайшие годы эта система будет улучшена.