Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
goloscore
5 лет назад

Коллекции таблиц (документов) в MongoDB, используемых в контрактах приложения Голос - коллекции контракта golos.vesting

Уважаемые пользователи!

В первой статье, посвященной хранению данных блокчейном CyberWay, упоминались широкие возможножности СУБД MongoDB. Данную информацию вы можете подчерпнуть также из официальной документации.

Настоящим постом мы заканчиваем предоставление коллекций контрактов приложения Голос.

Информацию о структуре таблиц в MongoDB вы можете найти в постах:

Коллекции контракта 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 и приложения Голос:


Каналы коммуникации с 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.


8
57.894 GOLOS
На Golos с August 2017
Комментарии (2)
Сортировать по:
Сначала старые