Структура таблиц, используемых смарт-контрактами приложения Голос
Коллекции контракта golos.charge
balances
Коллекция BALANCES содержит документы с данными о состоянии батареек, выделенных пользователям. Пример документа:
Параметры
charge_symbol
— символ токена батарейки.token_code
— код токена, имеющего привязку к батарейкеcharge_id
.charge_id
— идентификатор батарейки.last_update
— время последнего обращения к батарейке.value
— значение заряда батарейки.
restorers
Коллекция RESTORERS содержит документы с описанием функций (математических выражений), по которым происходит восстановление ресурсов батареек. Пример документа:
Параметры
charge_symbol
— символ токена батарейки.token_code
— код токена, имеющего привязку к батарейкеcharge_id
.charge_id
— идентификатор батарейки.(object) func
— функция, задающее алгоритм восстановления ресурса батарейки:varssize
— математическое выражение;(array) operators
— массив операторов, определяющий порядок выполнения операций;(array) values
— массив, применяемых значений переменных и констант к операциям; Значения выбираются по индексам из массивовnums
иconsts
;(array) nums
— массив переменных, используемых в операциях;(array) consts
— массив констант, используемых в операциях.
max_prev
— максимально допустимое значение предыдущего ресурса батарейки.max_vesting
— максимально возможное значение вестинга, которое может быть израсходовано функцией в качестве аргумента в процессе восстановления ресурса батарейки.max_elapsed
— максимально допустимый период времени с момента предыдущего обращения к батарейке.
Коллекции контракта golos.ctrl
ctrlparams
Коллекция CTRLPARAMS содержит документы со значениями параметров, устанавливаемых вызовом операции setparams()
. При каждом вызове setparams()
в базе данных появляется запись — новый документ с установленными значениями параметров. Пример документа:
Параметры
id
— идентификатор документа, созданный контрактомgolos.ctrl
.(object) token
— символ токена, состоящий из набора прописных букв.(object) multisig
— имя аккаунта контрактаgolos.ctrl
.(object) witnesses
— максимально допустимое количество делегатов, которое может принимать решение (подписывать транзакции) от имени сообщества.(object) msig_perms
— данные о количествах подписей (из верхней части списка делегатов), необходимых для получения разрешения на выполнение действий от имени делегатов приложения:super_majority
— количество подписей, необходимых для получения высокого уровня разрешения;majority
— количество подписей, необходимых для получения среднего уровня разрешения;minority
— количество подписей, необходимых для получения низкого уровня разрешения.
(object) witness_votes
— максимально допустимое количество делегатов, за которое может проголосовать пользователь приложения.(object) update_auth_period
— период обновления авторизации для аккаунта(в секундах). Повторное обновление авторизации для аккаунта не выполняется, если с момента последнего обновления не прошло указанное количество секунд.
msigauths
Коллекция MSIGAUTHS содержит документы с перечнем делегатов, имеющих право на авторизацию от имени аккаунта контракта golos.ctrl
. Пример документа:
Параметры
id
— идентификатор документа, созданный контрактомgolos.ctrl
.(array) witnesses
— Список делегатов, имеющих право на авторизацию от имени аккаунта контрактаgolos.ctrl
. Каждый элемент массива имеет типstring
— имя аккаунта делегата.last_update
— дата и время последнего обновления списка делегатов.
witness
Коллекция WITNESS содержит документы (таблицы) с данными о делегате приложения. Для каждого делегата создается отдельная таблица следующего вида:
Параметры
name
— имя аккаунта делегата.url
— URL-адрес веб-сайта, на котором размещена информация о делегате.active
— активность делегата (true
- активный, false - неактивный).total_weight
— вес голоса делегата.
witnessvote
Коллекция WITNESSVOTE содержит документы (таблицы) с перечнем кандидатов в делегаты, за которых голосует пользователь. Для каждого голосующего пользователя создается отдельная таблица следующего вида:
Параметры
voter
— имя аккаунта, голосующего за кандидатов в делегаты.(array) witnesses
— перечень кандидатов в делегаты, за которых голосуетvoter
. Каждый элемент массива имеет типstring
— имя аккаунта. Количество элементов не должно превышать значение параметраwitness_votes
из таблицы коллекцииctrlparams
.
Коллекции контракта golos.publication
limit
Коллекция LIMIT содержит документы (таблицы) с описанием пользовательских действий, на которые установлены ограничения. В таблице указывается название действия (например, голосование или публикация поста), а также параметры, ограничивающие это действие. Таблица в БД создается вызовом операции setlimit()
. Пример документа:
Параметры
act
— название действия.charge_id
— идентификатор батарейки, ресурсами которой ограничивается действиеact
.price
— цена (в условных единицах) расходуемого ресурса батарейки с идентификаторомcharge_id
за совершаемое действиеact
.cutoff
— пороговое значение, ограничивающее ресурс батарейки снизу, при достижении которого действиеact
блокируется.vesting_price
— значении вестинга, которое необходимо выплатить пользователю за выполнение действияact
, в случае, если ресурс батарейки исчерпан.min_vesting
— минимальное значение вестинга, которое необходимо иметь пользователю на его балансе для выполнения действияact
.
message
Коллекция MESSAGE содержит документы с данными о созданных сообщениях в виде ответов на ранее полученные родительские сообщения или посты. Пример документа:
Параметры
id
— идентификатор документа, созданный контрактомgolos.publication
.permlink
— относительный адрес сообщения, представленный в виде строки.ref_block_num
— номер блока, содержащего транзакцию с отправкой настоящего сообщения.parentacc
— имя аккаунта-автора родительского сообщения, на которое сформировано настоящее сообщение. В случае нулевого значенияparentacc
настоящее сообщение является постом.parent_id
— идентификатор родительского сообщения.tokenprop
— размер вознаграждения (количество токенов).(array) beneficiaries
— массив, содержащий имена бенефициаров с полагающими им выплатами в виде процентов от общего вознаграждения бенефициарам.rewardweight
— вес поста на момент его закрытия с учетом размера вознаграждения за него.(object) state
:netshares
— числовое значение всех голосов. Определяется как произведение количества всех голосов на общее количество вестинга всех голосующих.voteshares
— числовое значение всех позитивных голосов. Определяется как произведение количества всех позитивных голосов на количество вестинга всех участников, проголосовавших «за».sumcuratorsw
— суммарный вес голосов всех кураторов, используемый при определении размера их вознаграждения. Вознаграждение куратора определяется как произведение общей суммы вознаграждения кураторам на вес голоса данного куратора, деленное наsumcuratorsw
.
childcount
— количество дочерних сообщений.level
— глубина вложенности дочернего сообщения относительно родительского.curators_prcnt
— процент (доля) выплаты кураторам от общей суммы вознаграждения.
pstngparams
Коллекция PSTNGPARAMS содержит документы со значениями параметров, устанавливаемых вызовом операции setparams()
. После каждого вызова setparams()
в базе данных появляется запись — новый документ с установленными значениями параметров. Пример документа:
Параметры
(string) id
— идентификатор документа, созданный контрактомgolos.publication
.(object) max_vote_changes
— максимально возможное количество переголосований пользователя за пост.(object) cashout_window
— данные об окне выплат за пост:window
— интервал времени (в секундах), по истечении которого осуществляется выплата вознаграждения за пост;upvote_lockout
— интервал времени, по истечении которого прекращаются приниматься голоса в виде «upvote» за пост.
(object) max_beneficiaries
— максимально возможное количество бенефициаров.(object) max_comment_depth
— максимально возможное количество уровней вложенности дочерних комментариев относительно родительского.(object) social_acc
— имя аккаунта контрактаgolos.social
.(object) referral_acc
— имя аккаунта контрактаgolos.referral
.(object) curators_prcnt
— выделяемая доля кураторам от вознаграждения:min_curators_prcnt
— минимально возможная доля, выделяемая кураторам от вознаграждения;max_curators_prcnt
— максимально возможная доля, выделяемая кураторам от вознаграждения.
rewardpools
Коллекция REWADPOOLS содержит документы (таблицы) с данными о правилах распределения вознаграждения между пользователями за публикации постов и курирование. В таблицах также содержатся данные о незакрытых постах и об оставшихся вознаграждениях пуле. Таблица в БД создается после каждого изменения правил вознаграждения авторов постов и кураторов с использованием операции setrules()
. Пример документа:
Параметры
created
— время создания пула вызовом операции setrules(). С момента публикации поста и окончания голосования правила распределения вознаграждения могут быть изменены. Параметр позволяет определить, к какому пулу относится пост.(object) rules
— описание правила по распределению вознаграждения в рамках приложения:(object) mainfunc
— функция в виде математического выражения, реализующая алгоритм распределения вознаграждения автора и кураторов поста:(object) code
— сгенерированный псевдокод функцииmainfunc
, содержащий операции и последовательность их выполнения:varssize
— математическое выражение;operators
— массив операторов, определяющий порядок выполнения операций;values
— массив, применяемых значений переменных и констант к операциям. Значения выбираются по индексам из массивовnums
иconsts
;nums
— массив переменных, используемых в операциях;consts
— массив констант, используемых в операциях;
maxarg
— максимально возможное суммарное вознаграждение.
(object) curationfunc
— функция в виде математического выражения, реализующая алгоритм распределения вознаграждения для каждого из кураторов:(object) code
— сгенерированный псевдокод функцииcurationfunc
, содержащий операции и последовательность их выполнения (аналогично сmainfunc
);maxarg
— максимально возможное вознаграждение.
(object) timepenalty
— правила, установленные для штрафного окна с учетом его длительности, времени голосования и веса голосов.(integer) maxtokenprop
— максимальная доля от вознаграждения (в токенах).
(object) state
— данные о состоянии пула вознаграждений и находящихся в пуле незакрытых постов. Данные используются в расчетах вознаграждений за посты, в том числе:msgs
— сообщения о находящихся в пуле незакрытых постах;(asset) funds
— количество токенов, находящихся в пуле;(object) rshares
— аргумент функции для расчета вознаграждений (с учетом веса голоса аккаунта и его количества вестинга);(object) rsharesfn
— функция для расчета вознаграждений за пост.
vote
Коллекция VOTE содержит таблицы с данными о голосовании за публикацию. Пример таблицы:
Параметры
id
— идентификатор документа, созданный контрактомgolos.publication
.message_id
— идентификатор публикации.voter
— имя голосующего аккаунта.weight
— вес голоса аккаунтаvoter
.time
— время голосования (в секундах).count
— количество поданных голосов.delegators
— количество проголосовавших делегатов.curatorsw
— вес куратора, используемый при определении размера его вознаграждения.rshares
— значение голоса, положительное или отрицательное число, поставленное голосующим. Определяется как произведение голоса на количество вестинга голосующего. Голос вида «downvote» соответствует «-1», голос вида «upvote» соотвествует «+1».
Коллекции контракта golos.vesting
accounts
Коллекция ACCOUNTS содержит документы (таблицы) с данными о балансах вестинга у аккаунтов. Количество созданных таблиц в БД для одного аккаунта соответствует количеству видов вестинга, которыми располагает данный аккаунт. Пример документа:
Параметры
(asset) vesting
— количество вестинга, находящееся на балансе аккаунта.(asset) delegated
— общее количество вестинга, делегированное другим аккаунтам.(asset) received
— общее количество вестинга, полученное от других аккаунтов в виде доли от вознаграждения за делегирование, а также в виде делегированных средств данному аккаунту.(asset) unlocked_limit
— выделенная пользователем часть вестинга для «сжигания».
delegation
Коллекция DELEGATION содержит документы с данными о делегировании средств в виде вестинга. На каждую операцию делегирования delegate()
создается в БД отдельная таблица следующего вида:
Параметры
id
— идентификатор документа, созданный контрактомgolos.vesting
.delegator
— имя аккаунта, запустившего процесс делегирования вестинга.delegatee
— количество делегированных средств в виде вестинга.(asset) quantity
— количество возвращаемых средств в виде вестинга.interest_rate
— процент выплаты аккаунтуdelegator
от доходов аккаунтаdelegatee
за курирование.payout_strategy
— идентификатор стратегии делегирования.min_delegation_time
— дата и время, до истечения которого делегированные средства не могут быть возвращены аккаунтуdelegator
.
rdelegation
Коллекция RDELEGATION содержит документы с данными объекта возврата делегированных средств в виде вестинга. Пример документа:
Параметры
id
— идентификатор документа, созданный контрактомgolos.vesting
.delegator
— имя аккаунта, запустившего процесс возврата делегированных средств.(asset) quantity
— количество делегированных средств, подлежащих возврату.date
— дата и время, по истечении которого делегированные средства должны быть возвращены аккаунтуdelegator
.
После каждой операции undelegate()
у аккаунта-получателя делегированных средств значение объекта received
сразу уменьшается, в то время как у аккаунта delegator
значение объекта delegated
будет уменьшено только по истечении определенного времени. Для сохранения балансов создан объект возврата делегированных средств, в поле quantity
которого записывается значение поля received
аккаунта получателя (из коллекции ACCAUNTS). По истечении времени date
этот объект возврата уничтожается и у аккаунта delegator
значение поля delegated
уменьшится на значение quantity
.
stat
Коллекция STAT содержит документы с данными о наличии количества вестинга в системе. Каждому вестингу определенного вида отводится отдельная таблица (документ) в БД. Таблица создается вызовом операции create()
. Пример документа:
Параметры
(asset) supply
— объект, содержащий данные о количестве вестинга определенного вида в системе.notify_acc
— имя аккаунта контракта управления для отправки уведомления в случае изменения баланса.
vestparams
Коллекция VESTPARAMS содержит документы со значениями параметров, устанавливаемых вызовом операции setparams()
. При каждом вызове setparams()
в базе данных появляется запись — новый документ с установленными значениями параметров. Пример документа:
Параметры
id
— идентификатор документа, созданный контрактомgolos.vesting
.(object) withdraw
— параметры, используемые при выводе вестинга в токены:intervals
— количество интервалов, необходимых для вывода вестинга частями;interval_seconds
— длительность интервала (в секундах).
(object) min_amount
— минимальное значение вестина, ниже которого конвертирование его в токены не выполняется.(object) delegation
— параметры делегирования:min_amount
— минимально возможное количество вестинга для делегирования или возврата делегированного;min_remainder
— минимальный остаток делегированного;return_time
— время возврата делегированных средств (в секундах);min_time
— минимальное время делегирования (в секундах);max_interest
— максимально допустимый процент вознаграждения за делегирование средств.
withdrawal
Коллекция WITHDRAWAL содержит документы с данными о выводах (конвертациях) вестинга в токены. Пример документа:
Параметры
owner
— имя аккаунта, запустившего процесс конвертации. В процессе конвертации с баланса данного аккаунта снимается сумма средств в вестинге.to
— имя аккаунта, на баланс которого зачисляется сумма средств в токенах.number_of_payments
— количество выплат, совершаемых в процессе конвертации. Выплаты выполняется равными долями.next_payout
— дата и время начала выплаты очередной доли.(asset) withdraw_rate
— количество средств, составляющих одну долю.(asset) target_amount
— количество средств, выделенных на конвертацию.
Last updated