
Знакомство с тестнетом
Команда GolosCore информирует пользователей о создании экспериментальной версии тестнета для платформы Cyberway и смарт-контрактов прототипа приложения Голос. Запуск тестнета является первым, но важным шагом на пути к созданию рабочей версии платформы Cyberway.
Для знакомства с тестнетом пользователям открыты доступы к блокчейну Cyberway с возможностью отправлять свои транзакции и к базе данных (на чтение), которая хранит состояние блокчейна.
Отправка транзакции в блокчейн
Для удобства отправки транзакций в блокчейн можно воспользоваться скриптом, написанным на языке Python, который выполняет типовые действия блокчейна и смарт-контрактов Голоса. Для работы с данным скриптом требуется установленный интерпретатор языка Python и утилиты cleos и keosd. Адрес утилиты cleos задается в переменной cleos_path, пароль для хранилища личных ключей задается в переменной wallet_password.
Скрипт доступен по адресу: https://github.com/GolosChain/golos-smart/blob/master/scripts/testnet.py.
Блокчейн доступен по адресу: http://cyberway-mongodb.golos.io:8888.
Утилиты cleos и keosd, собраны из репозитория https://github.com/GolosChain/cyberway.git. Вызов данных утилит аналогичен их вызову в EOS.
База данных состояния блокчейна
Состояние блокчейна сохраняется в базе данных MongoDB. Пользователь может подключиться к базе данных по адресу mongodb://[email protected]:27017/admin. Пароль для пользователя c именем readuser: «12345».
Для работы блокчейн создает одну системную базу данных с именем _CYBERWAY_, а также отдельную базу данных для каждого смарт-контракта. Имена баз данных для смарт-контрактов формируются добавлением префикса _CYBERWAY_ к его имени слева и заменой символа «.» на «-». Например, для смарт-контракта gls.publish база данных будет называться _CYBERWAY_gls-publish. Получить список баз данных, доступных пользователю с именем readuser, можно с помощью команды db.getUser(“readuser”) для базы данных admin, выполненной в клиенте mongo.
Наполнение таблиц
При запуске тестнета было выполнено первичное наполнение данными из блокчейна Голос, в том числе были перенесены следующие данные:
- Аккаунты пользователей. Были перенесены те аккаунты, имена которых соответствуют правилам формирования имени в EOS (не более 13 символов, допустимые символы «.1-5a-z», для 13 символа допустимо использование только «.1-5a-j»). На текущий момент команда GolosCore решает задачу переноса всех аккаунтов из блокчейна Голос на новую платформу. Данная информация хранится в системной базе данных
_CYBERWAY_. - Ключи пользователей. Для каждого пользователя были перенесены его публичные ключи
owner,activeиpostingиз блокчейна Голос. Формат ключей новой платформы соответствует ключам платформы Голос. Пользователи могут использовать свои личные ключи для выполнения действий в тестнете от своего имени. Данная информация хранится в системной базе данных CYBERWAY. - Балансы пользователей. Для каждого пользователя была перенесена информация о находящихся на его балансах голосах (GOLOS) и вестингах (GESTS). При этом баланс в голосах был перенесен в токен GLS системного контракта
eosio.token, а вестинг — в вестинг GLS контрактаgls.vesting. - Делегаты и голоса за них. Была перенесена информация о том, какие пользователи являются делегатами сообщества, а также данные голосования за них. На основе этой информацией был сформирован набор делегатов, подпись которых требуется для выполнения действий по управлению сообществом.
- Посты, комментарии и голоса за них. Были перенесены все посты и комментарии вместе с их голосами тех пользователей, аккаунты которых были также перенесены. Если комментарий относился к посту или комментарию, который не был перенесен, то он был преобразован в пост.
Смарт-контракты
При запуске тестнета были загружены следующие смарт-контракты:
Системные смарт-контракты:
eosio. Была загружена базовая версия системного контракта (eosio.bios); В перспективе она будет заменена на расширенную версию (eosio.system);.eosio.token. Соответствует контракту платформы EOS;eosio.msig. Соответствует контракту платформы EOS.
Golos:
gls.ctrl(golos.ctrl). Смарт-контракт, предоставляющий функционал по выбору делегатов сообщества и реализующий процедуру предоставления группе делегатов полномочий по управлению сообществом. Для использования полномочий требуется подпись от определенного количества делегатов, имеющих большинство голосов. В тестнете такими полномочиями наделяется группа из пяти делегатов;gls.emit(golos.emit). Смарт-контракт, периодически генерирующий токены сообщества и распределяющий их в пулы для вознаграждения;gls.vesting(golos.vesting). Смарт-контракт вестинга сообщества;gls.publish(golos.publication). Смарт-контракт публикаций. Отвечает за размещение постов и комментариев, а также за голосование пользователей за них.
Доступные операции:
Приведенные ниже операции выполняются вызовом команд в интерактивном режиме интерпретатора Python. При этом предполагается, что перед выполнением описанных ниже операций скрипт testnet.py должен быть подключен командой from testnet import *. Для отдельных операций необходима подпись от системного аккаунта eosio, а также импортирование личных ключей. Это обеспечивается вызовом функции importRootKeys(). Удалять ключи из хранилища можно вызовом функции removeRootKeys(). Это временное решение и реализовано исключительно для демонстрации работы тестнета. При запуске майннета пользователям какие-либо другие личные ключи, за исключением сгенерированных ими, не потребуются.
В перечень доступных операций входят следующие:
Создать пользователя. Выполняется функцией createAccount(“eosio”, <account>, <public_key>). Создается системный аккаунт на платформе Cyberway;
Вступить в сообщество Golos. Для этого необходимо открыть баланс вестинга, принадлежащего сообществу: openVestingBalance(<account>);
Работа с токеном/вестингом, в том числе:
- Получить токены:
issueToken(<account>, <amount>). При этом держателем токена выпускаются новые токены и перечисляются на счет пользователя. Количество токенов (параметр < amount>) указывается в формате «1.000 GLS»; - Купить вестинг:
buyVesting(<account>, < amount>). При этом выполняется операция выпуска новых токенов и покупка на указанную сумму вестинга. Количество токенов (параметр < amount>) задается в формате «1.000 GLS»; - Зарегистрировать делегата:
registerWitness(<witness>, <public_key>, <url>). Зарегистрировать пользователя как делегата; - Проголосовать за делегата:
voteWitness(<voter>, <witness>, < weight>). Вес голоса (параметр < weight>) указывается в процентах, умноженных на 100 (значение от 1 до 10000), в данный момент этот параметр не используется.
Работа с постами, в том числе:
- разместить пост:
createPost(<author>, <permlink>, <category>, <header>, <body>); - разместить комментарий:
createComment(<author>, <permlink>, <parent_author>, <parent_permlink>, <header>, <body>); - проголосовать за пост/комментарий:
upvotePost(<voter>, <author>, <permlink>, <weight>)илиdownvotePost(<voter>, <author>, <permlink>, <weight>). Вес голоса (параметр < weight>) задается в процентах, умноженных на 100 (принимает значение от 1 до 10000); - отменить голос за пост/комментарий:
unvotePost(<voter>, <author>, <permlink>); - закрытие поста происходит автоматически по истечении 15 минут. Голосование с положительным весом запрещено за 1 минуту до закрытия поста.
Примечание:
По мере добавления функциональных возможностей в экспериментальную версию тестнета его начальное наполнение данными будет обновляться. При этом возможно удаление данных, сохраненных пользователями, а также возвращение содержимого БД к исходному состоянию.
Команда Голос Коре заранее приносит извинение пользователям за возможные неудобства и надеется на взаимопонимание.
Также команда Голос Коре надеется также получить отзывы от пользователей на функционирование экспериментальной версии тестнета.







Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
mryabinin, kanalex, irimeiff, chirakovalsky, aleos, ezavarov, evgeniybb
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!

Поддержите нас:
Существующие приложения могут расчитывать на помощь в разработке контракта?
🤘
🤘
🤘
🤘
Т.е. это переход на новый блокчейн с полной переделкой всех клиентов?
@uncleandyv, это экспериментальный тестнет Cyberway, в котором запущены смарт-контракты прототипа приложения Голос, с которыми можно поэкспериментировать. клиенты переделывать рано
🤘
🤘
Отличная новость! А планируется ли JS библиотека хотя-бы? Со всем функционалом. Или только Python?
@denis-skripnik, на этом этапе отдельная js-библиотека не планировалась, это же прототип, многие вещи поменяются.
если хочется попробовать js прямо сейчас — стандартный eosjs подойдёт, только надо будет самостоятельно формировать транзакции, а ключи и параметры экшенов взять из
testnet.py🤘
🤘;)
Присоединяюсь к вопросу.