Пример запуска тестнета
Автор: @ropox
Порой для писателей скриптов, ботов для голоса требуется отладить работу программ в тишине и спокойствии и в контролируемой среде. Не хочется, что бы бот к примеру перевел внезапно 10000 голосов неизвестно кому из-за глупой ошибки. Как это случилось однажды с доброботом. Опять же для регрессионных тестов, нужна возможность повторения сценариев с одинаковыми исходными данными, чтобы получить повторяемые, ожидаемые результаты. Ну и конечно тестирование ХФ, новой версии сети голоса. У нас сейчас актуальная версия сети 0.16.4, а новая версия будет 0.17.0. Если кто-то захочет протестировать новую версию, подключившись к реальной сети, то возможно нода с “неправильной” версией будет “саботировать” сеть.
Вот для этого и запускается testnet. С тестовыми пользователями уже имеющими на балансе средства, с измененными настройками, позволяющими ускорить тестирование.
К примеру можно установить уменьшение силы голоса не раз в неделю как в настоящей сети, а раз в 15 минут. Иначе бы пришлось ждать результатов теста неделями, а в тестнете всего 15 минут. Окно авторских вознаграждений можно сократить с недели, до получаса. Выгоды очевидны.
Тестнет не связан с рабочей сетью и не мешает работе действующей сети. Так же можно тестировать свой секретный проект так, что бы до поры до времени никто про него не узнал.
Сборка образ докера
В официальном репозитории golos уже есть готовые файлы для docker, и предпочтительно использовать их, чтобы не городить свои скрипты для компиляции, бороться с зависимостями. Все для вас сделает docker. Как работать с докером я расписывать сильно не буду. Инструкций полно в интернете.
Подготовка исходников
Для начала скачаем исходники golos. Для этого воспользуемся git-ом.
У нас создастся папка golos с исходниками. Перейдем в нее и последующие комманды будет запускать в ней.
Нам нужно будет переключить на нужную нам ветку. В настоящий момент меня интересует версия 0.17.0.
Как видно на скриншоте, есть branch под названием golos-v0.17.0. Вот на нее нам и надо переключиться. Для этого в корне папки с исходниками выполним следующую команду
И теперь нам надо обновить локальные файлы до версий в репозитории на гитхабе
Теперь можно поменять нужные нам для теста параметры. К примеру я хочу тестировать скрипт, который должен запускаться после понижения силы голоса. Чтобы не ждать неделями, я сокращу интервал вывода СГ до 10 минут. Для этого открываю файл с настройками сети в редакторе.
Меня интересует конкретно вот эта строка
Я исправляю, чтобы интервал был 10 минут и сохраняю файл
Сборка образа
В папке docker лежит файл для докера с инструкциями по сборке образа.
Все, что нам требуется, это запустить сборку
Спустя какое то время мы имеем готовый образ докера
Запуск
Для начального запуска воспользуемся командой run докера
Собственно все понятно. -it включает интерактивность. “-p 127.0.0.1:9090:8090” включает переадресацию порта 8090 изнутри контейнера наружу, на порт 9090. Это дает возможность подключаться скриптами к тестнету используя URL вида ws://localhost:9090. Опция -d запускает контейнер отключенным от консоли в фоне. --name testnet задет простое имя контейнеру. -t testnet-17 задает имя образа, который будет использоваться для создания контейнера.
Если все нормально, после запуска контейнера докер распечатает ID контейнера и вернет управление в консоль.
Как я писал выше, в тестнете уже созданы пара тестовых пользователей. Самый важный cyberfounder. Естественно, чтобы можно было этим аккаунтом пользоваться, нужны ключи. Приватный и публичный. При запуске, golos распечатывает пару ключей в самом начале. Посмотреть их можно распечатав лог голоса.
Конфигурационный файл
Чтобы сеть заработала, нужен хотя бы один делегат, подписывающий блоки. Этим и будет заниматься аккаунт cyberfounder. Чтобы это заработало, нужно отредактировать конфигурационный файл.
Сначала зайдем в образ
Конфигурационный файл config.ini лежит в папке /etc/golosd.
Изменим следующие параметры
После чего перезапускаем контейнер
И видим, что сеть заработала и cyberfounder начал генерировать блоки
Дождемся 17-го хардфорка, после чего можно пользоваться тестнетом
Запускаем cli_wallet, задаем пароль, и импортируем приватный ключ cyberfounder аккаунта
На аккаунте cyberfounder есть уже некая сумма голосов
Можно создать нового пользователя и перевести ему GOLOS
Ну и вишенка на торт, создаем свой, персональный токен
Инстанциируем немного монет и переводим их тестовому пользователю
Удачных вам экспериментов!
По материалам статьи
Last updated