Положение о валидаторах. Голосование за валидаторов

Уважаемые пользователи платформы CyberWay! Команда @cyberwaydev рада предоставить вам документ, поясняющий основные моменты, касающиеся валидаторов как особой категории пользователей нашей блокчейн-платформы. В документе приводятся положения о валидаторах CyberWay, их функции, а также факторы, влияющие на доходность валидаторов и пользователей, принимающих участие в голосовании за валидаторов.

Используемая терминология

Агент — потенциально активный пользователь, имеющий на своем балансе определенное количество застейканных токенов.

Голоса, отданные за валидатора — под голосами понимается определенное количество застейканных токенов, отданных валидатору при голосовании (один токен соответствует одному голосу).

Делегатор — пользователь, который делегирует часть принадлежащего ему стейка (ресурсы RAM, CPU, NET, Storage), либо право голоса другому пользователю при голосовании.

Стейк (англ. stake) — доля ресурсов bandwidth (RAM, NET, CPU и Storage), выделенная пользователю в системе на выполнение операций и выраженная в их текущей стоимости. Пользователь может распоряжаться выделенной ему долей ресурсов как самостоятельно, так и доверить ее использование другому пользователю (делегировать долю ресурсов).

Токен застейканный (англ. staked token) — токены, выделенные на приобретение доли стейка в системе и находящиеся в «замороженном» состоянии. Пользователь может переводить находящиеся на его балансе активные токены в состояние стейка. Также пользователь может выполнять обратную операцию — выводить токены из состояния стейка в активные.

Прокси-аккаунт (англ. proxy account) — пользователь, который наделен определенным правом голоса во время голосования. Прокси-аккаунтом может объявить себя любой пользователь, готовый принять голоса от других пользователей и распоряжаться этими голосами по своему усмотрению во время голосования за валидаторов.

Уровень прокси-аккаунта — условное разделение пользователей на категории. Каждой категории пользователей присваивается свой уровень прокси-аккаунта. Наивысшим уровнем прокси-аккаунта является нулевой, который присваивается только валидаторам. Первый уровень и далее по возрастанию присваивается пользователям, объявившим себя прокси-аккаунтами. Количество уровней (категорий) прокси-аккаунтов не ограничено. Количество прокси-аккаунтов одного и того же уровня также не ограничено. Последний уровень прокси-аккаунта присваивается рядовому пользователю. В текущем релизе количество уровней прокси-аккаунтов ограничено тремя. Прокси-аккаунт может быть настроен только на один из следующих уровней:

  • Прокси-аккаунт нулевого уровня — валидатор.

  • Прокси-аккаунт первого уровня — пользователь, объявивший себя прокси-аккаунтом, наделенный голосами рядовых пользователей, которыми он может воспользоваться во время голосования.

  • Прокси-аккаунт второго уровня — рядовой пользователь. Рядовой пользователь не должен заботиться о том, какой уровень прокси ему необходимо установить. Если пользователь не желает объявить себя прокси-аккаунтом, ему автоматически будет присвоен наибольший прокси-уровень.

От установленного прокси-уровня зависит количество частей, на которое можно поделить токены и, соответственно, количество валидаторов, за которых одновременно можно проголосовать. В текущей реализации пользователи первого прокси-уровня могут одновременно проголосовать за одного или более валидаторов (максимальное количество — 30). Пользователи второго прокси-уровня — только за одного валидатора или одного прокси-аккаунта. Количество застейканных токенов, отдаваемых за каждого из валидаторов, пользователь устанавливает по своему усмотрению. Пользователь нулевого прокси-уровня (валидатор) участие в голосовании не принимает.

Роль и значение валидаторов в системе

Валидаторы - это пользователи, которые обеспечивают надежное и безопасное функционирование узлов сети, производство блоков цепочки, принимают решение в управлении развитием блокчейна. Важно! Валидаторы предоставляют свое оборудование в пользование.

Функции валидатора

  • развертывание и настройка своего узла (ноды) сети;

  • настройка параметров сети на основе голосования валидаторов, распределение ресурсов сети (CPU, NET, RAM, Storage);

  • создание и подписание блоков;

  • обновление программного обеспечения и системных контрактов;

  • создание новых токенов;

  • голосование по принятию решений по дальнейшему развитию блокчейна;

  • принятие решения по созданию (или сжиганию) токенов определенного символа.

Положения о валидаторах

Статус валидатора

  • Статус кандидата в валидаторы может получить любой пользователь, зарегистрировавшийся в качестве кандидата в валидаторы, имеющий собственный стейк в размере не менее 50000 CYBER, а также сервер (ноду), соответствующий требованиям, приведенным в методичке.

  • Валидатор избирается голосованием пользователей из числа кандидатов в валидаторы.

  • По результатам голосования кандидаты в валидаторы разделяются на две группы — основных валидаторов, получивших наибольшее количество голосов, и резервных кандидатов.

Активные валидаторы

  • Для производства блоков автоматически составляется расписание активных валидаторов, в которое входят все основные валидаторы и один резервный кандидат.

  • Выбор резервного кандидата для расписания активных валидаторов происходит по минимальному текущему приоритету кандидата. Приоритет кандидата вычисляется в соответствии с установленной формулой, учитывающей количество отданных за него голосов и интервал времени, прошедший с момента его последнего появления в расписании активных валидаторов.

  • Активные валидаторы производят блоки поочередно в соответствии с расписанием.

  • Количество активных валидаторов изменяется в сторону увеличения и составляет от 21 до 101 включительно.

  • Расписание активных валидаторов обновляется периодически через каждые 4×A произведенных блока, где A — текущее количество активных валидаторов.

  • Количество активных валидаторов увеличивается на единицу, если выполняются два условия:

    • с момента последнего увеличения количества активных валидаторов прошло не менее 14 суток;

    • количество голосов, отданных за основных валидаторов, составило менее 90 % от количества всех отданных за кандидатов голосов.

Вознаграждение валидатора

  • Валидатор получает вознаграждение за каждый подписанный им блок.

  • Начисление вознаграждения происходит через каждый 3499-й произведенный блок.

  • Вознаграждение в виде застейканных токенов CYBER начисляется автоматически и остается на балансе валидатора. Перевод данных токенов в состояние ликвидных выполняется вручную.

  • Размер вознаграждения валидатора зависит от следующих параметров:

    • процент отчисления валидатору от годовой эмиссии токенов;

    • процент отчисления валидатору от вознаграждения пользователей, проголосовавшим за валидатора;

    • количество основных валидаторов на текущий момент;

    • количество пропущенных блоков (в текущей версии штрафы за пропущенные блоки не взыскиваются).

  • Средства, полученные от годовой эмиссии токенов, распределяются в следующих пропорциях:

    • валидатору отчисляются средства в размере 10 %;

    • в пул воркеров отчисляются средства в размере 20 %;

    • в общий пул вознаграждений по стейку отчисляются средства в размере 70 %. Часть средств из этого пула выделяется валидатору в соответствии с процентом отданных за него голосов от общего количества всех голосов.

  • Начисленное вознаграждение валидатору за произведенные им блоки распределяется между валидатором и проголосовавшими за него участниками в следующих пропорциях:

    • на стейк-баланс валидатора начисляется вознаграждение в размере 10 % от пула, а также вознаграждение в размере комиссии от суммы голосов, полученных им от избирателей. Размер комиссии устанавливается самим валидатором;

    • оставшаяся часть вознаграждения за произведенные валидатором блоки распределяется между проголосовавшими за него прокси-аккаунтами и рядовыми пользователями.

  • Эмиссия в системе зависит от количества используемых в голосовании токенов. В текущей реализации установлены следующие значения эмиссии токенов:

    • эмиссия составляет 20 %, если количество используемых в голосовании токенов не превышает 25 %;

    • эмиссия составляет 10 %, если количество используемых в голосовании токенов превышает 75 %;

    • эмиссия линейно уменьшается с увеличением количества используемых в голосовании токенов от 25 до 75 %.

Как стать кандидатом в валидаторы

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

Установка размера комиссии

Валидатор, а также кандидат в валидаторы, устанавливают размер комиссии fee, которая будет отчисляться им от поступившей суммы вознаграждения. Остальная часть суммы вознаграждения будет распределяться между всеми пользователями, которые за них проголосовали. Необоснованно завышенная комиссия может уменьшить количество пользователей, желающих проголосовать за валидатора. Напротив, необоснованно заниженная комиссия может не восполнить затраты валидатора на обслуживание им ноды. Поэтому к заданию размера комиссии fee валидатору или кандидату в валидаторы следует подходить наиболее ответственно.

Чтобы установить размер комиссии, валидатор может воспользоваться следующей командой cleos:

cleos push action cyber.stake setproxyfee '{"account" : <account>, "token_code" :<token_code>, "fee" : <fee>}' -p <account>

Аргументы командной строки:

  • account — аккаунт валидатора.

  • token_code — символ токенов, составляющих вознаграждение.

  • fee — размер комиссии, указанный с точностью до сотых долей процента. Параметр принимает значения от «0» до «10000» включительно. Значение «0» соответствует «0 %», а значение «10000» соответствует «100 %».

Пример с установкой комиссии в размере «7 %» валидатором alice:

cleos push action cyber.stake setproxyfee '{"account":"alice", "token_code":"CYBER", "fee":700}' -p alice

Установка нулевого уровня прокси-аккаунта

Валидатор, а также кандидат в валидаторы должны иметь нулевой уровень прокси-аккаунта. Для установки нулевого уровня прокси-аккаунта, можно воспользоваться следующей командой cleos:

cleos system setproxylvl <account> <level>

Аргументы командной строки:

  • account — аккаунт валидатора.

  • level — уровень прокси-аккаунта. Данный параметр должен принимать значение «0».

Пример с установкой нулевого уровня прокси-аккаунта для пользователя alice, у которой имеются токены с символом «4»:

cleos system setproxylvl alice 0

Активизация публичного ключа

Валидатор обязан иметь собственный публичный ключ для подписания создаваемых им блоков. Для активизации публичного ключа валидатора можно воспользоваться следующей командой cleos:

cleos push action cyber.stake setkey '{"account":"<account>", "token_code":"CYBER", "signing_key":"<... digital signature...>"}' -p <account>

Аргументы командной строки:

  • account — аккаунт валидатора, для которого активизируется публичный ключ.

  • token_code — символ застейканных токенов.

  • signing_key — цифровой ключ (устанавливаемая цифровая подпись) валидатора.

Пример активизации публичного ключа для валидатора alice:

cleos push action cyber.stake setkey '{"account":"alice", "token_code":"CYBER", "signing_key":"GLS7M53j...6FAx8Y881"}' -p alice

Упрощенный способ установки прокси-уровня и активизации публичного ключа

Пользователь также имеет возможность одновременно установить нулевой прокси уровень и публичный ключ, используя всего одну команду:

cleos system regproducer <account> <signing_key> --min-own-stake <value>

В отличие от предыдущей команды здесь задается аргумент “--min-own-stake ”, который устанавливает минимально допустимое количество застейканных токенов, которое должен иметь пользователь, чтобы быть кандидатом в валидаторы. Этот аргумент является произвольным и может быть опущен.

Пример объявления пользователя alice кандидатом в валидаторы:

cleos system regproducer alice GLS7M53j...6FAx8Y881 --min-own-stake 500000000

Голосование за валидаторов

Пользователь может голосовать за валидаторов как самостоятельно, так и через прокси-аккаунта, доверив последнему свое право голоса.

Непосредственное голосование

При голосовании пользователь может воспользоваться страницей «Валидаторы». Для этого необходимо выполнить следующие действия:

  • выбрать иконку со стрелкой вверх напротив интересующего валидатора;

  • указать количество застейканных токенов CYBER;

  • подтвердить транзакцию с помощью пароля или активного ключа.

В случае изменения решения пользователь может уменьшить (или увеличить) количество отданных валидатору токенов, либо полностью отозвать отданный за него голос. Для этого необходимо:

  • выбрать иконку со стрелкой вниз напротив интересующего валидатора;

  • установить необходимый процент снижения (или увеличения) с помощью ползунка;

  • нажать кнопку «разделегировать»;

  • подтвердить транзакцию с помощью пароля или активного ключа.

Голосование через прокси-аккаунт

Пользователь, который по какой-либо причине не принимает участие в голосовании за валидаторов, может воспользоваться услугами прокси-аккаунта и доверить ему право голоса. Для этого пользователю необходимо делегировать застейканные токены CYBER Stake прокси-аккаунту.

Для делегирования токенов CYBER Stake прокси-аккаунту можно воспользоваться следующей командой cleos:

cleos system voteproducer prods <user account> <proxy account> "quantity CYBER"

Аргументы командной строки:

  • user account — имя аккаунта, который делегирует стейк (или долю стейка) прокси-аккаунту.

  • proxy account — прокси-аккаунт, которому делегируются токены.

  • quantity CYBER — количество делегируемых токенов, которыми прокси-аккаунт может воспользоваться при голосовании.

Пример с делегированием 100 токенов CYBER Stake прокси-аккаунту bob от пользователя alice:

cleos system voteproducer prods alice bob "100.0000 CYBER"

Объявление себя прокси-аккаунтом

Пользователь может сам объявить себя прокси-аккаунтом и затем голосовать за валидаторов делегированными ему застейканными токенами CYBER Stake. Для получения статуса прокси-аккаунта необходимо пользователю установить уровень прокси-аккаунта равным единице (это в текущей реализации. В последующих реализациях уровень прокси-аккаунта может быть 1, 2 и более).

Для установки уровня прокси-аккаунта можно воспользоваться следующей командой cleos:

cleos system setproxylvl <account> <level>

Аргументы командной строки:

  • account — имя аккаунта, для которого устанавливается уровень прокси-аккаунта.

  • level — устанавливаемый прокси-уровень.

Пример с установкой прокси-уровня «1» пользователю с именем alice:

cleos system setproxylvl alice 1

Перевод токенов в состояние стейка

После транзита на балансе каждого пользователя автоматически появились токены Cyber Stake в количестве, соответствующем количеству Силы Голоса. Для увеличения количества застейканных токенов, необходимо конвертировать токены CYBER в CYBER Stake.

Для конвертации ликвидных токенов в состояние CYBER Stake можно воспользоваться следующей командой cleos:

cleos system stake <user account> <quantity CYBER>

Аргументы командной строки:

  • user account — имя аккаунта, который переводит токены в стейк.

  • quantity CYBER — количество переводимых токенов.

Пример с переводом 100 токенов CYBER в токены CYBER Stake пользователем alice:

cleos system stake alice 100.0000 CYBER

Процедура выведение токенов из состояние стейка в ликвидные

Пользователь может выполнить обратную операцию — вывести токены из состояния стейка (CYBER Stake) в состояние ликвидных (CYBER).

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

  • войти в эксплорер;

  • в поле поиска ввести свой аккаунт;

  • на странице аккаунта нажать кнопку «Recall» напротив того аккаунта, с которого требуется снять голоса.

Далее выполнить конвертацию токенов CYBER Stake в CYBER. Для этого можно воспользоваться следующей командой:

cleos push action cyber.stake withdraw '[<account>, <unstake quantity>]' -p <account>

Аргументы командной строки:

  • account — имя аккаунта, который выводит токены из состояния стейка.

  • unstake quantity — количество выводимых токенов.

При этом часть токенов CYBER Stake может быть заблокирована за использованные ресурсы, которые будут восстановлены только в течение определенного времени (например, на восстановление ресурсов Storage отводится месяц).

Пример с конвертацией 100 токенов CYBER Stake в токены CYBER пользователем alice:

cleos push action cyber.stake withdraw '[alice, "100.0000 CYBER"]' -p alice

Заключение

В текущей реализации блокчейна отсутствует возможность голосования пользователей за валидаторов с использованием эксплорера. Эксплорер на данный момент находится на стадии разработки, отсутствие которого вызывает определенные сложности у пользователей. По завершении разработки командой @cyberwaydev будет предоставлено к использованию обновленное руководство, содержащее более простые и удобные инструкции.

Last updated