Новости Golos•Core. Встреча в Discord 01.11.18: Функционирование смарт-контрактов приложения Голос на платформе БЧ CyberWay
Добрый день!
В преддверии очередной встречи на платформе Дискорд, которая состоится в этот четверг 1 ноября в 16:00 по МСК, просим обратить ваше внимание на этот пост, который покрывает все основные вопросы, связанные с темой устройства приложение Голос на платформе БЧ CyberWay.
Итак, в состав приложения Голос входят 5 взаимодействующих смарт-контрактов:
- Смарт-контракт управления Control;
- Смарт-контракт вестинга Vesting;
- Смарт-контракт эмиссии Emission;
- Смарт-контракт публикаций Publication;
- Смарт-контракт воркеров Workers.
В системе имеется смарт-контракт управления Control, предназначенный для выборов делегатов сообщества. Каждому пользователю присваивается значение веса в соответствии с объемом акций, хранящимся на его балансе в смарт-контракте Vesting. Когда пользователь отдает свой голос за кандидата в делегаты, выполняется подсчет набранного делегатом количества голосов в пропорции от объема акций проголосовавших пользователей. Если делегат набирает необходимое количество голосов для вхождения в топ-21, его ключ включается в MultiSig-аккаунт приложения, который может управлять экономикой сообщества.
В случае БЧ Голос у нас имеется проблема, связанная с тем, что пользователь может проголосовать 30 раз за кандидатов одним и тем же весом. Данный метод голосования известен как DPoS-30. В смарт-контракте Control планируется сделать деление веса проголосовавшего на количество отданных голосов. Для переноса данных из Голоса распределение голосов за делегатов сохранено в соответствии с алгоритмом DPoS-30.
Алгоритм DPoS-30 используется также в EOS. В реализации БЧ CyberWay предусматривается удаление этого алгоритма с его заменой на DPoS, а также с увеличение количества блок-продюсеров БЧ. Для увеличения количества блок-продюсеров необходимо будет переработать алгоритм доставки блоков между нодами - построить такую топологию сети, которая бы позволяла масштабировать сеть несмотря на высокую децентрализацию. Наша основная цель - сделать БЧ CyberWay и приложение Голос на его платформе децентрализованными.
Одной из основных обязанностей, которая возлагается на делегатов сообщества Голос на платформе БЧ CyberWay – это обновление смарт-контрактов сообщества на новую версию. Это становится возможным благодаря тому, что правами на обновление смарт-контрактов наделяется MultiSig-аккаунт, в который включаются ключи выбранных делегатов.
Выборы делегатов осуществляются через балансы пользователей в смарт-контракте Vesting. Данный смарт-контракт является настолько важным, что внутри команды возникают периодические дискуссии, в которых обсуждается необходимость сделать его системным, подобно смарт-контракту eosio.token, который хранит балансы пользователей в токенах. Главным аргументом за конвертацию смарт-контракта Vesting в системный является то, что это повысит уровень доверия пользователей к нему. Смарт-контракт Vesting хранит на своем счету переведенные пользователями токены, то есть учитывает балансы пользователей в акциях.
Команда ГолосКор на текущий момент не переименовывала системные контракты eosio, так как это позволяет быстрее затягивать изменения из кодовой базы EOS, но планирует сделать это ближе к старту БЧ CyberWay.
К системным контрактам относятся:
- eosio.bios - предоставляющий описание основных структур для обмена данными между смарт-контрактами и БЧ;
- eosio.token - предоставляющий функции по управлению токенами в БЧ;
- eosio.system - предоставляющий функции по выбору БП, и регулирующий правила покупки бендвича в системе, управление аккаунтами в системе. Команда ГолосКор планирует существенно переработать данный смарт-контракт, так как мы планируем сделать платформу децентрализованной;
- eosio.msig - предоставляющий функции по выполнению предложенных (proposal) транзакций;
- eosio.sudo - предоставляет функции по выполнению транзакции от имени другого пользователя.
В смарт-контракте Vesting имеется ряд констант, которые позволяют настраивать поведение вестинга. В частности к данным параметрам относятся:
- Срок вывода вестинга в токены;
- Количество порций вывода вестинга в токены;
- Минимальный срок делегирования вестинга;
- Минимальная сумма делегирования вестинга;
- Максимальный процент, получаемый делегатором за использование вестинга;
- Ряд некоторых других параметров.
На следующем этапе после прототипа, команда ГолосКор планирует вынести данные константы в настройки, которые нужно будет настраивать с помощью MultiSig-аккаунта делегатов.
Эмиссия токенов приложения Голос регулирует через смарт-контракт Emission. Сгенерированную эмиссию смарт-контракт Emission переводит на балансы остальных смарт-контрактов, которые уже распределяют токены по своим правилам (см. картинку ниже).
В обязанности делегатов сообщества Голос на платформе БЧ CyberWay входит настройка параметров смарт-контракта эмиссии, в том числе:
- Установление процента роста токенов;
- Установление процентов распределения эмиссии между смарт-контрактами приложения;
- Установление оплаты делегатам сообщества Голос;
- И ряд других.
Наиболее значимый смарт-контракт блог-приложения Голос – это смарт-контракт Publication. Данный смарт-контракт поддерживает следующие функции:
- Публикация постов;
- Комментирование постов;
- Курирование постов;
- Назначение бенефициаров на посты;
- Прочие функции, реализованные на платформе Голос.
В обязанности делегатов сообщества Голос входит:
- Задание кривых вознаграждения авторам и кураторам.
Кривая задается через ввод ее в текстовом виде. В смарт-контракт встроен алгоритм разбиения введенного выражения на атомы с последующим вычислением результата в момент выплаты вознаграждения; - Установление параметров распределения награды между авторами и кураторами;
- Установление параметров на распределение авторской награды в токенах и вестинге;
- Установление правила штрафного окна;
- Установление ограничений на частоту совершаемых действий, в зависимости от vesting'а пользователя.
Логика поведения смарт-контракта воркеров была подробно изложена в тематическом посте.
Каналы коммуникации с 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: @korpusenko, @andreypf, @maslenitsa, @muhazokotuha, @zxcat, @annaeq, @anazarov79, @kaynarov, @s-medvedev