Коллекции таблиц (документов) в MongoDB, используемых в контрактах приложения Голос - коллекции контракта golos.vesting
Уважаемые пользователи!
В первой статье, посвященной хранению данных блокчейном CyberWay, упоминались широкие возможножности СУБД MongoDB. Данную информацию вы можете подчерпнуть также из официальной документации.
Настоящим постом мы заканчиваем предоставление коллекций контрактов приложения Голос.
Информацию о структуре таблиц в MongoDB вы можете найти в постах:
- Общее о структуре таблиц в MongoDB
- Коллекции таблиц (документов) в MongoDB, используемых в системных контрактах
- Коллекции таблиц (документов) в MongoDB, используемых в контрактах приложения Голос - коллекция контракта golos.charge
- Коллекции таблиц (документов) в MongoDB, используемых в контрактах приложения Голос - коллекция контракта golos.ctrl
- Коллекции таблиц (документов) в MongoDB, используемых в контрактах приложения Голос - коллекция контракта golos.publication
Коллекции контракта golos.vesting
accounts
Коллекция ACCOUNTS содержит документы (таблицы) с данными о балансах вестинга у аккаунтов. Количество созданных таблиц в БД для одного аккаунта соответствует количеству видов вестинга, которыми располагает данный аккаунт.
Пример документа:
"_id" : ObjectId(" ... "),
"vesting" : {
"amount" : NumberLong("93355649256"),
"decs" : NumberDecimal("6"),
"sym" : "GOLOS"
},
"delegated" : {
"amount" : NumberLong(0),
"decs" : NumberDecimal("6"),
"sym" : "GOLOS"
},
"received" : {
"amount" : NumberLong(0),
"decs" : NumberDecimal("6"),
"sym" : "GOLOS"
},
"unlocked_limit" : {
"amount" : NumberLong(0),
"decs" : NumberDecimal("6"),
"sym" : "GOLOS"
},
"_SERVICE_" : { ... }
Параметры
(asset) vesting
— количество вестинга, находящееся на балансе аккаунта;(asset) delegated
— общее количество вестинга, делегированное другим аккаунтам;(asset) received
— общее количество вестинга, полученное от других аккаунтов в виде доли от вознаграждения за делегирование, а также в виде делегированных данному аккаунту средств;(asset) unlocked_limit
— выделенная пользователем часть вестинга для «сжигания».
delegation
Коллекция DELEGATION содержит документы с данными о делегировании средств в виде вестинга. На каждую операцию делегирования delegate()
создается в БД отдельная таблица следующего вида:
{
"_id" : ObjectId(" ... "),
"id" : NumberDecimal("18"),
"delegator" : "walf31lwkcpy",
"delegatee" : "l44tnnby1yfn",
"quantity" : {
"amount" : NumberLong("18509738146"),
"decs" : NumberDecimal("6"),
"sym" : "GOLOS"
},
"interest_rate" : NumberDecimal("0"),
"payout_strategy" : NumberDecimal("0"),
"min_delegation_time" : "2018-06-20T18:46:45.000",
"_SERVICE_" : { ... }
}
Параметры
id
— идентификатор документа, созданный контрактомgolos.vesting
;delegator
— имя аккаунта, запустившего процесс делегирования вестинга;delegatee
— количество делегированных средств в виде вестинга;(asset) quantity
— количество возвращаемых средств в виде вестинга;interest_rate
— процент выплаты аккаунтуdelegator
от доходов аккаунтаdelegatee
за курирование;payout_strategy
— идентификатор стратегии делегирования;min_delegation_time
— дата и время, до истечения которого делегированные средства не могут быть возвращены аккаунтуdelegator
.
rdelegation
Коллекция RDELEGATION содержит документы с данными объекта возврата делегированных средств в виде вестинга.
Пример документа:
{
"_id" : ObjectId(" ... "),
"id" : NumberDecimal("18"),
"delegator" : "o.kiyqeszkx4",
"quantity" : {
"amount" : NumberLong("769323061452"),
"decs" : NumberDecimal("6"),
"sym" : "GOLOS"
},
"date" : "2019-03-03T08:19:54.000",
"_SERVICE_" : { ... }
}
Параметры
id
— идентификатор документа, созданный контрактомgolos.vesting
;delegator
— имя аккаунта, запустившего процесс возврата делегированных средств;(asset) quantity
— количество делегированных средств, подлежащих возврату;date
— дата и время, по истечении которого делегированные средства должны быть возвращены аккаунтуdelegator
;
После каждой операции undelegate()
у аккаунта-получателя делегированных средств значение объекта received
сразу уменьшается*, в то время как у аккаунта delegator
значение объекта delegated
будет уменьшено только по истечении определенного времени. Для сохранения балансов создан объект возврата делегированных средств, в поле quantity
которого записывается значение поля received
аккаунта-получателя (из коллекции ACCAUNTS). По истечении времени date
этот объект возврата уничтожается и у аккаунта delegator
значение поля delegated
уменьшится на значение quantity
.
*Пояснение: После выполнения операции делегированные средства переходят в "замороженное" состояние и возвращаются обратно делегатору равными долями в течение определенного времени. Для сохранения баланса средств в системе введен объект quantity
, в поле которого временно находятся "замороженные" средства. Они недоступны делегатору, и сумма делегированных им ранее средств будет уменьшаться только с возвращением к нему очередной доли.
stat
Коллекция STAT содержит документы с данными о наличии количества вестинга в системе. Каждому вестингу определенного вида отводится отдельная таблица (документ) в БД. Таблица создается вызовом операции create()
.
Пример документа:
{
"_id" : ObjectId(" ... "),
"supply" : {
"amount" : NumberLong("2435362722662510164"),
"decs" : NumberDecimal("6"),
"sym" : "GOLOS"
},
"notify_acc" : "gls.ctrl",
"_SERVICE_" : { ... }
}
Параметры
(asset) supply
— объект, содержащий данные о количестве вестинга определенного вида в системе;notify_acc
— имя аккаунта контракта управления для отправки уведомления в случае изменения баланса.
vestparams
Коллекция VESTPARAMS содержит документы со значениями параметров, устанавливаемых вызовом операции setparams()
. При каждом вызове setparams()
в базе данных появляется запись — новый документ с установленными значениями параметров.
Пример документа:
{
"_id" : ObjectId(" ... "),
"id" : NumberDecimal("15758546561230307328"),
"withdraw" : {
"intervals" : NumberDecimal("13"),
"interval_seconds" : NumberDecimal("120")
},
"min_amount" : {
"min_amount" : NumberDecimal("10000")
},
"delegation" : {
"min_amount" : NumberDecimal("5000000"),
"min_remainder" : NumberDecimal("15000000"),
"return_time" : NumberDecimal("120"),
"min_time" : NumberDecimal("0"),
"max_interest" : NumberDecimal("0")
},
"_SERVICE_" : { ... }
}
Параметры
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 содержит документы с данными о выводах (конвертациях) вестинга в токены.
Пример документа:
{
"_id" : ObjectId("5cb591cd2abe51000136ac08"),
"owner" : "usera",
"to" : "usera",
"number_of_payments" : NumberDecimal("13"),
"next_payout" : "2019-04-16T08:28:54.000",
"withdraw_rate" : {
"amount" : NumberLong(62954345),
"decs" : NumberDecimal("6"),
"sym" : "GOLOS"
},
"target_amount" : {
"amount" : NumberLong(818406491),
"decs" : NumberDecimal("6"),
"sym" : "GOLOS"
},
"_SERVICE_" : { ... }
}
Параметры
owner
— имя аккаунта, запустившего процесс конвертации. В процессе конвертации с баланса данного аккаунта снимается сумма средств в вестинге;to
— имя аккаунта, на баланс которого зачисляется сумма средств в токенах;number_of_payments
— количество выплат, совершаемых в процессе конвертации. Выплаты выполняется равными долями;next_payout
— дата и время начала выплаты очередной доли;(asset) withdraw_rate
— количество средств, составляющих одну долю;(asset) target_amount
— количество средств, выделенных на конвертацию.
Полное описание вы можете найти на гитхабе.
Cерия статей, раскрывающих идею и принципы функционирования блокчейна CyberWay и приложения Голос:
- Ответы на вопросы о CyberWay часть 4
- Ответы на вопросы о CyberWay. Часть 3
- Ответы на вопросы о CyberWay. Часть 2
- Ответы на вопросы о CyberWay. Часть 1
- Golos.io: Адаптация к блокчейну CyberWay
- Основные положения CyberWay
- CyberWay: предпосылки создания платформы. Основные отличия от EOS
- Разработка новой блокчейн-платформы CyberWay. Дорожная карта проекта
- Функционирование смарт-контрактов приложения Голос на платформе БЧ CyberWay
- Техническая реализация bandwidth на платформе CyberWay
- Testnet: Экспериментальная версия
- Кошелек golos_wallet для Bittrex на платформе CyberWay
- Общее о структуре таблиц в MongoDB
- Коллекции таблиц (документов) в MongoDB, используемых в системных контрактах
- Коллекции таблиц (документов) в MongoDB, используемых в контрактах приложения Голос - коллекция контракта golos.charge
- Коллекции таблиц (документов) в MongoDB, используемых в контрактах приложения Голос - коллекция контракта golos.publication
Каналы коммуникации с Golos•Core
- https://t.me/goloscoretc (решение технических вопросов, связанных с работой блокчейн, нод, api и др.)
- https://t.me/joinchat/BLwf_A118xQ57nsM1Q4MPA (канал для вноса предложений от комьюнити, обсуждение перехода на кодовую базу EOS)
- https://t.me/golos_tools (решение вопросов по различным интерфейсам и дополнительным инструментам, создаваемым Golos•Core)
- https://t.me/goloscore_analytics (решение вопросов по работе экономики блокчейн, статистическим экономическим данным, аналитике данных)
- https://t.me/goloscoretech (новостной канал, с актуальной информацией от Golos•Core)
Мы будем очень рады, если вы поддержите делегата @goloscore. Заходите на страничку https://golos.io/~witnesses голосуйте за делегата Golos•Core!
Спасибо за внимание и хорошего дня!
С уважением,
Команда Golos•Core: @andreypf, @korpusenko, @maslenitsa, @muhazokotuha, @zxcat, @annaeq, @anazarov79, @kaynarov, @s-medvedev, @eugin, @dedbaraded, @jimak.