# Делегаты
Делегаты – это участники, которым другие участники ДАО VIZ доверили поддержание блокчейна: создание и подписание блоков, управление экономическими и другими параметрами, а также обновление кода блокчейна. Доверие к делегату выражается в количестве отданных за него голосов. При этом, за один голос принимается один токен shares. То есть, чем больше доля аккаунта в ДАО, тем выше его влияние на выборы делегатов.
Деятельность делегатов разделена на раунды. За один раунд создается 21 блок с интервалом в 3 секунды, таким образом, продолжительность одного раунда составляет 63 секунды. В одном раунде могут принимать участие не более 21 делегата. В течение раунда они по очереди создают и подписывают новые блоки. За каждый созданный блок делегат получает награду в соответствии с моделью эмиссии. Затем, по истечению раунда, очередь обновляется.
Для формирования очереди каждый раунд выбираются 11 топ-делегатов и 10 делегатов поддержки - всего 21 делегат. Топ-делегаты - это 11 делегатов, получивших наибольшее количество голосов. Они получают равные выплаты вне зависимости от размера полученных голосов. Делегаты поддержки - это оставшиеся 10 делегатов, получившие достаточно голосов, чтобы войти в топ 21, но недостаточно, чтобы войти в топ 11. Выплаты между ними распределяются уже в зависимости от размера полученных голосов и места в топе.
В течение всего раунда очередь остается фиксированной. Делегаты, не участвовавшие в текущем раунде, должны ждать новый раунд, чтобы получить возможность занять позицию и выполнять функции делегата.
# Пенальти и исключение делегата из цепи
В случае, если делегат пропустит блок, ему назначается штраф (пенальти), который выражается во временном уменьшении количества голосов на определённый делегатами процент(по умолчанию равен 1%). Его можно будет погасить через некоторое время, также устанавливаемое делегатами(по умолчанию 24 часа).
Если из-за штрафа в итоге у делегата останется 0 голосов (то есть суммарный процент штрафа окажется равен 100%), делегат будет исключён из цепочки до погашения всех штрафов.
Кроме того, возможен иной вариант исключения делегата из цепочки. Если делегат пропустит более 200 блоков подряд, то он будет исключён из цепи до тех пор, пока вручную не исправит проблему, и пока не истечёт срок действия всех штрафов, заработанных за пропуск этих двухсот блоков.
# Голосование за делегатов
Голосовать за делегатов можно двумя способами:
Прямое голосование. При таком способе голосования участник самостоятельно решает, за какого делегата отдать свой голос. При голосовании учитывается количество чистых shares.
Голосование через прокси. При таком способе голосования участник выбирает аккаунт-прокси, который будет решать, кому из делегатов отдать переданные ему голоса. В свою очередь, аккаунт-прокси может доверить голоса своих пользователя другому аккаунту-прокси. При голосовании через прокси-аккаунт учитывается только количество чистых shares.
Проголосовать можно максимум за 100 делегатов одновременно. При этом, сила голоса распределяется равномерно между всеми ними - это, кстати, и называется Fair DPOS. То есть, если участник проголосовал за 4 делегатов, то каждому достанется 25% от голосов аккаунта.
# Управление параметрами сети
Роль делегатов состоит в поддержании работоспособности сети, принятии обновления программного обеспечения и управлении параметрами блокчейна. Делегаты могут управлять следующими параметрами:
account_creation_fee – минимальная стоимость создания нового аккаунта в ликвидных токенах;
create_account_delegation_ratio – коэффициент, показывающий, во сколько раз больше токенов нужно затратить при создании аккаунта через делегирование долевых токенов, чем при создании за ликвидные токены (shares = account_creation_fee * create_account_delegation_ratio);
create_account_delegation_time – минимальный промежуток времени, по окончании которого пользователь может вернуть свои shares, затраченные на создание аккаунта с помощью делегирования (при обычном делегировании доля может быть возвращена через 1 день);
maximum_block_size – максимальный размер блока;
min_delegation – минимальное количество делегируемых shares;
bandwidth_reserve_below – максимальное количество shares аккаунта, при котором ему выделяется резервная пропускная способность;
bandwidth_reserve_percent – процент резервирования пропускной способности от всего канала для аккаунтов с количеством shares меньшим, чем bandwidth_reserve_below (может быть равен 0);
vote_accounting_min_rshares – минимальное количество rshares, при которых награда будет больше 0;
committee_request_approve_min_percent – минимальный процент от всех голосов, отданных за заявку в Комитете, при котором она считается подтвержденной;
inflation_witness_percent – процент от эмиссии, который распределяется между 21 делегатом, вошедшими в раунд подписи блоков;
inflation_ratio_committee_vs_reward_fund – процент оставшейся эмиссии, идущий в Комитет;
inflation_recalc_period – количество блоков, через которое блокчейн проверяет актуальность эмиссионных параметров;
data_operations_cost_additional_bandwidth - множитель для наценки количества пропускной способности, которую затратит аккаунт на отправку транзакций без ограничений по размеру (к таким транзакциям, например, относится custom-транзакция).
witness_miss_penalty_percent - процент, на который временно уменьшается количество голосов, отданных за делегата, в случае пропуска им одного блока.
witness_miss_penalty_duration - количество секунд, через которое делегату возвращается количество голосов на witness_miss_penalty_percent процентов, если они были уменьшены из-за пропуска блоков.
Для обновления программного обеспечения блокчейна требуется согласие 17 делегатов в раунде. Значения голосуемых параметров равны медиане значений, установленных 21 делегатом в раунде.
Подробное описание голосуемых параметров
Ниже представлена таблица типов, используемых в блокчейне:
Тип | Пример | Диапазон | Описание |
---|---|---|---|
VIZ актив | "1.000 VIZ" | от 0.001 VIZ | Количество ликвидных токенов. Строка с десятичным числом с не более чем 3 цифрами после точки и обязательной припиской VIZ через пробел. Пример: "1.123 VIZ" |
SHARES актив | "1.000000 SHARES" | от 0.000001 SHARES | Количество долевых токенов. Строка с десятичным числом с не более чем 6 цифрами после точки и обязательной припиской SHARES через пробел. Пример: "1.123456 SHARES" |
µShares | 1000000 | от 0 | Количество микродолевых токенов. 1 µShares = 0.000001 SHARES; 1000000 µShares = 1.000000 SHARES. Целое число. |
Процент | 1000 | от 1 до 10000 | Процент в целом числовом формате. 0.01% = 1; 1% = 100; 100% = 10000; |
Целое | 1 | Целое число |
# account_creation_fee
Добавлено: 1.0.0
Формат: VIZ актив
Чтобы стать держателем долевого токена, необходимо зарегистрировать аккаунт. Аккаунт – это именованный «кошелёк», на котором хранятся средства участника - как ликвидные, так и долевые. Регистрация аккаунта не бесплатна. Чтобы создать новый аккаунт, кто-то из уже существующих участников ДАО VIZ должен отправить транзакцию регистрации аккаунта и заплатить ликвидные токены, которые затем будут конвертированы в долевые токены нового аккаунта. Минимальное количество токенов, которое должен заплатить создатель, указаны в параметре account_creation_fee.
# create_account_delegation_ratio
Добавлено: 1.0.0
Формат: Целое
Аккаунт может быть создан не только за ликвидные токены, но и с помощью делегирования части своих shares новому аккаунту во время создания. В количественном соотношении создание такого аккаунта может быть дороже, но делегированную долю можно вернуть.
Этот параметр отвечает за то, во сколько раз больше нужно потратить токенов при создании аккаунта через делегирование доли (shares = account_creation_fee * create_account_delegation_ratio
).
# create_account_delegation_time
Добавлено: 1.0.0
Формат: Целое
При создании аккаунта регистратор не может вернуть свою долю сразу. Для этого ему придется ждать количество секунд, указанное в create_account_delegation_time.
# maximum_block_size
Добавлено: 1.0.0
Формат: Целое
Каждый блок может вмещать ограниченный размер информации в байтах. Голосуя за этот параметр, делегаты могут решать проблему масштабируемости сети.
# min_delegation
Добавлено: 1.0.0
Формат: VIZ актив
Пользователь не может делегировать другому аккаунту количество shares меньшее, чем указано в min_delegation, в пересчёте на ликвидные токены.
# bandwidth_reserve_below
Добавлено: 1.0.0
Формат: SHARES актив
Если у аккаунта количество shares меньше, чем показатель bandwidth_reserve_below, то ему выделяется дополнительная пропускная способность. Это полезно для поддержания активности новичков в системе, иначе они не могли бы проводить операции при высокой загрузке пропускной способности блокчейна. С другой стороны, слишком щедрое выделение возможностей блокчейна микроаккаунтам может привести к спаму со стороны злоумышленников.
# bandwidth_reserve_percent
Добавлено: 1.0.0
Формат: Процент
Процент от всей пропускной способности сети, зарезервированный для аккаунтов с количеством shares меньшим, чем bandwidth_reserve_below. Если bandwidth_reserve_percent равен 0, то аккаунты с количеством shares меньшим, чем bandwidth_reserve_below, не смогут проводить транзакции.
# vote_accounting_min_rshares
Добавлено: 1.0.0
Формат: µShares
Минимальное количество rshares, при которых награда будет больше 0.
Рассчитать rshares конкретного аккаунта можно по формуле
rshares = s * e%
где s
– количество эффективных shares, e%
– процент от эффективных shares и одновременно количество затрачиваемой энергии при награде.
Этот параметр введён для снижения нагрузки на блокчейн: микроскопические награды не имеют смысла, но тратят ресурсы нод так же, как и обычные.
# committee_request_approve_min_percent
Добавлено: 1.0.0
Формат: Процент
Минимальный процент от всех голосов, отданных за заявку в Комитет, при котором заявка считается подтверждённой.
# inflation_witness_percent
Добавлено: 2.0.0
Формат: Процент
Процент от эмиссии, который распределяется между 21 делегатом, вошедшими в раунд подписи блоков.
# inflation_ratio_committee_vs_reward_fund
Добавлено: 2.0.0
Формат: Целое
Процент от эмиссии, оставшейся после выделения средств делегатам, который идёт в фонд Комитета (остальное направляется в фонд наград).
# inflation_recalc_period
Добавлено: 2.0.0
Формат: Целое
Количество блоков, через которое блокчейн проверяет актуальность эмиссионных параметров (inflation_witness_percent, inflation_ratio_committee_vs_reward_fund). Если делегаты изменили какой-то из этих параметров, блокчейн будет учитывать их не раньше, чем через inflation_recalc_period с последней проверки.
# data_operations_cost_additional_bandwidth
Добавлено: 2.2.0
Формат: Целое
Множитель для наценки количества пропускной способности, которую затратит аккаунт на отправку транзакций без ограничений по размеру. К таким транзакциям, например, относится custom-транзакция.
Это значит, что аккаунт затратит на отправку транзакции в data_operations_cost_additional_bandwidth
раз больше байт, чем она весит на самом деле (размер транзакции * data_operations_cost_additional_bandwidth
). Смотрите раздел "Наценка на безграничные транзакции".
# witness_miss_penalty_percent
Добавлено: 2.2.0
Формат: Процент
Процент, на который временно уменьшается количество голосов, отданных за делегата, в случае пропуска им одного блока.
Смотрите раздел "Пенальти".
# witness_miss_penalty_duration
Количество секунд, через которое делегату возвращается количество голосов на witness_miss_penalty_percent процентов, если они были уменьшены из-за пропуска блоков. Смотрите раздел "Пенальти".