Установка и настройка ноды Ethereum на Ubuntu

Обновлено Обновлено: Опубликовано Опубликовано:

В инструкции представлена базовая информация по настройке ноды Ethereum. Мы выполним:

  1. Установку пакета ethereum из репозитория.
  2. Создание юнита 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

Список тестовых сетей можно посмотреть на официальном сайте.

# Ubuntu
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет