Установка 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