Skip to content

Управління ​

Параметри протоколу — мінімальний стейк, винагороди, газовий бюджет, slashing, пороги AI — змінюються ончейн-голосуванням вагою стейку, а не правкою конфігурації операторами нод.

Життєвий цикл пропозиції: стейкер подає пропозицію, вона активна протягом вікна голосування, стейкери голосують вагою власного стейку; після завершення вікна вона приймається, якщо голоси становлять щонайменше 20% усього стейку і «так» — понад 50% голосів, інакше відхиляється; прийнята PARAM_CHANGE змінює параметр, якщо значення в допустимих межах

Подання пропозиції ​

ПравилоЗначення
ХтоПідписаний запит від будь-якої адреси; автор із .human повинен мати власний стейк щонайменше min_stake
Типиtext (лише сигнал) або PARAM_CHANGE (змінює один параметр)
Вікно голосуванняВід 100 до max_voting_duration_blocks (за замовчуванням 1 000 000) блоків; 1 000, якщо не задано
ОбмеженняНазва — 200 символів, опис — 5 000, корисне навантаження — 10 КБ

PARAM_CHANGE містить зміну в корисному навантаженні:

json
{ "param_key": "max_block_gas", "param_value": "20000" }

Пропозиція — підписана операція на neuro:system.governance; вона записується в консенсусі, тож кожен валідатор має ідентичну пропозицію з тієї самої висоти.

Голосування ​

  • Голосувати можуть лише адреси з власним стейком. Вага голосу — власний стейк, прочитаний зі стану мережі в момент застосування голосу. Делегування голосу не дають.
  • Стейк, доданий після створення пропозиції, не голосує за неї — так не вийде купити стейк лише для того, щоб переломити голосування.
  • Один голос від адреси на пропозицію: «так» або «ні», остаточно.
  • Голоси — підписані операції, записані в консенсусі.

Результат ​

Коли вікно голосування завершилось:

ПеревіркаЗа замовчуваннямПоле пропозиції
Кворум — вага «так» + «ні» ≥ цієї частки всього власного стейку20%quorum_bps = 2 000
Поріг — вага «так» > цієї частки поданих голосів50%threshold_bps = 5 000

Обидві умови виконано → passed; інакше → rejected. Прийнята PARAM_CHANGE змінює параметр — якщо нове значення не виходить за допустимі межі; інакше зміну відхилено й лишається старе значення.

Стан фіналізації

експериментально Створення пропозицій і голосування працюють у консенсусі. Закриття пропозиції та застосування прийнятої зміни параметра зараз відбуваються на кожній ноді, коли вона віддає список пропозицій (GET /api/v1/governance/proposals), а не під час коміту блоку. Перенесення фіналізації в шлях коміту заплановано; доти після прийняття зміни перевіряйте параметр на кожному валідаторі.

Як тестується: тест ноди test_apply_tx_governance_propose_and_vote_in_consensus покриває застосування пропозицій і голосів; перевірку меж покривають тести параметрів (test_deploy_risk_threshold_governance, test_deploy_security_governance_override).

Параметри ​

Поточні значення: GET /api/v1/governance/params. Деякі можна також задати для ноди під час старту змінною середовища — це призначено для тестових мереж.

Стейкінг і консенсус ​

ПараметрЗа замовчуваннямДопустимі межіЗмінна середовища
min_stake10 000 NRO (в uNRO)від 1 до 10¹⁵ uNRO—
unbonding_blocks1 512 000від 1 до 10⁹NEUROCHAIN_UNBONDING_BLOCKS
base_apy_bps1 200 (12%)від 0 до 100 000—
genesis_apy_bps2 400 (24%)від 0 до 100 000—
reward_interval_blocks216 000від 1 до 10⁹NEUROCHAIN_REWARD_INTERVAL_BLOCKS
blocks_per_year78 840 000від 1 до 10⁹—
max_commission_bps2 000 (20%)——
max_block_gas10 000від 1 до 10⁹—
slash_fraction_double_sign_bps500 (5% від min_stake)від 0 до 10 000NEUROCHAIN_SLASH_FRACTION_DOUBLE_SIGN_BPS
slash_reward_fraction_bps100 (1% тому, хто повідомив)від 0 до 10 000NEUROCHAIN_SLASH_REWARD_FRACTION_BPS
slash_double_vote_bps500від 0 до 10 000—
jail_blocks10 000від 1 до 10⁹NEUROCHAIN_JAIL_BLOCKS
slash_evidence_window10 000від 1 до 10⁹NEUROCHAIN_SLASH_EVIDENCE_WINDOW
quorum_bps2 000від 1 до 10 000—
threshold_bps5 000від 1 до 10 000—

AI-безпека ​

ПараметрЗа замовчуваннямДопустимі межіЗначення
deploy_security_enabled10 або 1Шлюз VMGuardian перед розгортанням (аварійний вимикач)
deploy_risk_threshold80від 0 до 100Розгортання відхиляється при ризику ≥ 0,80
sentinel_enabled10 або 1Оцінка транзакцій Sentinel
sentinel_reject_threshold85—Транзакція відхиляється при оцінці ≥ 0,85
sentinel_policy_enabled0—Ступінчастий шар політик (утримання / підтвердження) — вимкнено за замовчуванням
sentinel_hold_threshold60—Оцінка, від якої переказ утримується
sentinel_stepup_threshold70—Оцінка, від якої потрібне підтвердження власника
sentinel_hold_blocks50—Затримка до звільнення утриманого переказу
sentinel_confirm_expiry_blocks1 000—Скільки чекати підтвердження власника до повернення
sentinel_agent_confirm_threshold60—Оцінка, від якої переказу сесійного ключа потрібен власник
trust_activation_blocks300—Затримка, після якої новий довірений отримувач починає діяти

Параметри політик Sentinel мають також змінні середовища NEUROCHAIN_SENTINEL_* і NEUROCHAIN_TRUST_ACTIVATION_BLOCKS; див. Sentinel.

Нативні активи та обмін ​

ПараметрЗа замовчуваннямЗначення
asset_issue_fee1 000 NROПлата за випуск нативного активу
asset_max_decimals18Найбільша кількість знаків після коми в активу
dex_shard0Шард, де зберігаються записи активів і обміну

Обмін (AMM) має також параметри комісії постачальникам ліквідності, протокольної комісії, мінімальної ліквідності, кількості свопів на пул за блок і аварійного вимикача; їхні поточні значення — у довіднику REST.

Прочерк у колонці «Допустимі межі» означає, що нода поки не перевіряє межі цього параметра при прийнятті зміни — пропонуйте значення обережно.

API ​

ДіяЕндпоінт
Подати пропозиціюPOST /api/v1/governance/propose
ПроголосуватиPOST /api/v1/governance/:id/vote
Список пропозиційGET /api/v1/governance/proposals?status=&limit=&offset=
Одна пропозиціяGET /api/v1/governance/:id
ПараметриGET /api/v1/governance/params