Консенсус і валідатори

NeutronX використовує CometBFT - BFT-консенсус з миттєвою фінальністю. Блок остаточний, щойно за нього проголосували валідатори з понад 2/3 стейку. Відкатів і форків після цього немає.

Як приймається блок

  1. Пропозиція. Пропозер пропонує блок. Пропозери змінюються по черзі, частіше випадають валідатори з більшим стейком.
  2. Prevote. Валідатори перевіряють блок і голосують за нього.
  3. Precommit. Коли набирається понад 2/3 стейку, валідатори голосують удруге й додають до голосу ціни оракула (vote extension).
  4. 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 після закінчення строку.