Консенсус и валидаторы
NeutronX использует CometBFT - BFT-консенсус с мгновенной финальностью. Блок окончателен, как только за него проголосовали валидаторы с более чем 2/3 стейка. Откатов и форков после этого нет.
Как принимается блок
- Предложение. Пропозер предлагает блок. Пропозеры сменяются по очереди, чаще выпадают валидаторы с большим стейком.
- Prevote. Валидаторы проверяют блок и голосуют за него.
- Precommit. Когда набирается более 2/3 стейка, валидаторы голосуют второй раз и прикладывают к голосу цены оракула (vote extension).
- Commit. После более 2/3 precommit блок окончателен.
Если пропозер не уложился в таймаут, начинается новый раунд с другим пропозером.
Когда что-то идёт не так
| Ситуация | Что происходит |
|---|---|
| Более 2/3 стейка онлайн | Блоки производятся в обычном темпе, ~0.84 с |
| Более 1/3 стейка офлайн | Сеть останавливается и ждёт. Ничего не теряется: после возвращения валидаторов производство продолжается с того же блока |
| Попытка создать конфликтующий блок | Возможна, только если не меньше 1/3 стейка подпишет двойные голоса. Такие голоса доказуемы и наказываются |
Валидаторы
- Вес. Вес голоса равен стейку валидатора: собственному и делегированному. В активном наборе до 60 валидаторов.
- Обязанности:
- подписывать блоки;
- в каждом блоке публиковать цены оракула через vote extensions.
- Комиссия:
- от 5% до 20%;
- менять её можно не больше чем на 1% в сутки.
- Как делегировать NTX - в разделе «Стейкинг».
Наказания
| Нарушение | Наказание |
|---|---|
| Двойная подпись | Slash 5% стейка и бессрочное исключение из набора |
| Простой: подписано меньше 5% из последних 10 000 блоков | Slash 1% стейка, jail на 10 минут |
| Цена оракула отклонилась от медианы больше чем на 5% | Slash 0.01% стейка, не чаще раза за блок. 3 нарушения за 1 000 блоков - jail, если в наборе не меньше 5 валидаторов |
Slash уменьшает весь стейк валидатора, включая делегированный. Валидатор в jail не подписывает блоки и не получает награды, пока не отправит MsgUnjail после окончания срока.