Управление
Назначение смарт-контракта golos.ctrl
Смарт-контракт golos.ctrl
содержит логику выбора делегатов, в том числе процедуру регистрации аккаунта как делегата, процедуру голосования за делегата, а также определение списка наиболее рейтинговых делегатов.
Общее
В смарт-контракте управления находятся настройки, которые относятся к приложению в целом и которые изменяют параметры каких-либо подсистем (например, распределение эмиссии между пулами). Логика смарт-контракта управления позволяет другим смарт-контрактам получать значения этих настроек, в том числе: кривых графиков выплат, процентных соотношений распределяемых средств по пулам, ограничений на ресурсы батареек).
Также смарт-контракты имеют возможность получать список наиболее рейтинговых (верхушки) делегатов и соответствующие им значения полномочий. Это позволяет проверять достоверность заверенных делегатами действий.
Параметры, устанавливаемые в смарт-контракте golos.ctrl
Параметры:
ctrl_token
— символ токена (тип данных, однозначно определяющий токен):
имя токена, состоящее из набора прописных букв;
поле, задающее точность стоимости токена в виде количества знаков после запятой.
multisig_acc
— имя аккаунта. Авторизация данного аккаунта изменяется при каждом изменении верхушки списка делегатов;
max_witnesses
— максимально допустимое количество делегатов, которое может принимать решение (подписывать транзакции) от имени приложения. Перечень таких делегатов содержит multisig_acc
;
multisig_perms
— необходимое количество подписей от верхушки делегатов, дающее разрешение (англ. permission) на выполнение действий от имени делегатов приложения. В зависимости от важности параметра на его изменение требуется соответствующий уровень разрешения. Имеется три уровня разрешения:
super_majority
— высокий уровень разрешения, на получение которого требуется не менее «двух третей плюс один» голосов верхушки списка делегатов (устанавливается по умолчанию);majority
— средний уровень разрешения, на получение которого требуется не менее «половины плюс один» голосов верхушки списка делегатов (устанавливается по умолчанию);minor_majority
— низкий уровень разрешения, на получение которого требуется не менее «одной трети плюс один» голосов верхушки списка делегатов (устанавливается по умолчанию);
max_witness_votes
— максимально допустимое количество делегатов, за которое может проголосовать пользователь приложения;
update_auth
— параметр, определяющий частоту обновления авторизации для аккаунта multisig_acc
:
period
— период обновления (в секундах). Повторная смена авторизации для аккаунта не выполняется, если с момента последнего обновления не прошло указанное количество секунд.
Операции-действия, применяемые в смарт-контракте golos.ctrl
Операция-действие setparams
Операция-действие setparams
используется для настройки параметров смарт-контракта golos.ctrl
. Операция-действие имеет следующий вид:
Параметр params
— значение в виде структуры, содержащей поля с настраиваемыми параметрами.
Операция-действие validateprms
Операция-действие validateprms
проверяет параметры на валидность, контролирует наличие в них ошибок. Операция-действие validateprms
вызывается смарт-контрактом, имеет следующий вид:
Параметр params
— значение в виде структуры, содержащей проверяемые параметры.
Операция-действие regwitness
Операция-действие regwitness
используется для регистрации кандидатов в делегаты приложения. Операция-действие regwitness
имеет следующий вид:
Параметры:
witness
— имя кандидата в делегаты приложения;
url
— адрес веб-сайта, откуда можно получить информацию о кандидате в делегаты, в том числе о мотивах, по которым он изъявил желание стать делегатом. Длина строки адреса не должна превышать 256 символов.
Выполнение операции-действия regwitness
требует подписи самого кандидата в делегаты witness
.
Операция-действие unregwitness
Операция-действие unregwitness
используется для снятия кандидатуры пользователя из числа зарегистрированных в качестве кандидатов в делегаты приложения. Операция-действие unregwitness
имеет следующий вид:
Параметр witness
— имя пользователя, которое необходимо удалить из числа зарегистрированных в кандидаты делегатов.
Выполнение операции-действия regwitness
требует подписи самого кандидата в делегаты witness
. Вызвать regwitness
может как сам кандидат в делегаты (в случае самоотвода), так и делегат, усмотревший какое-либо несоответствие возможностей кандидата в делегаты желаемым требованиям к делегату, а также несоответствие данных, опубликованных на веб-сайте, его актуальным данным.
Операция-действие votewitness
Операция-действие votewitness
используется для голосования за кандидата в делегаты приложения. Операция-действие votewitness
имеет следующий вид:
Параметры:
voter
— имя аккаунта, голосующего за кандидата в делегаты;
witness
— имя кандидата в делегаты, за которого отдается голос.
Выполнение операции-действия votewitness
требует подписи аккаунта voter
.
Ограничения:
имя кандидата в делегаты
witness
предварительно должно быть зарегистрировано через вызовregwitness
;количество голосов, отданных аккаунтом
voter
за кандидаты в делегаты, не должно превышать значение параметраmax_witness_votes
.
Операция-действие unvotewitn
Операция-действие unvotewitn
используется для снятия ранее отданного голоса за кандидата в делегаты приложения. Операция-действие unvotewitn
имеет следующий вид:
Параметры:
voter
— имя аккаунта, который намеревается снять свой ранее отданный голос за кандидата в делегаты;
witness
— имя кандидата в делегаты, у которого снимается ранее отданный за него голос.
Выполнение операции-действия unvotewitn
требует подписи аккаунта voter
.
Операция-действие changevest
Операция-действие changevest
является внутренней и пользователю недоступна. Используется смарт-контрактом вестинг для оповещения смарт-контракта управления об изменении количества вестинга на балансе пользователя. Операция-действие changevest
имеет следующий вид:
Параметры:
who
— имя аккаунта, на балансе которого изменилась сумма вестинга;
diff
— количество относительного изменения вестинга.
Вызов операции-действия changevest
происходит автоматически при изменении суммы вестинга на балансе каждого из пользователей. Смарт-контракт вестинг информирует об этом изменении смарт-контракт управления. Поскольку сумма вестинга на балансе пользователя влияет на вес голоса этого пользователя, то рейтинг делегата, за которого проголосовал этот пользователь, также будет зависеть от вестинга этого пользователя. Смарт-контракт управления корректирует рейтинг среди верхушки делегатов с учетом полученной информации об изменении. Данные таблицы смарт-контракта вестинга при этом не модифицируются.
При изменении списка верхушки делегатов также автоматически изменяется их авторизация.
Last updated