Erigon - ETH Full Node
Официальный гайд Erigon на Github
Гайд подготовлен при помощи @Andrii1890(за что ему большое спасибо), собран и структурирован с пояснениями @N1xxxon.
Краткое описание
Erigon (в прошлом — Turbo-Geth) представляет собой ответвление Go Ethereum, ориентированное на скорость и эффективность использования дискового пространства. Erigon — это полностью переработанная архитектура реализации Ethereum, написанная на Go, но с планируемыми реализациями на других языках. Цель Erigon — обеспечение быстрой, более модульной и более оптимизированной реализации Ethereum. Он может выполнить полную синхронизацию архивного узла, используя менее 2ТВ дискового пространства менее чем за 4 дня.
Требования к серверу
Минимальные требования: Ubuntu 20.04, 4 CPU(8threads), 16gb RAM, 3TB+ SSD
С 06.09.2022 необходимо наличие Consensus Layer клиента.
Оптимальный выбор: Hetzner, AX101 или аналоги с 7TB+ SSD NVME.
Остановимся на оптимальном, т.к. нам необходимо поднять CL клиент в будущем.
Сразу уточним, чем больше оперативной памяти, чем лучше диски(nvme, а не ssd, hdd не подойдут), тем быстрее пройдет синхронизация.
На данный момент Full-нода занимает примерно 1.6TB данных.
Установка Erigon
Обновление + установка необходимых компонентов
sudo apt update sudo apt-get install build-essential wget git make htop -y
Установим Golang, версии 1.18.2.
Если нужна версия "по-новее", поправьте цифры в скрипте, в соответствии с вашими требованиями. Все версии Golang можно посмотреть на сайте
if ! [ -x "$(command -v go)" ]; then ver="1.18.2" cd $HOME sudo wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" sudo rm "go$ver.linux-amd64.tar.gz" sudo echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile source ~/.bash_profile fi
Проверим, что установка прошла и у нас необходимая версия
go version
Скачаем Erigon Вместо --branch v2022.08.03 ниже, нужно подставить актуальную версию
sudo git clone https://github.com/ledgerwatch/erigon.git --branch v2022.08.03 cd erigon git checkout alpha make erigon
Создаем папки logs и .ethereum в папке /home/
sudo mkdir -p /home/{logs,.ethereum}
sudo mv /root/erigon/build/bin/erigon /usr/local/bin/erigon
sudo tee <<EOF >/dev/null /etc/systemd/system/erigon.service [Unit] Description=Erigon Node Wants=network-online.target After=network-online.target [Service] Restart=on-failure RestartSec=15 Type=simple ExecStart=/usr/local/bin/./erigon --datadir /home/.ethereum --http.vhosts '*' --http.port 8545 --http.addr 0.0.0.0 --http.corsdomain '*' --http.api 'eth,erigon,net,web3,trace,txpool' --ws --private.api.addr=localhost:9090 --metrics --metrics.port 6060 --metrics.addr 0.0.0.0 --authrpc.jwtsecret /home/.ethereum/jwt.hex StandardOutput=append:/home/logs/erigon.log StandardError=append:/home/logs/erigon.log [Install] WantedBy=multi-user.target EOF
Перезагрузим "демона", включим службу Erigon'а и запустим его
sudo systemctl daemon-reload sudo systemctl enable erigon sudo systemctl restart erigon
Добавляем возможность смотреть логи по команде erigon.log
sudo echo 'alias erigon.log="tail -f /home/logs/erigon.log"' >> $HOME/.bash_profile source $HOME/.bash_profile
erigon.log
Установка и настройка фаервола UFW
Данный пункт необходим тем, кто поднимает ноду у хостера.
Те кто будут поднимать дома или "на локалке", где стоит роутер, надо будет пробросить порт 8545 только для Вашего доверенного ip, например, для сканера Forta.
В противном случае к Вашей ноде подключатся все кому не лень.
Если Вы ставите UFW впервые, прошу отнестись внимательно к следующим командам, чтобы случайно не обрубить себе связь с сервером по порту 22.
Как это было у меня в самый первый раз.
Установим UFW если его еще нет
sudo apt-get install ufw
Далее проверим статус UFW, должно выдать
sudo ufw status
Status: inactive
sudo ufw enable
sudo ufw status
Status: active
Установим политику по-умолчанию, запретив все входящие подключения и разрешив все исходящие
sudo ufw default deny incoming sudo ufw default allow outgoing
Откроем порт 22 для доступа по SSH к серверу
sudo ufw allow 22/tcp
Проверим наличие OpenSSH(или 22/tcp) в списке разрешенных подключений
sudo ufw status verbose
Если есть, то всё ок. Продолжаем дальше.
Откроем доступ для нашего сканера Forta к порту 8545.
sudo ufw allow from <YourFortaIP> to any port 8545
Вместо <YourFortaIP> необходимо указать ip вашей доверенной ноды\сканера Forta.
Еще раз проверим, что наше "правило" добавилось
sudo ufw status verbose
Если всё ок, то я Вас поздравляю. Настройка закончена.
Возможные проблемы
Если случится так, что во время загрузки архива у Вас перезагрузится сервер, то может начать выдавать ошибку. Для этого необходимо удалить базу и снепшоты.
sudo systemctl stop erigon sudo rm -rf /home/.ethereum/{chaindata,snapshots}
Не выполнять без необходимости! В противном случае Вы просто так удалите Вашу синхронизацию.
Удаление ноды
Если по какой-либо причине, Вам необходимо удалить ноду и все её файлы, просто выполните следующие команды
sudo systemctl stop erigon sudo systemctl disable erigon sudo rm -rf /home/{logs,.ethereum} sudo rm -rf /usr/local/bin/erigon sudo rm -rf /root/erigon/ sudo rm -rf /etc/systemd/system/erigon.service sudo systemctl daemon-reload
Обновление
Актуальную версию можно посмотреть здесь https://github.com/ledgerwatch/erigon/releases
Чтобы установить актуальную версию, в коде ниже нужно заменить
--branch v2.30.0
на
--branch с указанием актуальной версии(цифры поменяйте и все будет ок)
sudo systemctl stop erigon.service sleep 10 cd $HOME rm -rf erigon git clone https://github.com/ledgerwatch/erigon.git --branch v2.30.0 cd erigon git checkout alpha make erigon cd ./build/bin/ sudo cp erigon /usr/local/bin/ systemctl restart erigon.service erigon -v #Проверим версию 2.30.0 eigon.log #Проверим логи
Благодарность
Выражаю огромную благодарность @Andrii1890 за помощь в создании данного гайда.