Эта статья представляет Conflux PoS Finality без технических подробностей. Она создана для того, чтобы помочь читателям понять PoS в целом и упростить понимание технических документов.
PoW сети особенно подвержены атакам 51%, когда хэшрейт их сети невелик (например, если сеть была запущена совсем недавно). Это стало еще более серьезной проблемой, когда наряду с разитием публичных блокчейнов появились платформы аренды хэш-мощности. В недавнем прошлом сети ETC, Grin и Verge столкнулись с атаками 51%.
Чтобы предотвратить потенциальные атаки 51%, Conflux Network внедряет независимый PoS блокчейн. Участники консенсуса PoS будут через равные промежутки времени подписывать опорный блок древовидного графа. Опорный блок с достаточным количеством подписей включается в основную цепочку всеми майнерами PoW, даже если другой блок имеет больший вес. Проще говоря, когда PoS сеть генерирует опорный блок, все майнеры PoW должны подтвердить его. Это означает, что когда консенсус PoS голосует за опорный блок, даже если злоумышленник с использованием атаки 51% попытается изменить этот блок, PoW нода не примет его.
Сеть Conflux использует консенсус PoS только для генерации опорных блоков. Блок в течение определенного периода времени проходит подтверждение в соответствии с консенсусом PoW, после чего доверенная PoS нода подписывает его. Это означает, что майнеры PoW продолжат осуществлять упорядочение и подтверждение блоков древовидного графа.
PoS сеть в Conflux нужна только для предотвращения потенциальных атак 51% и повышения безопасности сети. Следовательно, за исключением базовых функций, таких как голосование за опорный блок и выбор ноды консенсуса, PoS сеть не содержит других общих функций блокчейна (например, отправки транзакций, выполнения смарт-контрактов).
Весь функционал POS сети встроен в ноды Conflux. Программное обеспечение ноды по-прежнему будет представлять из себя единую программу: conflux-rust.
Следующая инструкция прояснит основную концепцию PoS Finality. В этом документе сеть Conflux означает текущую PoW сеть.
В минуту генерируется примерно 1 PoS блок. Все временные интервалы и величины, указанные ниже, привязаны к определенному количеству блоков.
PoS аккаунт:
Адрес
В общем, модель учетной записи в сети такова: закрытый ключ генерирует открытый ключ; открытый ключ генерирует адрес кошелька. Модель учетной записи в PoS сети аналогична модели в PoW сети. Однако, в PoS сети есть два закрытых ключа, закрытый ключ BLS и закрытый ключ VRF, а не один. Адрес генерируется посредством двух хеширований алгоритмом keccak-hash с открытым ключом (с 256-битным выходом).
Кошелек
Основная обязанность учетной записи POS заключается в поддержании работоспособности протокола консенсуса Conflux. Каждая учетная запись PoS должна управлять отдельной полной нодой сети Conflux. Таким образом, основной код Conflux описывает следующую функциональность кошелька для учетных записей POS:
- При первом запуске ноды сети Conflux, если в конфигурации указан режим работы в виде учетной записи PoS, закрытый ключ PoS будет автоматически сгенерирован и потребует от пользователя установки пароля. Закрытый ключ будет зашифрован паролем и сохранен как локальный файл.
- При перезагрузке ноды сети Conflux и обнаружении зашифрованного файла закрытого ключа пользователям потребуется ввести пароль для расшифровки файла закрытого ключа.
- Транзакции автоматически обрабатываются в соответствии с консенсусным протоколом PoS во время работы ноды, без вмешательства пользователя.
Как принять участие в PoS
После создания учетной записи PoS она может стать нодой PoS консенсуса только путем привязки к PoW аккаунту и прохождения регистрации.
- staking: ничем не отличается от текущего механизма стекинга.
- Регистрация: производится с использованием специального внутреннего контакта в сети Conflux; Необходимо представить соответствующую информацию, генерируемую полной нодой; необходимо заблокировать определенное количество застейканых токенов CFX, один голос за 1000 заблокированных CFX.
После завершения регистрации учетная запись PoW и учетная запись PoS жестко привязываются друг к другу “один к одному”. Учетная запись PoS не может сменить привязанную к не учетную запись PoW. Учетная запись PoW не может быть привязана к другой учетной записи PoS до тех пор, пока не будет удалена существующая привязка.
Участие в PoS майнинге
Получение голосов
Учетные записи POS получают голоса путем блокировки CFX.
- Когда учетная запись PoS зарегистрирована, conflux-rust автоматически обрабатывает регистрационную информацию и выполняет соответствующие операции. Никаких дополнительных действий от пользователя не требуется.
- Синхронизация регистрационных данных из основной сети Conflux в сеть PoS занимает около 10 минут. После завершения синхронизации учетные записи PoS могут участвовать в консенсусе PoS.
- Пользователи могут стейкать больше токенов CFX в сети Conflux, чтобы увеличить количество доступных им PoS голосов.
Отзыв голосов (разблокировка активов участвовавших в голосовании)
Учетная запись PoS может отозвать полученные ей голоса и разблокировать свои токены CFX.
- Учетные записи PoW могут полностью или частично уменьшать количество голосов связанной учетной записи PoS посредством взаимодействия с встроенным контрактом. Этот процесс называется «выход» (в коде определен как “retire”).
- Пользователи могут подать заявку на разблокировку в любое время. Как только будет запрошена разблокировка, соответствующие права голоса немедленно станут недействительными. Однако токены будут разблокированы только при соблюдении следующих условий:
- токены на момент подачи запроса на разблокировку были заблокированы в течении не менее 14 дней
- с момента подачи запроса на разблокировку прошло 7 дней
- Если пользователь блокировал токены частями, то при запросе на разблокировку токены будут разблокироваться в хронологическом порядке, до разблокировки запрошенной суммы с соблюдением указанных выше временных условий.
Пример
Предположим, что пользователь A блокирует 1, 3 и 5 января по 2000 CFX и подает заявку на разблокировку 3000 CFX 9 января.
- Сначала 2000 токенов CFX, которые были заблокированы 1 января, будут разблокированы.
Проверка условий разблокировки:
- токены должны быть заблокированы в течении 14 дней, отсюда получаем 1 января + 14 дней = 15 января.
- 7 дней должно пройти с момента запроса на разблокировку: 9 января + 7 дней = 16 января.
- Таким образом, 16 января будут разблокированы первые 2000 CFX, которые были заблокированы 1 января.
- После этого 1000 CFX, которые были заблокированы 3 января, будут разблокированы.
Проверка условий разблокировки:
- токены должны быть заблокированы в течении 14 дней, отсюда получаем 3 января + 14 дней = 17 января.
- 7 дней должно пройти с момента запроса на разблокировку: 9 января + 7 дней = 16 января.
- Таким образом, 17 января будет разблокировано еще 1000 CFX.
Итого вся запрошенная сумма в 3000 CFX будет разблокирована 17 января. А у пользователя останутся голоса полученные при блокировке 1000 CFX 3 января и 2000 CFX 5 января.
Описание работы PoS-консенсуса:
Консенсус комитет:
- PoS аккаунт может участвовать в выборах членов комитета с использованием VRF (проверяемая случайная функция). Всего комитет состоит из 300 участников.
- Комитет делиться на шесть групп по 50 участников каждая.
- Одна из шести групп выставляется на выборы каждый час. Каждый член комитета состоит в нем около 6 часов.
- Выборы каждого члена комитета начинаются за 1,5 часа и заканчиваются за 0,5 часа до времени вступления в комитет.
- При избрании каждый голос за учетную запись PoS будет рассматриваться как отдельный кандидат. Если на одном PoS-аккаунте будет 10 голосов, это будет считаться 10 кандидатами, участвующими в выборах. Если учетная запись имеет 2 избранных голоса, учетная запись будет иметь 2 веса голоса в этом комитете; остальные 8 голосов могут участвовать в следующих выборах.
- Каждый PoS аккаунт передает результаты выполнения функции VRF в период выборов. Значение хэша рассчитывается на основе переданных результатов, и происходит выбор 50 голосов с наименьшим значением хэша.
Например, если вывод функции VRF равен x, а POS аккаунт имеет 5 голосов, то значение хэша равно hash(x, 0) ~ hash(x, 4).
Члены комитета
Члены комитета принимают участие в консенсусе POS и голосуют за опорные блоки сети Conflux.
Механизм поощрения:
Существующий процент за стекинг (staking) монет будет отменен.
-
В промежутке между двумя выборами в комитет учетные записи PoS будут получать баллы, (количество получаемых баллок зависит от их действий), максимум 6 000 000 баллов. Вознаграждения сгенерированные за этот промежуток времени будут разделены на 6 000 000 баллов и соответственно распределены между связанным учетные записи PoW.
-
Если сгенерированных баллов меньше 6 000 000, неотправленные вознаграждения будут сожжены.
Распределение баллов:
- При участии в выборах комитета голоса, набравшие наименьшие 10 000 хэш-значений, получат по 120 баллов каждый. (всего 1 200 000 в качестве награды за участие)
- Члены комитета получат по 15 000 баллов за каждый голос. Всего за 300 голосов будет начислено 4 500 000 баллов.
- Если вы станете “лидером” блока PoS, за каждый такой блок соответствующий аккаунт получит 3000 баллов; 60 блоков в общей сложности 180 000 баллов.
- Для подписания каждого PoS-блока потребуется 201 из 300 членов комитета. Однако “лидер” может собрать более 200 подписей участников. Мы призываем “лидера” собрать больше подписей, чтобы доказать, что каждый член комитета активно участвует в консенсусе. Каждая подпись свыше 200 подписей блока будет получать 20 баллов, максимум 2000 баллов. 60 блоков в общей сложности 120 000 очков.
Расчет вознаграждений
Вознаграждение за каждый блок сети Conflux формируется следующим образом:
sqrt (общая сумма ставок * общий тираж CFX) * 4% / номер блока Conflux за 1 год
Предположим, что PoS не начал следующие выборы и распределяет процентные доли после 7200 последовательных блоков сети Conflux (около 1 часа). В этом случае до следующих выборов вознаграждения начисляться не будут. Цель данного ограничения состоит в том, чтобы предотвратить намеренное замедление консенсуса узлами PoS для получения большего вознаграждения.
Предупреждение о рисках
Риск потери средств
Если PoS аккаунт подписывает два блока PoS с одинаковым номером, ее токены CFX будет навсегда заблокированы. Такая ситуация может возникнуть, если:
- Учетная запись атакует протокол консенсуса путем модификации ноды Conflux.
- Использование одного и того же PoS аккаунта на нескольких разных нодах Conflux. (Это приведет к тому, что одна и та же учетная запись будет выполнять конфликтующие операции, что рассматривается как атака на протокол консенсуса.).
- Компроментация файлов закрытых ключей PoS.
Риск ликвидности
Член комитета, который не будет подписывать более 60 блоков подряд (около 1 часа), будет исключен из участия в консенсусе в принудительном порядке. Все его голоса будут находиться в стадии ожидания разблокировки и потеряют право голоса. Разблокировка будет осуществлена автоматически при соблюдении описанных выше условий.
Риск потери дохода
Вы не будете получать вознаграждение если нода, привязанная к вашему PoS аккаунту не будет корректно запущена и не будет работать.
Оригинал статьи: https://developer.confluxnetwork.org/v2-hardfork/pos_overview/#withdraw-voting-rights