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