Медианные параметры
Ряд параметров блокчейна являются голосуемыми, т.е. делегаты подают свои значения, из которых потом формируются некие консенсусные значения.
Медианный курс GBG/GOLOS
Данный курс отвечает за внутренние конвертации GBG-GOLOS и начисления вознаграждений.
В исходных текстах установление медианного курса происходит в void database::update_median_feed()
в database.cpp.
Обновление курса происходит 1 раз за период STEEMIT_FEED_INTERVAL_BLOCKS
(1 час на момент 0.17.0). При этом:
- Происходит вычисление текущего медианного курса следующим образом:
- Проверяется количество опубликованных ценовых фидов в текущем раунде подписи блоков. Дальнейшая обработка продолжается, только если опубликовано не менее чем
STEEMIT_MIN_FEEDS
(7 на момент 0.17.0) - Список фидов сортируется по значению.
- Берётся курс, который оказался в середине отсортированного списка. См. статью Медиана).
- Проверяется количество опубликованных ценовых фидов в текущем раунде подписи блоков. Дальнейшая обработка продолжается, только если опубликовано не менее чем
- Текущее значение медианного курса попадает в условную таблицу медианных курсов, которая хранит курсы за промежуток времени
STEEMIT_FEED_HISTORY_WINDOW
(3.5 дня на момент 0.17.0). - Таблица с этими курсами сортируется и уже из неё берётся значение, которое находится в середине.
- Проверяется, что получившееся значение не меньше минимально возможной цены GBG/GOLOS, которая является ограничителем размера долга GBG. Минимальная цена вычисляется по формуле
min_price = 9 * sbd_supply.amount / current_supply.amount
- Это значение (либо min_price) и становится текущим действующим медианным курсом, по которому происходят все операции конвертаций и прочие.
Некоторые следствия
- Делегаты с устаревшими или сильно завышенными/заниженными прайсфидами мало влияют на медианный курс, так как оказываются по краям отсортированного списка
- Медианный курс меняется плавно, в течении 3.5 дней
- Можно условно предсказать, куда стремится медиана, глядя на самое последние значение из истории опубликованных медиан (можно получить с помощью
get_feed_history
)
Другие медианные параметры
Помимо курса, делегаты голосуют и за другие параметры. В них используется более простой механизм:
- Берутся все значения параметра, опубликованные делегатами в текущем раунде подписи блоков.
- Список сортируется по значению параметра.
- Берётся значение, которое оказалось в середине отсортированного списка.
- Получившееся значение вступает в силу немедленно.
Список прочих голосуемых параметров:
account_creation_fee
Устанавливает количество токенов GOLOS, которые перейдут в Силу Голоса нового аккаунта во время создания аккаунта от создателя.
maximum_block_size
Устанавливает максимально допустимый размер блока в сети.
sbd_interest_rate
Устанавливает размер годового процента по GBG, выплачиваемого держателям. Значение 1000 соответствует 10%.