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

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

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

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

Мы продолжаем описывать базу данных. В настоящей публикации предоставляем вам коллекции контракта golos.publication. Нам осталось рассмотреть коллекции коллекции golos.vesting, об этом в следующем посте.

Коллекции контракта golos.publication

limit

Коллекция LIMIT содержит документы (таблицы) с описанием пользовательских действий, на которые установлены ограничения. В таблице указывается название действия (например, голосование или публикация поста), а также параметры, ограничивающие это действие. Таблица в БД создается вызовом операции setlimit().

Пример документа:

  "_id" : ObjectId(" ... "),
       "act" : NumberDecimal("0"),
       "charge_id" : NumberDecimal("0"),
       "price" : NumberLong(-1),
       "cutoff" : NumberLong(0),
       "vesting_price" : NumberLong(0),
       "min_vesting" : NumberLong(0),
       "_SERVICE_" : { ... }
Параметры
  • act — название действия;
  • charge_id — идентификатор батарейки, ресурсами которой ограничивается действие act;
  • price — цена (в условных единицах) расходуемого ресурса батарейки с идентификатором charge_id за совершаемое действие act;
  • cutoff — пороговое значение, ограничивающее ресурс батарейки снизу, при достижении которого действие act блокируется;
  • vesting_price — значении вестинга, которое необходимо выплатить пользователю за выполнение действия act в том случае, если ресурс батарейки исчерпан;
  • min_vesting — минимальное значение вестинга, которое необходимо иметь пользователю на его балансе для выполнения действия act.

message

Коллекция MESSAGE содержит документы с данными о созданных сообщениях в виде ответов на ранее полученные родительские сообщения или посты.

Пример документа:

{
    "_id" : ObjectId("5cb6c9252abe5100014c5d18"),
    "id" : NumberDecimal("4"),
    "permlink" : "re-hadesfightswithganymedeagainstselene-1555482917925",
    "ref_block_num" : NumberDecimal("11562"),
    "date" : NumberDecimal("1555482918000000"),
    "parentacc" : "d5gqchmbgrdj",
    "parent_id" : NumberDecimal("3"),
    "tokenprop" : NumberLong(0),
    "beneficiaries" : [ ],
    "rewardweight" : NumberLong("4611686018427387904"),
    "state" : {
        "netshares" : NumberLong("854259561865216"),
        "voteshares" : NumberLong("854259561865216"),
        "sumcuratorsw" : NumberLong("457078773461799504")
    },
    "childcount" : NumberDecimal("0"),
    "level" : NumberDecimal("1"),
    "curators_prcnt" : NumberLong("415051741658464911"),
    "_SERVICE_" : { ... }
}
Параметры
  • 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() в базе данных появляется запись — новый документ с установленными значениями параметров.

Пример документа:

     "_id" : ObjectId(" ... "),
       "id" : NumberDecimal("12552436324427411456"),
       "max_vote_changes" : {
               "value" : NumberDecimal("5")
       },
       "cashout_window" : {
               "window" : NumberDecimal("120"),
               "upvote_lockout" : NumberDecimal("15")
       },
       "max_beneficiaries" : {
               "value" : NumberDecimal("64")
       },
       "max_comment_depth" : {
               "value" : NumberDecimal("127")
       },
       "social_acc" : {
               "value" : "gls.social"
       },
       "referral_acc" : {
               "value" : ""
       },
       "curators_prcnt" : {
               "min_curators_prcnt" : NumberDecimal("0"),
               "max_curators_prcnt" : NumberDecimal("9000")
       },
       "_SERVICE_" : { ... }
Параметры
  • (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().

Пример документа:

"_id" : ObjectId(" ... "),
    "created" : NumberDecimal("1554995760000000"),
    "rules" : {
            "mainfunc" : {
                "code" : {
                        "varssize" : NumberDecimal("1"),
                        "operators" : [
                            NumberDecimal("0")
                        ],
                        "values" : [
                            {
                            "kind" : NumberDecimal("1"),
                             "idx" : NumberDecimal("0")
                            }
                        ],
                        "nums" : [ ],
                        "consts" : [ ]
                },
                "maxarg" : NumberLong("9223372036854771712")
            },
            "curationfunc" : {
                "code" : {
                        "varssize" : NumberDecimal("1"),
                        "operators" : [
                            NumberDecimal("0"),
                            NumberDecimal("26"),
                            NumberDecimal("4"),
                            NumberDecimal("4")
                        ],
                        "values" : [
                            {
                            "kind" : NumberDecimal("0"),
                            "idx" : NumberDecimal("0")
                            },
                            {
                            "kind" : NumberDecimal("0"),
                            "idx" : NumberDecimal("3")
                            }
                        ],
                        "nums" : [
                            NumberLong("9223372036854771712"),
                            NumberLong("16384000000000000"),
                            NumberLong(409),
                            NumberLong(4096)
                        ],
                        "consts" : [ ]
                },
                "maxarg" : NumberLong("9223372036854771712")
            },
            "timepenalty" : {
                "code" : {
                        "varssize" : NumberDecimal("1"),
                        "operators" : [
                            NumberDecimal("0"),
                            NumberDecimal("0"),
                            NumberDecimal("4")
                        ],
                        "values" : [
                            {
                            "kind" : NumberDecimal("1"),
                            "idx" : NumberDecimal("0")
                            },
                            {
                            "kind" : NumberDecimal("0"),
                            "idx" : NumberDecimal("0")
                            }
                        ],
                        "nums" : [
                            NumberLong(7372800)
                        ],
                        "consts" : [ ]
                },
                "maxarg" : NumberLong(7372800)
            },
            "maxtokenprop" : NumberLong("2305843009213693952")
    },
    "state" : {
            "msgs" : NumberDecimal("0"),
            "funds" : {
                "amount" : NumberLong(249427023),
                "decs" : NumberDecimal("3"),
                "sym" : "GOLOS"
            },
            "rshares" : {
                "binary" : BinData(0,"AQAAAAAAAAAAAAAAAAAAAAA="),
                "string" : "0"
            },
            "rsharesfn" : {
                "binary" : BinData(0,"AQAAAAAAAAAAAAAAAAAAAAA="),
                "string" : "0"
            }
    },
    "_SERVICE_" : { ... }

Параметры

  • 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" : ObjectId("5cb58d1e2abe510001446e02"),
    "id" : NumberDecimal("0"),
    "message_id" : NumberDecimal("5"),
    "voter" : "tst4dathqbji",
    "weight" : NumberLong(0),
    "time" : NumberDecimal("1555402017000000"),
    "count" : NumberLong(2),
    "delegators" : [ ],
    "curatorsw" : NumberLong(0),
    "rshares" : NumberLong(0),
    "_SERVICE_" : { ... }
}
Параметры
  • id — идентификатор документа, созданный контрактом golos.publication;
  • message_id — идентификатор публикации;
  • voter — имя голосующего аккаунта;
  • weight — вес голоса аккаунта voter;
  • time — время голосования (в секундах);
  • count — количество поданных голосов;
  • delegators — количество проголосовавших делегатов;
  • curatorsw — вес куратора, используемый при определении размера его вознаграждения;
  • rshares — значение голоса, положительное или отрицательное число, поставленное голосующим. Определяется как произведение голоса на количество вестинга голосующего. Голос вида «downvote» соответствует «-1», голос вида «upvote» соотвествует «+1».

Полное описание вы можете найти на гитхабе.


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.


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