Отчет команды Golos•Core по выполненной работе за период с 14 по 25 января 2019 г.
Уважаемые делегаты и члены коммьюнити!
Прошедшие две недели запомнились, в первую очередь, восстановлением работы блокчейна Golos, которому сопутствовало быстрое проведение ХФ-20, требовавшее предельной скорости в принятии и внедрении определенных решений разработчиками Golos•Core.
Помимо устранения аварийной ситуации, возникшей на почве переполнения числового значения в условиях вычисления процента отчислений делегатору при голосовании за пост, работа над текущим блокчейном и платформой CyberWay продолжалась непрерывно.
Для желающих протестировать функциональные возможности CyberWay и смарт-контрактов прототипа приложения Голос (примечание: о создании Тестнета мы информировали сообщество в конце ноября), сообщаем, что блокчейн для отправки транзакций доступен по следующему адресу: http://cyberway-mongodb.golos.io:8888
Состояние блокчейна сохраняется в базе данных MongoDB. Пользователь может подключиться к базе данных по адресу mongodb://readuser@cyberway-mongodb.golos.io:27017/admin. Пароль для пользователя c именем readuser: 12345.
Тем временем, вернемся к результатам команды Golos•Core за период с 14 по 25 января 2019 г.
Расширение функциональных возможностей и тестирование смарт-контрактов Голоса
Завершенные задачи:
- Формат имен смарт-контрактов и их таблиц приведен в более удобный для пользователей вид:
https://github.com/GolosChain/golos-smart/issues/228
https://github.com/GolosChain/cyberway.contracts/issues/48
https://github.com/GolosChain/cyberway.contracts/issues/59 - Доработаны скрипты конвертации данных. Доработка позволяет преобразовать текстовое представление даты в более удобный формат `ISODate’, используемый в БД:
https://github.com/GolosChain/golos-smart/issues/355 - Внесены изменения в
cleos
для поддержки переименованных системных смарт-контрактов:
https://github.com/GolosChain/cyberway/issues/187 - Реализована процедура выплаты вознаграждения рефералу:
https://github.com/GolosChain/golos-smart/issues/347 - Оптимизирован поиск голосов за пост с использованием составного ключа. Доработка существенно сокращает время работы алгоритма поиска голосов:
https://github.com/GolosChain/golos-smart/issues/399 - Добавлено недостающее поле ‘delegators’ в скрипт конвертации данных, используемое при конвертации голосов за пост:
https://github.com/GolosChain/golos-smart/issues/412
Задача In progress:
- Процедура выплаты вознаграждения делегаторам при закрытии поста:
https://github.com/GolosChain/golos-smart/issues/353
Стабилизация кода БЧ CyberWay
Завершенные задачи:
- Устранена ошибка, возникающая при выполнении аварийной остановки БЧ при получении доменного имени пользователя:
https://github.com/GolosChain/cyberway/issues/190 - Устранена ошибка, возникающая при возврате ABI-описания клиентам блокчейна:
https://github.com/GolosChain/cyberway/issues/208 - Устранены недостатки в системных смарт-контрактов, выявленные при запуске автоматизированных тестов:
https://github.com/GolosChain/cyberway.contracts/issues/26
https://github.com/GolosChain/cyberway.contracts/issues/33
https://github.com/GolosChain/cyberway/pull/186 - Реализован автоинкремент полей первичных ключей таблиц смарт-контрактов и системных таблиц цепочки. Доработка позволяет упростить обработку таблиц состояния блокчейна клиентами:
https://github.com/GolosChain/cyberway/issues/207 - Реализована функциональность, позволяющая загружать данные из таблицы стороннего смарт-контракта при перезапуске ноды блокчейна:
https://github.com/GolosChain/cyberway/issues/209 - Реализована функциональность по изменению структуры индексов в базе данных при загрузке новой версии ABI описания структур данных смарт-контракта:
https://github.com/GolosChain/cyberway/issues/103 - Выявлена и устранена причина утечки памяти при обновлении информации в базе данных:
https://github.com/GolosChain/cyberway.fc/issues/19
Задача In progress:
- Функциональная возможность подсчета используемой пользователем памяти в стейте блокчейна:
https://github.com/GolosChain/cyberway/issues/12
Предоставление в пользование ресурсов блокчейна
Завершенные задачи:
- Реализована виртуальная операция
requestbw
, при выполнении которой в блокчейне вызывается методapprovebw
смарт-контракта провайдера (владельца ресурсов), указанного одним из параметров. Данная операция позволяет конечным пользователям, у которых на балансе недостаточно средств на ресурсыbandwidth
, запросить выполнение транзакций за счет указанного провайдера в операцииrequestbw
(например пользователям сайта golos.io за счет владельца данного сайта) . Кроме этого, провайдеру предоставляется возможность самостоятельно, более гибко принимать решение о предоставлении ресурсов тому или иному пользователю:
https://github.com/GolosChain/cyberway/issues/200
Задача In progress:
- В блокчейне реализованы следующие intrinsic-функции:
set_bw_limit
;
get_bw_limit
;
commit_bw
.
Данные функции используются провайдером в смарт-контракте для установки значений ресурсов bandwidth
, которые он предоставляет пользователю:
https://github.com/GolosChain/cyberway/issues/201
Реализация правил вознаграждения блок-продюсеров
Задачи, находящиеся на ревью:
- Описаны сущности и реализованы некоторые функции stake-контракта:
- Регистрация пары назначение-токен в контракте.
- Настройки параметров пользователя в контракте.
- Делегирование и отзыв делегируемого.
- Анстейкинг (вывод средств из stake-контракта).
- Система штрафов.
- Написаны базовые тесты.
https://github.com/GolosChain/cyberway.contracts/issues/68
Поддержка доменных имен
Завершенные задачи:
- В cleos добавлена возможность автоматической замены текстовых доменных имён/имён пользователей на соответствующие аккаунты при отправке action:
https://github.com/GolosChain/cyberway/issues/180 - Добавлена поддержка имён вида «username@@account» при объявлении с подстановкой имен пользователей в action «declarenames»:
https://github.com/GolosChain/cyberway.contracts/issues/63 - В cleos добавлена возможность декларирования использованных доменных имён и имён пользователей. Доработка обеспечивает автоматическое добавление в транзакцию информации об использованных именах в случае, если в блокчейн загружен контракт cyber.domain, предоставляющий action «declarenames», а в отправляемой команде «cleos push action» содержатся имена пользователей и/или доменные имена. Эта возможность отключается флагом:
https://github.com/GolosChain/cyberway/issues/192 - Улучшение задачи #192
Изменена логика декларирования имён. Доработка позволяет контролировать случаи и выдавать сообщения об ошибке, если в блокчейне отсутствует контракт cyber.domain, а в транзакции, содержащей имена, отсутствует action «декларирования» имён. При отправке транзакции пользователь должен либо явно указать, что операция выполняется без «объявления» имён (используя флаг --dont-declare-names), либо загрузить контракт cyber.domain, чтобы включить декларирование:
https://github.com/GolosChain/cyberway/issues/211 - Доработана первая тестовая реализация системных actions, имеющим отношение к доменным именам: добавлены abi-описания, поправлена логика, введены ограничения и уточнены формулировки сообщений об ошибках:
https://github.com/GolosChain/cyberway/issues/205
Задача In Progress:
- Перенос внутренних actions, не требующих наличия смарт-контракта и имеющих отношение к доменным именам из системного аккаунта в cyber.domain:
https://github.com/GolosChain/cyberway/issues/232
Интеграция Event Engine c Golos.io
Завершенные задачи:
В ABI-описание смарт-контрактов добавлена секция с описанием событий, генерируемых контрактов и формата данных, которые отправляются в событие:
https://github.com/GolosChain/cyberway/issues/160Доработан интерпретатор смарт-контрактов для формирования и отправки событий из смарт-контракта:
https://github.com/GolosChain/cyberway/issues/161Реализована процедура распаковки аргументов события по ABI-описанию при размещении события в очереди сообщений:
https://github.com/GolosChain/cyberway/issues/214Реализовано обновление кэшированного в плагине event_engine ABI-описания смарт-контракта, при его обновлении командой setabi:
https://github.com/GolosChain/cyberway/pull/226Реализована операция отправки событий в социальном контракте golos.social:
https://github.com/GolosChain/golos-smart/issues/378Реализована отправка событий об изменении балансов пользователей и состояния токена в контракте cyber.token:
https://github.com/GolosChain/golos-smart/issues/381Реализована отправка событий об изменении значений пула вознаграждения, поста и голоса в контракте публикаций. Данные значения используются для предварительного подсчета вознаграждений:
https://github.com/GolosChain/golos-smart/issues/377Реализована отправка событий об изменениях балансов и статистики в смарт-контракте вестинга:
https://github.com/GolosChain/golos-smart/issues/379Реализована отправка событий об изменениях уровня батарейки в смарт-контракте батарейки:
https://github.com/GolosChain/golos-smart/issues/380Реализована отправка событий об изменениях голосов за делегатов в смарт-контракте управления:
https://github.com/GolosChain/golos-smart/issues/417
Воркеры
Завершенные задачи:
- Реализована логика по согласованию результата выполненной работы воркера с делегатами:
https://github.com/GolosChain/golos/issues/1023 - Реализован алгоритм выплаты вознаграждения воркеру за выполненную им работу. Доработка включает также добавление виртуальной операции:
https://github.com/GolosChain/golos/issues/1024 - Добавлен API-метод для получения списка предложений поступивших для воркеров. Реализована возможность фильтрации списка по следующим признакам:
- по типу;
- по состоянию предложения;
- по имени автора.
Добавлена возможность пагинации получаемого списка (количество предложений в выборке по умолчанию - 20, максимально возможное количество предложений в выборке - 100). Реализована операция сортировки полученного списка предложений по дате их публикации:
https://github.com/GolosChain/golos/issues/1025
- В API-метод добавлена операция сортировки поданных предложений для воркеров. Сортировка выполняется в соответствии с рейтингом поста:
https://github.com/GolosChain/golos/issues/1082 - Добавлен API-метод для получения списка технических заданий для воркеров. Реализованы операции: пагинация, сортировка и фильтрация:
https://github.com/GolosChain/golos/issues/1026
Задача In progress:
- Добавлена опция выбора воркера автором ТЗ для выполнения работ по ТЗ, а также отмены этого выбора самим воркером или автором ТЗ:
https://github.com/GolosChain/golos/issues/1029