Результаты деятельности команды Core за период 11.02.19 -22.02.19 гг.
Уважаемые делегаты и члены коммьюнити.
Очередной двухнедельный спринт подошел к концу, в связи с чем команда Голос Кор спешит вас проинформировать о результатах за этот период.
На этой неделе мы опубликовали дорожную карту проекта, которая покрывает этапы на пути к Mainnet и позволяет взглянуть на объемы работ с точки зрения развертывания Testnet с приложением Голоса на нескольких нодах и последующей миграции данных. Просим обратить ваше внимание на этот пост, а также следить за новыми постами, посвященными CyberWay в преддверии транзита, которые будут опубликованы в ближайшее время.
Овервью работы команды за период с 11 по 22 февраля 2019гг:
- Начата работа по созданию инструмента, который позволит осуществить миграцию данных и состояния системы с блокчейна Голос на блокчейн CyberWay.
- Из программного кода CyberWay удалены функции, унаследованные от EOS, которые могли бы наделять контракт привилегированным режимом.
- Доработаны операции по предоставлению пользователям сетевых ресурсов.
- Проведена работа по стабилизации функционирования блокчейна CyberWay.
- Создан кошелек golos_wallet для трансферных операций с Bittrex для пользователей Голос.
- Продолжена работа по расширению возможностей смарт-контрактов.
- Продолжена работа в части реализации функциональности воркеров, в том числе:
- Созданы методы прогнозирования доходов и расходов по выполнению работы, а также запрета работы, на выполнение которой недостаточно средств;
- Добавлена возможность отменять платежи за работу в случае допущенных ошибок при голосовании за принятие работы.
CyberWay
Предоставление в пользование ресурсов блокчейна
Завершенные задачи:
Добавлена виртуальная операция
provideram
, позволяющая провайдеру предоставлять пользователю свою память для хранения его данных (например, по аналогии с веб-сайтом golos.io, на котором размещаются посты своих пользователей).
https://github.com/goloschain/cyberway/issues/248Добавлена встроенная-функция (intrinsic func.) get_ram_provider, позволяющая смарт-контракту выбирать память для хранения данных (использовать ли собственную память или память, предоставляемую провайдером).
https://github.com/goloschain/cyberway/issues/269Для отладочных работ, а также для демонстрации использования встроенных функций (‘intrinsic’), создан дополнительный смарт-контракт. Доработка позволяет управлять распределением памяти при наличии операции provideram.
https://github.com/GolosChain/cyberway.cdt/issues/45В параметры утилиты
cleos
добавлен параметр --ram-provider. Наличие данного параметра позволяет добавлять операциюprovideram
в выполняемую транзакцию.
https://github.com/GolosChain/cyberway/issues/288Часть функциональности стейк-контракта перенесена в ноду. Это необходимо для привязки стейка пользователя к ограничениям на использование ресурсов блокчейна.
https://github.com/GolosChain/cyberway/issues/295
https://github.com/GolosChain/cyberway.contracts/issues/89
Задачи In progress:
Реализована виртуальная операция
requestram
, позволяющая запросить у провайдера память для хранения данных. Добавлена встроенная функцияconfirm_approve_ram
необходимая контракту провайдера для подтверждения предоставления памяти пользователю.
https://github.com/GolosChain/cyberway/issues/249Для отладочных работ, а также для демонстрации использования встроенных функций (‘intrinsic’) созданы дополнительные смарт-контракты. Доработка позволяет продемонстрировать работу виртуальной операции requestram.
https://github.com/GolosChain/cyberway.cdt/issues/53
- Работа над тестами смарт-контрактов, демонстрирующих работу операции requestram.
https://github.com/GolosChain/cyberway.cdt/issues/61.
Подготовка к транзиту (Initiate transit)
Задачи In progress:
Создать инструмент по переносу данных из стейта Голоса в начальное (genesis) состояние БЧ Cyberway.
Источник данных — отдельный файл, см.ниже.
https://github.com/GolosChain/cyberway/issues/304Текущее состояние Голоса хранится в файле, формат которого непереносимый и не может быть прочитан Cyberway.
Необходимо создать инструмент для Голоса, создающий из файла стейта файл в переносимом формате, который можно будет прочитать в Cyberway (пред.задача).
https://github.com/GolosChain/golos/issues/1133.
Запуск тестнета с несколькими блок-продюсерами (multinode)
Завершенная задача:
- Реализована базовая версия назначения блок-продюсеров по их балансам в стейк-контракте.
https://github.com/GolosChain/cyberway.contracts/issues/90.
Задача In progress:
- Добавление загрузки и настройки контрактов cyber.stake и cyber.govern в процедуру запуска тестнета.
https://github.com/GolosChain/golos.contracts/issues/472.
Реализация децентрализационного управления БЧ CyberWay. Ликвидация "режима Бога" в БЧ
Завершенные задачи:
Унаследованное от EOS название системного аккаунта
eosio
переименовано вcyber
.
https://github.com/GolosChain/cyberway/issues/251Внесены изменения в системные контракты и контракты приложения Голос для работы с переименованным (в
cyber
) системным аккаунтом.
https://github.com/goloschain/cyberway.contracts/issues/85
https://github.com/GolosChain/golos.contracts/issues/459Ограничение возможностей привилегированного режима.
В EOS любой контракт можно наделить привилегированными правами, позволяющими выполнять экшены без проверки подписей и с неограниченными ресурсами. В CyberWay такая возможность для смарт-контрактов удалена. Исключение составляют только системные контракты cyber и cyber.msig, которые наделены дополнительными привилегиями, необходимыми для функционирования системы. Изменить привилегированность можно исключительно хардфорком.
https://github.com/GolosChain/cyberway/issues/128Обновлены контракты и cdt для поддержки ограничений привилегированности.
https://github.com/GolosChain/cyberway.contracts/issues/93
https://github.com/GolosChain/cyberway.cdt/issues/56Возможность изменения системных контрактов исключительно хардфорком (подразумевает явное согласие участников сети).
https://github.com/GolosChain/cyberway/issues/29.
Стабилизация выполнения кода БЧ CyberWay
Завершенные задачи:
Реализован метод по восстановлению состояния записей в стейте блокчейна для случая, когда запись удалялась и создавалась более одного раза в одной и той же транзакции.
https://github.com/GolosChain/cyberway/issues/299В библиотеке смарт-контрактов реализована функциональность по использованию общего кеша записей из разных инстансов мульти-индекса.
https://github.com/GolosChain/cyberway.cdt/issues/50В библиотеке смарт-контрактов реализована функциональность по очистке кеша мульти-индекса для случая изменения данных на уровне смарт-контракта и блокчейна.
https://github.com/GolosChain/cyberway.cdt/issues/49.
Задачи для интеграции с Bittrex
Завершенная задача:
- Разработан кошелек
golos_wallet
, являющийся эмуляторомcli_wallet
, для биржи Bittrex, в том числе выполнены следующие работы:
Проведен анализ кода кошелькаcli_wallet
для блокчейна Голос;
Разработана архитектура приложенияgolos_wallet
;
Реализация кошелька на основе кодовой базы prism-service.
Задача In progress:
- Добавить в кошелёк менеджмент функционал. (https://github.com/GolosChain/cyberway.golos_wallet/issues/3).
Расширение функциональных возможностей и доработки смарт-контрактов Голоса
Завершенные задачи:
Добавлена валидация параметров ‘permlink’, ‘title’, ‘body’ для предотвращения передачи некорректных данных при создании поста/сообщения.
https://github.com/GolosChain/golos.contracts/issues/450Добавлен параметр частоты обновления прав доступа в механизм настроек смарт-контракта ‘ctrl’.
https://github.com/GolosChain/golos.contracts/issues/85Добавлен ref_block_num в структуру ключа. Доработка позволила создавать несколько постов за один ‘permlink’.
https://github.com/GolosChain/golos.contracts/issues/429В смарт-контракт “токен” добавлен метод , позволяющий проведение транзакций без нотификаций, а также метод для выплаты вознаграждения пользователям.
https://github.com/GolosChain/cyberway.contracts/issues/54Изменен метод выплаты авторам на проведение транзакции без нотификаций.
https://github.com/GolosChain/golos.contracts/issues/377Изменены выплаты делегатам на проведение транзакции без нотификаций.
https://github.com/GolosChain/golos.contracts/issues/375Изменены выплаты бенефициарам на проведение транзакции без нотификаций.
https://github.com/GolosChain/golos.contracts/issues/429.
Задачи In progress:
Удаление неконсенсусных данных и закрытых постов из контракта публикации.
https://github.com/GolosChain/golos.contracts/issues/382Изменение метода проверки прав доступа при добавлении реферала. Доработка устранила возможность добавления множества рефералов и, соответственно, получения от них дохода.
https://github.com/GolosChain/golos.contracts/issues/374.
Задачи по текущему блокчейну:
Воркеры
Завершенные задачи:
Реализован метод подсчета доходов на очередной месяц. Реализован метод проверки результата выполнения ТЗ для завершающей стадии принятия работы. https://github.com/GolosChain/golos/issues/1073
Реализован метод вычисления расходов на ТЗ на очередной месяц. Доходы и расходы хранятся в полях объекта dgp, кроме того поле с расходами по каждому ТЗ хранится в каждом ТЗ.
https://github.com/GolosChain/golos/issues/1083Добавлены методы для поддержки воркеров в cli-wallet. https://github.com/GolosChain/golos/issues/1028
Ограничен срок, в течение которого делегаты могут давать одобрение на ТЗ. Также ограничен срок для принятия результатов. Оба срока устанавливаются голосованием делегатов.
https://github.com/GolosChain/golos/issues/1063Реализован метод вычисления расходов на ТЗ за весь платежный период, а также доходов в случае принятия результатов выполнения ТЗ. https://github.com/GolosChain/golos/issues/1106
Изменены права на выполнение следующий операций смарт-контракта публикаций:
worker_techspec_approve_operation;
worker_assign_operation;
Worker_result_approve_operation.
https://github.com/GolosChain/golos/issues/1095
https://github.com/GolosChain/golos/issues/1096
https://github.com/GolosChain/golos/issues/1099Переименованы методы worker_result_fill_operation и worker_result_clear_operation в worker_result_operation и worker_result_delete_operation соответственно. https://github.com/GolosChain/golos/issues/1097 https://github.com/GolosChain/golos/issues/1098
Удалены поля specification_eta и development_eta (срок написания ТЗ и срок разработки) из объекта ТЗ и создающей его операции. https://github.com/GolosChain/golos/issues/1100
Внесен запрет на замену типа воркер-пропозала (premade_work или task) после одобрения ТЗ.
https://github.com/GolosChain/golos/issues/1101Добавлено поле в ТЗ для хранения статуса: "открыто", "одобрено", "закрыто". https://github.com/GolosChain/golos/issues/1120
Добавлено условие на закрытие ТЗ (статус "закрыто"). ТЗ считается закрытым, если 75% делегатов голосуют “против”. Это позволит остальным делегатам не тратить время на рассмотрение некомпетентного ТЗ.
https://github.com/GolosChain/golos/issues/1103Выявлен и устранен баг. Правка запрещает создавать промежуточный результат для ТЗ, по которому не начата работа.
https://github.com/GolosChain/golos/issues/1121Перенесены неконсенсусные поля из объекта пропозала в отдельный объект, который хранится в плагине worker_api, если плагин включен. Заполнение этих полей также перенесено в плагин из эвалюаторов. Это упрощает код эвалюаторов, а также позволяет при необходимости сэкономить память на хранении этих полей, отключив плагин. Список полей:
- created - дата и время создания ТЗ;
- modified - дата и время последнего изменения ТЗ;
- net_rshares - рейтинг поста ТЗ (не самого ТЗ).
https://github.com/GolosChain/golos/issues/1109
Удален специальный объект для хранения промежуточного результата, и создающий его эвалюатор. Промежуточные результаты будут сохраняться в обычных комментариях к посту ТЗ.
https://github.com/GolosChain/golos/issues/1104Реализовано удаление старых объектов с информацией “одобрено/не одобрено” ТЗ. Удаление происходит на стадии заключительного одобрения ТЗ, а также если у ТЗ истек срок голосования. Удаление можно включить или выключить для своей ноды (а не голосованием для всех нод) с помощью настройки в config.ini https://github.com/GolosChain/golos/issues/1126
Изменены поля для идентификации поступающих предложений и ТЗ. https://github.com/GolosChain/golos/issues/1123
Добавлена операция worker_payment_approve_operation, дающая возможность прекращать платежи по уже оплаченному ТЗ, в случае, если делегатами была допущена ошибка при принятии работы. В случае неодобрения платежей от 75% делегатов статус предложения для premade_work понизится до статуса"открыт для ТЗ", а для task понизится до статуса "идет работа". Также в обоих случаях прекращаются следующие платежи по ТЗ.
https://github.com/GolosChain/golos/issues/1105Улучшена работа worker_result_approve_evaluator со статусом предложения по ТЗ. В случае неодобрения результата предложение по ТЗ не закрывается, а только понижается на один уровень его статус.
https://github.com/GolosChain/golos/issues/1131Оставшиеся поля типа author и permlink в объекте пропозала и объекте ТЗ были убраны; вместо них используюется comment id поста. https://github.com/GolosChain/golos/issues/1130.
Задача In progress:
- Перенести неконсенсусные поля из объекта ТЗ в отдельный объект, хранящийся в плагине. https://github.com/GolosChain/golos/issues/1129.
Предлагаем делегатам @vik, @arcange, @ropox, @primus, @on0tole, @anyx, @kuna, @xtar, @yudina-cat, @stihi-io, @kulturagolosa, @vvk, @denis-skripnik, @testz, @steepshot, @semasping, @dmilash, @xanoxt и членам коммьюнити присоединиться к тестированию Тестнета и дать обратную связь по результатам тестирования в комментариях к постам Core или посредством чатов, указанных ниже.
Каналы коммуникации с 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.