Стейкинг
В распределенном реестре данных, таком как блокчейн, механизм выполнения транзакции отличается от механизма обновления самого реестра и сохранения в нем результатов. Консенсус по проведению транзакций и результатов их выполнения должен быть достигнут кворумом валидаторов, прежде чем эти результаты будут сохранены, а реестр будет обновлен.
Любой может принять участие в процессе консенсуса Aptos, если сделает ставку достаточным количеством монет, поместив их на условное депонирование. Чтобы выработать механизм «поощрения» валидаторов к участию в процессе консенсуса и, соответственно, депонированию, вес голоса каждого валидатора в системе установлен как пропорциональный размещенной сумме. Также валидатор получает вознаграждение пропорционально этой сумме. Следовательно, производительность всего блокчейна соответствует интересам валидатора.
Примечание: на момент подготовки материала «слешинг» в системе не реализован. Дополнительные ресурсы и вспомогательная документация представлены здесь. Текущие данные по блокчейну можно найти в staking_config::StakingConfig. Набор конфигурации определяется в staking_config.move.
Стейкинг в блокчейне Aptos
Модель стейкинга в блокчейне Aptos определяет свойства предоставления «владения» в системе. Ресурс OwnerCapability можно использовать для управления пулом стейкинга. В целом в системе принимают участие:
-
Владелец,
-
Оператор,
-
Избиратель.
Используя модель «владелец-оператор-избиратель», кастодиальный агент может взять на себя роль владельца, сделать ставку в блокчейне Aptos и участвовать в управлении в системе. Эта модель позволяет создавать службы делегирования и стейкинга, ввиду отделения аккаунта, управляющего средствами, от других учетных записей (конкретно оператора, избирателя), что в итоге позволяет безопасно делегировать обязанности.
Ниже разберем, как это работает, на примере Боба и Алисы.
Владелец
«Владелец» — это участник, который является собственником денежных средств. Допустим, некий Боб создает аккаунт в блокчейне Aptos. Теперь у него есть ресурс OwnerCapability. Боб может назначить оператором своего аккаунта адрес учетной записи Алисы, оператора доверенной ноды, чтобы сделать ее «валидатором».
Как владелец:
-
Боб владеет средствами, которые будут использоваться для стейкинга.
-
Только Боб может добавлять, разблокировать или снимать средства.
-
Только Боб может продлить период блокировки.
-
Боб может изменить оператора узла Алису на любого другого оператора узла в любое время, когда он пожелает это сделать.
-
Боб может установить процент комиссии оператору.
-
Награда будет зачислена на счет Боба.
Оператор
Владелец денежных средств назначает оператора ноды (узла), а последний получает комиссию, установленную владельцем. Два участника — «владелец» и «оператор» — могут быть двумя независимыми или одинаковыми агентами. Например, оператор Алиса запускает узел валидатора, работающий по указанию Боба, владельца фонда.
Как оператор:
-
Алиса имеет права только на подключение и на выход из установок валидации.
-
В качестве «валидатора» Алиса будет выполнять функцию «проверки», то есть подтверждения (валидности).
-
Алиса имеет права на изменение ключа консенсуса и сетевых адресов. Ключ консенсуса используется Алисой для участия в процессе консенсуса валидатора, то есть для голосования и предложения блока. Алисе разрешено менять этот ключ в случае, если ключ скомпрометирован.
-
Алиса не может перемещать сами средства (если Алиса не является владельцем, то есть у нее есть ресурс OwnerCapability).
-
Комиссия оператора вычитается из вознаграждения стейкера (владельца) и зачисляется на счет оператора.
Избиратель
Владелец может установить избирателя. Это позволит избирателю участвовать в управлении. Избиратель будет использовать «ключ голосования» для подписи управленческих голосов в транзакциях.
В данном документе представлен раздел «Управление». Изучите его для того, чтобы понять, как участвовать в управлении сети Aptos, используя модель владельца-избирателя.
Подтверждения в блокчейне Aptos
Пока протекает эпоха, следующий поток событий происходит тысячи раз:
-
Лидер валидации определяется детерминированным образом по формуле, которая основана на репутации валидатора, определяемой его деятельностью (в том числе принимал ли валидатор участие в голосовании в прошлом или нет) и стейком. Отбор лидера происходит без применения голосования.
-
Выбранный лидер отправляет предложение, которое содержит собранные голоса кворума от предыдущего предложения и заявленный лидером порядок транзакций для нового блока.
-
Все валидаторы из группы валидаторов будут голосовать по поводу предложения лидера относительно нового блока. Если консенсус будет достигнут, блок может быть завершен. Таким образом, реальное количество голосов для достижения консенсуса представляет собой определенное количество валидаторов из группы валидаторов. Лидер валидации награждается. Награды предназначены только для него, но не для голосующих валидаторов.
-
Процесс, описанный выше повторяется для следующего блока, при этом меняется только лидер валидации. Награды выдаются в конце эпохи.
Состояние валидатора и состояние ставки
Состояние определяется как для валидатора, так и для ставки.
Состояние валидатора: валидатор может находиться в любом из этих четырех состояний. Более того, он может перейти из неактивного состояния (когда его нельзя отследить в группе валидаторов) в любое из трех других состояний:
-
неактивное;
-
ожидающее активации;
-
активное;
-
ожидающее деактивации.
Состояние ставки: у валидатора в активном или ожидающем активации состояниях ставка может находиться в одном из следующих четырех состояний:
-
неактивное;
-
ожидающее активации;
-
активное;
-
ожидающее деактивирования.
Эти состояния актуальны для группы валидаторов, которые добавляют или удаляют свои собственные ставки.
Состояния валидаторов
Есть два крайних случая, которые нужно учитывать:
-
Если ставка валидатора падает ниже необходимого минимума, то этот валидатор будет переведен из активного состояния в неактивное прямо во время смены эпохи. Это происходит только во время смены эпохи.
-
Управление Aptos может также напрямую переводить валидаторов из активного состояния. Следует отметить, что предложения управления («governance proposals») вызывают смены эпохи.
Состояние ставки
Состояние ставки более детализировано по сравнению с состоянием валидатора; дополнительная ставка может быть добавлена, а часть ставки активного валидатора снята.
Набор правил для валидатора
Приведенный ниже перечень применяется во время изменения состояния:
-
Сила голоса может меняться (увеличиваться или уменьшаться) только на границе эпох.
-
Консенсус-ключ валидатора и сетевые адреса валидатора и его полной ноды могут меняться только на границе эпох.
-
Ожидающая деактивации ставка не может быть переведена в неактивное состояние (и, следовательно, стать доступной для вывода) до тех пор, пока не истечет время блокировки.
-
Все валидаторы в группе активных валидаторов не могут иметь ставку меньше установленного размера.
Алгоритм действий валидатора
Ознакомьтесь с Staking pool operations, для правильной последовательности команд в ходе выполнения нижеприведенного алгоритма действий.
-
Владелец инициализирует пул ставок с помощью «aptos stake initialize-stake-owner».
-
Когда владелец готов внести ставку (или получить средства, в обмен на возможность владения), владелец вызывает «aptos Stake add-stake».
-
Когда нода валидатора готова, оператор может вызвать «aptos node join-validator-set», для присоединения к активной группе валидаторов. Изменения вступят в силу в следующую эпоху.
-
Валидатор проверяет (предлагает блоки в качестве лидера-валидатора) и получает вознаграждение. Ставка будет автоматически заблокирована на фиксированный срок и автоматически продлена по истечении срока действия.
-
В любой момент, если оператор хочет обновить консенсус ключ или сетевые адреса валидатора, он может вызвать «aptos node upd ate-consensus-key» или «aptos node upd ate-validator-network-address». Изменения ключа консенсуса или сетевых адресов также вступают в силу только в следующую эпоху.
-
Валидатор может запросить разблокировку своей доли в любое время. Однако его ставка станет доступна для снятия только после истечения срока текущей блокировки. Это может продолжаться вплоть до фиксированной продолжительности по времени для блокировки.
-
После выхода валидатор может либо покинуть группу валидаторов, вызвав «aptos node leave-validator-se t», либо, если их ставка упадет ниже требуемого минимума, они будут удалены в конце эпохи.
-
Валидатор всегда может присоединиться к группе валидаторов, повторно выполнив шаги 2-3.
-
Владелец всегда может сменить оператора, вызвав «aptos stake se t-operator».
-
Владелец всегда может сменить назначенного избирателя, вызвав «aptos stake set-delegated-voter».
Присоединение к группе валидаторов
Участие в качестве валидатора в сети Aptos работает следующим образом:
-
Оператор запускает «ноду валидатора», настраивает цепочку сетевых адресов валидатора и меняет консенсус-ключ.
-
Владелец вносит свои монеты Aptos в качестве ставки или имеет средства, делегированные стейкинговым сервисом. Ставка должна соответствовать минимально установленной сумме.
-
Нода валидатора не может быть синхронизирована, до того момента пока стейкинговый пул не станет активным.
-
Оператор подтверждает и получает награды.
-
Стейкинговый пул будет автоматически заблокирован на фиксированное время, которое устанавливается управлением Aptos, и будет автоматически обновлен после его истечения. Вы не сможете снять какую-то часть своей ставки до тех пор, пока не истечет время блокировки. Подробнее смотрите здесь.
-
Оператору придется ждать начала новой эпохи, только после этого валидатор станет активным.
Пошаговую инструкцию как присоединиться к группе валидаторов вы можете найти по ссылке.
Минимальная и максимальная ставка
Чтобы присоединиться к группе валидаторов, ваша ставка должна быть не меньше установленного минимума. Более того, верхний порог вхождения также ограничен. Текущий установленный минимум для стейкинга составляет 1 млн токенов APT.
Если в любой момент времени после присоединения к группе валидаторов ваша ставка превысит максимально допустимое значение (например, из-за наград, которые будут добавлены к вашей ставке), то сила вашего голоса и награды будут высчитываться только с использованием максимально допустимого размера ставки, а не того количества монет, которое находится у вас на руках.
Владельцы могут снять часть ставки и оставить свой баланс ниже требуемого минимума. В этом случае, их стейкинговый пул будет удален из группы валидаторов во время начала новой эпохи.
Длительность автоматической блокировки
Когда вы присоединяетесь к группе валидаторов, ваша ставка будет автоматически заблокирована на определенное время, которое устанавливается управлением Aptos.
Обновление автоматической блокировки
Когда период вашей блокировки истекает, он будет автоматически продлен, чтобы вы смогли продолжить подтверждать транзакции и получать награды.
Разблокировка ставки
Вы можете сделать запрос на разблокировку вашей ставки в любое время. Тем не менее, вашу ставку можно будет снять, только когда время текущей блокировки истечет. Самая большая продолжительность блокировки является фиксированной. Вы будете продолжать получать награды до тех пор, пока вашу ставку нельзя будет снять.
Основная сумма обновляется при выполнении любого из следующих действий:
-
Оператор запрашивает разблокировку комиссий.
-
Стейкер (владелец) снимает свои средства.
-
Стейкер (владелец) меняет операторов.
Когда стейкер разблокирует ставку, это также приведет к разблокировке комиссий. Полная комиссия для любых заработанных наград разблокируется. Она не пропорциональна разблокированной ставке. Комиссия распределяется оператору после окончания блокировки, когда происходит второй запрос комиссии или когда стейкер выводит (распределяет) разблокированную ставку.
Переустановка блокировки
Когда период блокировки истекает, он автоматически обновляется сетью. Однако, владелец может ее переустановить напрямую самостоятельно.
Время блокировки устанавливается управлением Aptos, то есть соглашениями, по поводу которых голосуют члены сообщества Aptos, а не специальные структуры вроде Aptos Labs.
Эпоха
Эпоха в блокчейне Aptos определяется как время, выраженное в секундах, в течение которого валидаторы голосуют за определенное количество блоков, группа валидаторов обновляется и награды распределяются между валидаторами. Эпоха в главной сети Aptos установлена в 7 200 секунд (два часа).
Триггеры в начале эпохи
В начале каждой эпохи запускаются следующие ключевые события:
-
Обновление группы валидаторов путем добавления ожидающих активации валидаторов в пул активных валидаторов и исключения ожидающих деактивации валидаторов из пула активных валидаторов.
-
Перемещение всех ожидающих активации ставок в активные, а всех ожидающих деактивации — в неактивные.
-
Количество голосов стейкингового пула в эту эпоху обновляется до размера общей активной ставки.
-
Автоматическое обновление блокировки валидаторов для тех, кто и в новую эпоху останется в группе валидаторов.
-
Сила голоса каждого отдельного валидатора в группе обновляется, чтобы соответствовать общему количеству голосов в пуле.
-
Награды распределяются между валидаторами, которые принимали участие в предыдущей эпохе.
Посмотреть подробнее о триггерах в новых эпохах можно в stake.move.
Награды
Награды за стейкинг рассчитываются с использованием:
-
Ставки по наградам, годовой процентной доходности (APY). То есть, награды начисляются в виде сложного процента на вашу текущую ставку.
-
Количества заблокированных вами для стейкинга монет.
-
Вашей производительности предложения в управлении Aptos.
Ставка по наградам устанавливается управлением Aptos. Также вы можете посмотреть раздел о валидации в Aptos.
Формула вознаграждения
Внизу представлена формула, которая используется для подсчета наград для валидаторов:
Награда = ваша ставка * ставка по награде для конкретной эпохи * (количество успешных предложений валидатора/общее количество предложений, сделанных валидатором).
Награды, выплачиваемые каждую эпоху
Награды платятся в каждую эпоху. Каждая награда, которую вы (то есть валидатор) зарабатывает в конце текущей эпохи добавляется к вашей ставке. Награда по окончанию следующей эпохи рассчитывается на базе вашей увеличенной ставки (то есть первоначальная ставка плюс награда от предыдущей эпохи) и так далее.
Награды, основанные на производительности предложения
Расчет наград для валидаторов использует их производительность предложения. Единожды попадая в группу валидаторов, вы можете осуществлять предложения в любую эпоху. Чем успешнее ваши предложения, то есть чем больше их количество пройдет, тем большую награду вы получите.
Помните, что награды предназначаются только для лидера валидаторов, то есть для валидатора, который предлагает новый блок, а не для тех валидаторов, которые будут голосовать по поводу предложения лидера.
Все награды валидаторов подлежат временной блокировке, так как они добавляются к изначальным ставкам.
Выход из группы валидаторов
В любой момент времени вы можете вызвать следующую последовательность функций, чтобы покинуть группу валидаторов:
-
Вызовите Stake:unlock, для разблокировки вашей ставки,
-
Вызовете Stake:withdraw, чтобы снять вашу ставку в следующую эпоху, либо вызовете Stake:leave_validator_set, чтобы покинуть пул валидаторов.
Подробнее о модуле стейкинга в Aptos на языке Move можно ознакомиться по ссылке.
Повторное присоединение к пулу валидаторов
Когда вы покидаете пул валидаторов, вы можете к нему присоединиться еще раз, сделав ставку, соответствующую минимальным требованиям.
Сопутствующая документация
-
текущие данные сети;
-
операции стейкингового пула;
-
операции делегированного пула;
-
файл конфигурации;
-
файл staking_contract.move;
- прочие связанные со стейкингом файлы.