Установка RPC Sepolia и Beacon на GETH и Pryzm
Требования к серверу:
я предпочитаю на xorek.cloud
Установка RPC
1. Устанавливаем зависимости
sudo apt update && sudo apt install -y curl wget gnupg nano ufw docker.io systemd-timesyncd sudo systemctl enable --now docker.service sudo systemctl enable --now systemd-timesyncd.service
Запускаем (Firewall)
sudo ufw default deny incoming sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 8546/tcp sudo ufw allow 8551/tcp sudo ufw allow 30303/tcp sudo ufw allow 30303/udp
sudo ufw allow 5053/tcp
sudo ufw allow 40401/tcp
sudo ufw allow 8080/tcp
2. Устанавливаем Geth (Execution Layer)
GETH_VER="1.15.10-2bf8a789" wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-$GETH_VER.tar.gz tar -xf geth-linux-amd64-$GETH_VER.tar.gz sudo mv geth-linux-amd64-$GETH_VER/geth /usr/local/bin/ sudo chmod +x /usr/local/bin/geth
3. Создаем JWT для Engine API
mkdir -p ~/sepolia-node openssl rand -hex 32 > ~/sepolia-node/jwt.hex
4. Создаем systemd сервис для Geth
sudo tee /etc/systemd/system/sepolia-geth.service > /dev/null <<EOF
[Unit]
Description=Sepolia Geth Node
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/sepolia-node
ExecStart=/usr/local/bin/geth --sepolia \
--datadir /root/sepolia-node/geth \
--syncmode snap \
--cache 4096 \
--http --http.addr 127.0.0.1 --http.port 8545 \
--http.api eth,net,engine,web3,txpool,debug \
--authrpc.addr 0.0.0.0 --authrpc.port 8551 \
--authrpc.jwtsecret /root/sepolia-node/jwt.hex \
--authrpc.vhosts=* \
--metrics --pprof --pprof.addr 0.0.0.0 --pprof.port 6060
Restart=always
RestartSec=10
Запускаем сервис
sudo systemctl daemon-reload sudo systemctl enable --now sepolia-geth
5. Установливаем Prysm он же Beacon
sudo install -d -o $USER /opt/prysm curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh -o /opt/prysm/prysm.sh chmod +x /opt/prysm/prysm.sh
6. Systemd сервис для Prysm
sudo tee /etc/systemd/system/sepolia-prysm.service > /dev/null <<EOF
[Unit]
Description=Sepolia Prysm Beacon Node
After=network.target sepolia-geth.service
Requires=sepolia-geth.service
[Service]
Type=simple
User=root
WorkingDirectory=/root/sepolia-node
ExecStart=/opt/prysm/prysm.sh beacon-chain \
--sepolia \
--datadir=/root/sepolia-node/prysm \
--execution-endpoint=http://localhost:8551 \
--jwt-secret=/root/sepolia-node/jwt.hex \
--genesis-beacon-api-url=https://lodestar-sepolia.chainsafe.io \
--checkpoint-sync-url=https://sepolia.checkpoint-sync.ethpandaops.io \
--accept-terms-of-use \
--rpc-host=127.0.0.1 \
--rpc-port=5052 \
--grpc-gateway-host=127.0.0.1 \
--grpc-gateway-port=3500
Restart=always
RestartSec=10
sudo systemctl daemon-reload sudo systemctl enable --now sepolia-prysm
RPC начнет синхронизацию, которая занимает порядка 12 часов может больше.
Проверка логов запущенных сервисов
Лог Geth:
journalctl -u sepolia-geth -f
journalctl -u sepolia-prysm -f
Так же будут логи работы без ошибок
Проверка статуса синхронизации
curl -s -X POST http://localhost:8545 \ -H "Content-Type: application/json" \ --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
curl http://127.0.0.1:3500/eth/v1/node/syncing
Если синхронизация в процессе:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"startingBlock": "0x74c200",
"currentBlock": "0x75b30a",
"highestBlock": "0x806abc"
}
}
RPC выдаст актуальные блоки и можно закидывать RPC в конфиг aztec
--l1-rpc-urls http://127.0.0.1:8545 --l1-consensus-host-urls http://127.0.0.1:3500
7. Если Aztec на другом сервере настраиваем защиту NGINX (если все локально NGINX не нужен так как вы не открываетесь в наружу)
ВНИМАНИЕ!!! AZTEC не принимает авторизацию через ЛОГИН ПАРОЛЬ, по этому делайте авторизацию через IP или токен.
sudo apt install nginx apache2-utils
Cоздаем конфиг для Geth
(строка allow IP СЕРВЕРА AZTEC" указываем IP где стоит нода aztec)
sudo tee /etc/nginx/sites-available/geth-rpc > /dev/null <<EOF
server {
listen 8546;
server_name _;
location / {
allow 127.0.0.1;
allow IP СЕРВЕРА AZTEC;
deny all;
proxy_pass http://127.0.0.1:8545;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
}
}
EOF
Конфиг для Prysm (Beacon → 5053):
(строка allow IP СЕРВЕРА AZTEC" указываем IP где стоит нода aztec)
sudo tee /etc/nginx/sites-available/beacon-rpc > /dev/null <<EOF
server {
listen 5053;
location / {
allow 127.0.0.1;
allow IP СЕРВЕРА AZTEC;
deny all;
proxy_pass http://127.0.0.1:3500;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
}
}
EOF
Активируем и перезапускаем NGINX:
sudo ln -s /etc/nginx/sites-available/geth-rpc /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/beacon-rpc /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
curl http://IP сервера RPC:8546 \ -H "Content-Type: application/json" \ --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
curl http://IP сервера RPC:5053/eth/v1/node/syncing
вывод должен быть такой же как и в случае с локальным выводом, далее добавляем в конфиг адрес RPC
--l1-rpc-urls http://IP сервера RPC:8546 --l1-consensus-host-urls http://IP сервера RPC:5053