Консенсус і валідатори
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 після закінчення строку.