Вики ZooBC
Экономика и управление

Голосования по ценам

Несколько цен ZooBC не зафиксированы навсегда: по ним голосуют места реестра узлов. Начиная с версии 0.5.8 одно правило охватывает все голосуемые цены. Раз в период снимков, 30 дней в mainnet, каждая цена переходит к среднему по учтённым местам, где молчащее место засчитывается по действующей цене, а каждый голос предварительно ограничивается пределами — не выше действующей цены более чем на 20 % и не ниже её половины. Всё остальное, от графика эмиссии до балансов, недоступно никакому голосованию.

По каким ценам можно голосовать

ЦенаНачальное значение в mainnetПределы
комиссия за перевод (шкала комиссий)1,0, в голосовании записывается как 0,01 ZBCот одной атомарной единицы до 1 ZBC, то есть до 100 раз выше начальной
аренда аккаунта0,01 ZBC за периодот одной атомарной единицы до 10 ZBC за период
содержание токена0,1 ZBC за периодот одной атомарной единицы до 10 ZBC за период
цена хранения наборов данных0,05 ZBC за МиБ за периодот одной атомарной единицы
множитель хранения1,0собственные пределы
стейк шлюза10 ZBCот одной атомарной единицы
стоимость создания рынка50 ZBCот одной атомарной единицы
комиссия тейкера на рынке0,1 %от 1 до 100 базисных пунктов
минимум очереди100 ZBCот одной атомарной единицы до 250 ZBC

Комиссия за перевод умножает базовую комиссию за действие 0,025 ZBC в минимальной комиссии каждой транзакции (комиссии). Минимум очереди — наименьший стейк, с которым узел может встать в очередь (регистрация узла). Остальные цены описаны вместе с соответствующими возможностями: Аренда аккаунтов и их удаление, содержание токена (продление), наборы данных, шлюзы и рынки и ордера.

Как меняется цена

У каждого зарегистрированного места, которое не приостановлено, один голос; это учтённые места. В течение цикла место может голосовать сколько угодно раз, и засчитывается его последний голос. В конце цикла:

  1. Каждый голос ограничивается: не более чем на 20 % выше действующей цены, не ниже её половины и всегда в пределах нижней и верхней границ цены.
  2. Новая цена — среднее по всем учтённым местам, где каждое молчащее место засчитывается по действующей цене.

Если никто не голосует, ничего не меняется. Ни медиана поданных голосов, ни точное согласие двух третей, ни самый высокий голос ничего не решают.

Десять мест: два голосуют за 120, а восемь молчащих засчитываются как сохраняющие 100; 240 + 800 = 1 040, делённое на 10, даёт новую цену 104.
Десять мест: два голосуют за 120, а восемь молчащих засчитываются как сохраняющие 100; 240 + 800 = 1 040, делённое на 10, даёт новую цену 104.

Разобранные примеры

Десять учтённых мест и действующая цена 100:

ГолосаКаждый голос засчитывается какНовая цена
два места голосуют за 120, восемь молчат120, 120 и 100 за каждое молчащее место(2 × 120 + 8 × 100) ÷ 10 = 104
одно место голосует за 10 000, девять молчат120(120 + 9 × 100) ÷ 10 = 102
одно место голосует за 0, девять молчат50(50 + 9 × 100) ÷ 10 = 95

Без ограничения голос за 10 000 дал бы простое среднее 1 090. Когда ограничение применяется первым, одно место сдвигает цену не более чем на десятую часть полного шага в реестре из десяти мест и на 0,2 % в реестре из 100.

Голос за 10 000 проходит через ограничение от половины до +20 % и засчитывается как 120; с девятью молчащими местами по 100 среднее равно (120 + 9 × 100) ÷ 10 = 102.
Голос за 10 000 проходит через ограничение от половины до +20 % и засчитывается как 120; с девятью молчащими местами по 100 среднее равно (120 + 9 × 100) ÷ 10 = 102.

Как быстро могут меняться цены

Даже когда каждое место голосует за полный шаг, цена за цикл растёт не более чем на 20 % и падает не более чем вдвое. Десятикратный рост занимает около 13 циклов, десятикратное снижение — около 4.

Любую цену, выраженную в ZBC, можно снизить голосованием до одной атомарной единицы (0,00000001 ZBC). Если ZBC станет очень ценным, эти цены могут последовать вниз, чтобы содержание аккаунта или набора данных не стало абсурдно дорогим в реальном выражении. От 0,01 ZBC аренды аккаунта до одной единицы — около 20 уменьшений вдвое, то есть не меньше 20 циклов. Бесплатным не становится ничего: каждая вычисленная плата округляется вверх как минимум до одной атомарной единицы.

Как подать голос

Голоса — это служебные транзакции без комиссии, подписанные ключом узла места (ключи узла). По всем ценам, кроме комиссии за перевод, голосуют транзакцией SetConsensusParam (тип 51).

Комиссия за перевод — единственная цена с двухэтапным голосованием:

  • в первой половине цикла место отправляет FeeVoteCommitment (тип 7), несущую только 32-байтовый хеш его голоса, так что значение остаётся скрытым;
  • во второй половине оно отправляет FeeVoteReveal (тип 263) со значением.

Раскрытие засчитывается, только если его хеш совпадает с обязательством, которое то же место сделало в том же цикле, и используется последний действительный голос места. Затем новая комиссия вычисляется так же, как любая другая цена.

Меры защиты

  • Минимальный размер реестра. Ни одно решение всего реестра не принимается, пока в реестре меньше max(3, его генезисный минимум) мест или различных аккаунтов владельцев, то есть 7 в mainnet. Два места одного оператора в этом подсчёте — один голос.
  • Раз в цикл. Параметр меняется не чаще одного раза за цикл и всегда остаётся в своих пределах.
  • Деньги остаются у мест. Всё, что взимается по этим ценам, достаётся зарегистрированным узлам: аренда — через пул долголетия, комиссии — через лотерею (пулы, лотерея coinbase).

Чего не может изменить никакое голосование

График эмиссии, по которому каждый узел проверяет coinbase каждого блока (предложение и эмиссия); баланс любого аккаунта; правила консенсуса и высоты, на которых они применяются; и генезис. Всё это задаётся генезисом и программой узла, и никакое голосование или ключ это не сдвинет (ZooBC Foundation). У мест есть ещё одно голосование помимо цен: две трети из них могут наложить вето на релиз программы (релизы и обновления).

См. также