September 30, 2022

Установка Идена-ноды на Android

Bash скрипт IDENA ARMer

Преамбула

Нода блокчейна Идена в большинстве случаев устанавливается на стационарный компьютер или VPS сервер. Благодаря скромным системным требованиям и языку GO, она также может быть запущена на архитектуре ARM64. Например, на мобильном устройстве Андроид под управлением Kali Linux, запущенной из виртуальной среды Termux.

Цель данной статьи, рассказать о возможности использования вашего мобильного устройства Андроид, в качестве сервера Идена, с активированным статусом майнинга, для прохождения валидации, загрузки флипов и получения наград за майнинг.

В моём случае, я буду использовать свой старенький Samsung Galaxy S6, со следующими характеристиками:

Технические характеристики Samsung Galaxy S6. Используется в качестве майнинг ноды Идены. 24/7.

Проверка совместимости вашего мобильного устройства

Убедитесь, что процессор вашего устройства, поддерживает архитектуру ARM64. Утилита Inware - в простой и удобной форме, покажет вам всю необходимую информацию.

Выбираем опцию Hardware
В разделе Supported ABIS, должа быть указана поддержка arm64

Модели мобильных устройств на которые был установлен скрипт

В случае использования скрипта присылайте модель вашего телефона в телеграм для добавления в таблицу.

Общая схема установки ноды

Содержание:

  1. F-Droid: Установка Termux и Termux:Boot
  2. Предоставление необходимых прав для приложения Termux, а также добавление его в список исключений монитора энергопотребления
  3. Подготовка терминала Termux к развёртыванию Kali Linux с помощью скрипта termux-init.sh
  4. Использование скрипта IDENA ARMer для компиляции/скачивания клиента ноды, импортирования ключей и дальнейшей настройки

Установка Termux и Termux:Boot из магазина приложений F-Droid

Termux это эмулятор терминала для платформы Android, который создаёт прямое Linux окружение, без требования рут доступа и отдельной установки. Благодаря большому репозиторию пакетов, этот терминал, можно оптимизировать под конкретную задачу, не засоряя при этом систему. В нашем случае нам понадобится лишь пакет openssh, который идёт в стандартной установке.

  • Обновления Termux, больше не публикуются в магазине приложений Google Play. Решение проблемы - установка стороннего магазина приложений F-Droid.
Скачать приложение F-Droid: https://f-droid.org/F-Droid.apk
  • Запускаем F-Droid и с помощью поиска находим и устанавливаем Termux, а также Termux:Boot.
Запуск F-Droid
F-Droid: Кнопка поиска приложений для установки на вашем устройстве
F-Droid: Установка Termux Terminal
F-Droid: Установка Termux Boot
F-Droid: Запуск терминала Termux

Инициализация приложения Termux путём запуска в первый раз

После установки Termux вам необходимо осуществить первичный запуск приложения для базовой инициализации. После запуска пожалуйста не закрывайте приложение. Нажмите кнопку Home на вашем телефоне и переходите к следующему шагу.

F-Droid: Первичный запуск и инициализация приложения Termux

Инициализация приложения Termux:boot путём запуска в первый раз

Termux:Boot: После установки, запустите единожды приложение для первичной инициализации
Termux:Boot: После первичного запуска, приложение настроит вашу систему, для запуска требуемых приложений во время загрузки/перезагрузки телефона.

Настройка прав доступа к файловой системе для приложения Termux

Termux: Командаtermux-setup-storage для предоставления доступа к файловой системе вашего телефона
Termux: Необходимо подтвердить разрешение на доступ терминала к хранлищу вашего девайса

Добавление приложений Termux и Termux:boot в список исключений, монитора энергопотребления вашего устройства

Настройки телефона: Обслуживание устройства
Настройки телефона: Свойства батареи
Настройки телефона: Исключения монитора энергопотребления
Настройки телефона: добавление F-Droid, Termux и Termux: Boot в список исключений

Расположение вышеуказанных настроек, будет отличаться в зависимости от версии Android, а также модели вашего телефона. В случае возникновения сложностей с поиском того или иного элемента настроек, пожалуйста обратитесь к руководству вашего телефона.

Подготовка терминала Termux, к запуску Kali-Linux

Следующей частью настройки, будет скачивание специального скрипта из пакета IDENA ARMer, который установит требуемые для дальнейшей установки пакеты, а также настроит openssh терминал, для удалённого подключения к вашему устройству.

  • Обновление пакетов Termux до последней версии
pkg upgrade -y

В случае возникновения ошибки Failed to fetch, пожалуйста используйте команду termux-change-repo для выбора одного из зеркал репозитория.

Termux: ошибка failed to fetch error
Termux: Команда termux-change-repo
Termux: Выбор альтернативного зеркала репозитория

В случае смены зеркала основного репозитория, вам нужно повторно ввести команду обновления пакетов Termux pkg upgrade -y

  • Запускаем скрипт chmod +x ./termux_init.sh && ./termux_init.sh
./termux_init.sh: При наличии конфликта версий конфигурационных файлов, уже установленных пакетов, необходимо ответить Y на все запросы.
  • Устанавливаем сложный пароль для доступа к вашему устройству через SSH
./termux_init.sh: Настройка пароля SSH соединения
  • Ваш IP адрес для подключения по SSH и номер порта 8022
Внимание: при поключении по SSH имя пользователя будет пустым, а пароль будет эквивалентен комбинации установленной на предыдущем шаге.

Запуск Kali-Linux, предварительная подготовка

Теперь экосистема Termux полностью готова к установке нашей ноды на мобильное устройство. Благодаря скрипту idena-armer, процесс установки проходит в полуавтоматическом режиме. Ваша задача, корректно ответить на вопросы мастера установки.

  • Запуск Kali Linux
Kali Linux: Команда ./start-kali.sh
  • Обновление установленных пакетов до актуальных версий:
Обновление пакетов: Команда apt update && apt upgrade -y
  • Установка пакета Git:
Установка пакета Git: Команда apt install git -y
  • Клонирование репозитория IDENA ARMer:
Установка скрипта IDENA ARMer: Команда git clone https://github.com/ltraveler/idena-armer.git
  • Переход в директорию скрипта и его запуск
Запуск скрипта idena-armer: Команда cd idena-armer && chmod +x ARMer_init.sh && ./ARMer_init.sh

Конфигурирование ноды Идена, создание отдельного пользователя и импорт ключей с помощью скрипта IDENA ARMer

  • Имя пользователя от которого будет работать сервис idena-go
Скрипт idena-armer: Пожалуйста введите имя пользователя. От его имени будет автоматически запущен сервис Идены. Внимание: не используйте в качестве имени root Пароль для пользователя, будет эквивалентен его имени.
  • Компиляция или использование уже скомпилированного исполняемого файла ноды IDENA

Скрипт позволяет как скомпилировать из исходных файлов официального репозитория, так и скачать уже скомпилированный файл. Компиляция происходит в течении суток после выхода очередного релиза. Крайне рекомендуется использовать уже скомпилированный файл, особенно если вы новичок, это позволит избежать возможных конфликтов. Тем не менее, перед каждым релизом скрипта idena-armer, он проходит тестирование, на возможности сборки, последней актуальной версии ноды.

Скрипт idena-armer: Хотите скомпилировать исполняемый файл idena-go из исходных файлов?
Рекомендуемый ответ N
  • Импорт приватного и API ключей ноды IDENA. В случае ответа N будут использованы ключи сгенерированные по умолчанию
Скрипт idena-armer: Вам необходимо ответить N, если вы устанавливаете новую ноду и Y, если хотите импортировать уже имеющиеся у вас ключи.

Не забудьте сохранить API и приватный ключ.

Поздравляю ваша нода была успешно установлена!

Перезагрузите ваш телефон и попробуйте установить SSH соединение посредством утилиты PuTTY, для более комфортного управления вашей нодой.

PuTTY: Установка SSH соединения

IDENA Coacher — утилита управления нодой

IDENA Coacher: Основное окно монитора управления нодой Идена. Здесь отображаются самые важные параметры ноды: Статус синхронизации, Статус майнинга, а также текущий и актуальный номер блока блокчейна.

IDENA Coacher - утилита, которая отражает текущий статус вашей ноды, а также осуществляет основные операции по управлению вашей идена нодой: смена приватного ключаАктивация/Деактивация майнинга ✧ Отслеживание статуса ноды в реальном времени.

  • Утилита расположена в домашней директории пользователя, который был указан при установке Идены:
cd /home/%username%/idena-coacher

*%username% - должен быть заменён на имя пользователя

  • Перед первым запуском скрипт нужно сделать исполняемым:
chmod +x idena_coacher.sh
  • Запуск скрипта:
./idena_coacher.sh

Подключение десктопного клиента идены к вашей ноде

Для создания флипов и прохождения валидации без использования веб-клиента, можно настроить подключение установленного на вашем компьютере клиента Идены к вашей ноде не телефоне, для этого необходимо настроить "проброску" портов с вашего телефона к вашему компьютеру, с которого происходит подключение.

Для начала необходимо установить SSH клиент, наиболее распространённым является PuTTY.

После установки вы увидите основное меню программы для ввода параметров соединения:

Здесь вам необходимо ввести:
1. IP адрес вашего телефона (вы сохранили его на этапе установки).
2. Порт вашего подключения 8022.
3. Ввести имя подключения и сохранить его с помощью кнопки Save.

Далее мы переходим во вкладку Connection -> SSH -> Tunnel и вводим данные как указано на нижеследующем скриншоте:

Данные для проброски портов:
1. Source port 9999.
2. Destination: localhost:9009.
3. Добавляем "проброску портов" с помощью кнопки Add.

Сохраняем данные сессии, для этого возвращаемся во вкладку Session и нажимаем кнопку Save:

Сохраняем данные сессии с помощью кнопки Save.

Теперь после закрытия программы и повторного запуска вы всегда сможете загрузить предустановленные параметры, выбрав имя сессии и нажав кнопку Load.

После загрузки сессии, устанавливаем соединение с вашим телефоном с помощью кнопки Open или клавиши Enter.

Имя пользователя оставляем пустым, в качестве пароля используем сохранённый на этапе установки пароль.

После установки соединения переходим к настройке вашего десктопного клиента идены:

Переходим во вкладку Settings и вводим следующие данные:
1. Node address: http://localhost:9999
2. Node api key: API ключ вашей ноды (вы сохранили его на этапе установки).
Посмотреть его также можно с помощью команды в заключении этой статьи.
3. Обратите внимание, что переключатель Run built-in node должен быть выключен, а Connect to remote node включён.

После нажатия на кнопку Save вы увидите, что статус вашей ноды изменится на Online.

Вместо заключения

Изначально мобильные устройства не предназначены для того, чтобы исполнять функцию сервера, но благодаря низким требованиям к ресурсами, обычный телефон может исполнять функции сервера активного 24/7. Благодаря этому, многие мобильные устройства могут получить вторую жизнь, что будет способствовать большей децентрализации сети, а у пользователей с ограниченным бюджетом, больше не будет необходимости оплачивать услуги VPS провайдера

Для манипулирования вашим сервером пожалуйста используйте SSH соединение, которое можно установить с помощью вашего любимого SSH клиента PuTTY например.

Пожалуйста не закрывайте приложение Termux на вашем телефоне

Несколько важных команд:

Показать приватный ключ: cat /home/$username/idena-go/datadir/keystore/nodekey

Показать API ключ: cat /home/$username/idena-go/datadir/api.key

*username - имя пользователя указанное при установке ноды Идена

Остановить сервис Идены:

service idena stop

Запустить сервис Идены:

service idena start

Скачать заново блокчейн Идены и запустить сервис

service idena restart

Обновить клиент Идена ноды до последней версии

/home/$username/scripts/armer_update.sh

*где $username имя пользователя которое вы установили во время установки

Система защиты целостности базы данных блокчейна idenachain.db

Специальный скрипт проверяет лог файлы клиента idena-go на наличие специфических ошибок и в случае обнаружения останавливает сервис idena-go, удаляет базу данных блокчейна и по новой распаковывает её из свежего снэпшота.
Если вы хотите добавить дополнительные строки для поиска ошибок, пожалуйста отредактируйте файл idena_selfcheck.sh из директории /home/$username/scripts.

Как вы можете заметить по умолчанию здесь находится 2 строки для поиска:

chain_err=(‘Cannot transform consensus config’ ‘corrupted or incomplete’)

Я буду благодарен если вы поделитесь дополнительными строками для поиска.
Связаться со мной можно через telegram или открыв тикет в репозитории скрипта IDENA ARMer.

Благодарности:
Отдельное спасибо Rioda за советы, которые впоследствии были доработаны мною до окончательного скрипта IDENA ARMer