Установка и настройка ноды Ethereum на Ubuntu
В инструкции представлена базовая информация по настройке ноды Ethereum. Мы выполним:
- Установку пакета ethereum из репозитория.
- Создание юнита systemd для автозапуска сервиса.
Инструкция протестирована на системе Linux Ubuntu Server.
Установка ethereum
Создаем каталог, где будут располагаться данные ноды:
mkdir -p /var/www/ethereum/data
* в нашем примере, это папка /var/www/ethereum/data.
Установим утилиту для работы с репозиториями software-properties-common
apt install software-properties-common
Добавляем репозиторий ethereum:
add-apt-repository ppa:ethereum/ethereum
Теперь можно выполнить установку пакета:
apt install ethereum
Создание юнита systemd и запуск сервиса
Для автозапуска ноды создадим новый юнит в systemd:
systemctl edit --force --full ethereum
[Unit]
Description=Ethereum Node Service
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/bin/geth --cache=24576 --datadir /var/www/ethereum/data
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/var/www/ethereum/data
Restart=on-failure
[Install]
WantedBy=multi-user.target
* в нашем примере будет запускаться процесс с выделением 24 Гб памяти для кэша (--cache=24576) и рабочим каталогом /var/www/ethereum/data. При необходимости, эти параметры нужно заменить.
Разрешаем юнит и стартуем сервис:
systemctl enable ethereum
systemctl start ethereum
Проверить состояние можно командой:
systemctl status ethereum
Некоторые команды для управления
Приведем несколько команд, которые позволят проверить состояние репликации ноды.
По умолчанию, команда geth ищет в домашнем каталоге папку .ethereum, а в ней файл geth.ipc. Но так как мы поменяли путь до рабочих файлов на /var/www/ethereum/data, создадим симлинк (для нашего удобства):
mkdir /root/.ethereum
ln -s /var/www/ethereum/data/geth.ipc /root/.ethereum/geth.ipc
Теперь можно выполнить команду:
geth --exec 'var s = eth.syncing; console.log("\n------------ GETH SYNCING PROGRESS\nprogress: " + (s.currentBlock/s.highestBlock*100)+ " %\nblocks left to parse: "+ (s.highestBlock-s.currentBlock) + "\ncurrent Block: " + s.currentBlock + " of " + s.highestBlock)' attach
* если мы не создадим симлинк на файл geth.ipc, то можно команде geth просто передавать путь рабочего каталога:
geth --datadir /var/www/ethereum/data/ ...
На запрос мы можем увидеть что-то на подобие:
------------ GETH SYNCING PROGRESS
progress: 1.99934201638452 %
blocks left to parse: 19148866
current Block: 547 of 19149413
Также мы можем подключиться к ноде:
geth attach
И посмотреть статус синхронизации командой:
> eth.syncing
Для выхода вводим:
> exit
Опции запуска
Командой:
geth --help
... мы можем увидеть все доступные опции для запуска нашей версии geth. Но в данном разделе мы рассмотрим несколько примеров.
1. Запуск с поддержкой API по http.
Позволяет настроить веб-сервер на нашей ноде с возможностью отправки запросов API:
geth --http --http.addr=0.0.0.0 --http.port=8575 --http.vhosts=*
* где:
- http — указывает на необходимость запуска HTTP-RPC сервера.
- http.addr — адрес, на котором будет слушать сервер http.
- http.port — порт, на котором будет слушать сервер http.
- http.vhosts — список виртуальных доменов, для которых будет отвечать наш сервер на запросы http. В нашем примере для всех (*).
2. Запуск в тестовой сети.
Для обкатки запросов и некоторых программных скриптов мы можем синхронизировать нашу ноду с тестовой сетью. В ней можно будет поиграть с созданием кошельков и проведения различных операций. Данных тестовых сетей может быть много, мы запустим Rinkeby:
geth --rinkeby
Список тестовых сетей можно посмотреть на официальном сайте.