从零到一部署 GIWA Testnet 节点(超详细保姆级教程)


适用对象:完全没跑过 OP Stack/L2 的新手 目标:用 Docker 在一台 Ubuntu 服务器上把 GIWA Testnet 节点跑起来,并提供稳定的本地 RPC 网络:GIWA Testnet(基于 OP Stack,结算到 Ethereum Sepolia)

参考资料与来源:

  • 官方文档与入门页(持续更新):GIWA Docs(Get Started、工具与节点服务商列表)。(GIWA Documentation)

  • 官方节点仓库(Docker Compose、一键环境):giwa-io/node。(GitHub)

  • GIWA 常用参数与网络信息(来自独立测评与社区贴):Boxmining 文章、X 社区补充。(boxmining.com)

  • 结算层(L1)说明与 OP Stack 运行方式(用于理解依赖):Optimism 官方教程/资料。(docs.optimism.io)

  • Sepolia/OP Sepolia 的链参数与 RPC 参考:Chainlist、Alchemy(用作你 L1 RPC 的候选)。(chainlist.org)


一、准备一台干净的服务器

系统建议:Ubuntu 20.04/22.04/24.04(均可) 最低配置:4 核 CPU / 8 GB 内存 / 500 GB NVMe SSD 推荐配置:8+ 核 / 16+ GB / 1TB+ NVMe(生产更稳) 这些规格与 GIWA 官方与仓库 README 的建议一致。(GitHub)

开放端口(默认)854585463030395457300(如被占用后文教你改)。该端口组合参考多份社区教程与官方仓库映射。(Medium)

若你已有其他 ETH/OP 类节点在跑,请优先准备独立机器或按下文修改所有端口,避免冲突。


二、系统初始化与基础依赖

# 1) 系统更新与常用工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git wget jq lz4 make gcc pkg-config \
  libc6 libssl-dev libleveldb-dev ca-certificates \
  unzip tar tmux htop ncdu

# 2) (可选)使用 screen/tmux 保持会话不断线
tmux new -s giwa
# 或:screen -S giwa

上述工具用于拉仓库、看日志、解压/压缩与排障,Medium 教程也采用相近依赖集。(Medium)


三、安装 Docker 与 Compose

# 安装 docker 与 compose 插件
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list >/dev/null

sudo apt update -y
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 验证
docker --version
docker compose version
sudo systemctl enable --now docker

GIWA 官方仓库使用 Docker Compose 启停组件;如果你更熟悉源码构建,也可参考 OP Stack 官方的“from source”教程,但对新手不建议。(GitHub)


四、克隆 GIWA 节点仓库

# 任选放置目录
mkdir -p ~/giwa && cd ~/giwa

# 克隆官方仓库
git clone https://github.com/giwa-io/node
cd node

# 查看关键文件(环境与 Compose)
ls -lah .env.sepolia docker-compose.yaml README.md

这个仓库就是“跑起 GIWA 节点需要的一切”,包含 .env.sepoliadocker-compose.yaml。(GitHub)


五、配置与理解「结算层」依赖

GIWA 基于 OP Stack结算到 Ethereum Sepolia。因此你必须提供可用的 L1 端点(ETH Sepolia 的 RPC 与 Beacon)。在 READMEQuick Start 中,要求设置:

  • OP_NODE_L1_ETH_RPC=<你的 L1 Sepolia RPC>

  • OP_NODE_L1_BEACON=<你的 L1 Beacon 端点> (GitHub)

如何获得 L1 RPC/Beacon:

  • 自建 Sepolia 全节点(成本较高,略)可以参考我之前的教程,自搜索一下;

  • 使用服务商:zan、Ankr、QuickNode、Alchemy/Infura/其他(拿到 HTTPS RPC 即可)。

    L1 RPC 我从 zan.top 获得

post image

Beacon 我从drpc.org 获得

post image

若你对 OP Stack 原理好奇,可查阅 Optimism 官方“Using Docker 跑 OP/OP Sepolia 节点”与“from source”文档,能帮助你理解 op-node 与执行/共识的协作。(docs.optimism.io)


六、编辑 .env.sepolia

# 用你熟悉的编辑器修改
nano .env.sepolia

把以下两行改成你自己的 L1 端点(必填):

OP_NODE_L1_ETH_RPC=https://<你的-sepolia-rpc>
OP_NODE_L1_BEACON=https://<你的-beacon-endpoint>

Docker Compose 会加载 .env/指定 env 文件的变量,这也是 Compose 的通用做法。(Docker Documentation)


七、(如端口冲突)统一改端口

查询8545/8546/30303/9545/7300这些端口是否被用

sudo ss -lntup | grep -E ':(8545|8546|30303|9545|7300)\b'
  • 有输出=端口已被占用;会显示协议、监听地址:端口、pid/program

  • 无输出=这些端口目前都空闲。

(可选备选:sudo lsof -nP -iTCP -sTCP:LISTEN | grep -E ':(8545|8546|30303|9545|7300)\b'

如果你的 8545/8546/30303/9545/7300 已被其他进程占用,可在 docker-compose.yaml 中把宿主机端口整体平移到新段(例如 18xxx/31xxx)。示例命令(可选):

# 仅示例,把常见映射一次性改到 18xxx/31xxx/19xxx/17xxx 段
sed -i 's/"8545:8545"/"18545:8545"/' docker-compose.yaml
sed -i 's/"8546:8546"/"18546:8546"/' docker-compose.yaml
sed -i 's/"30303:30303"/"31303:30303"/' docker-compose.yaml
sed -i 's#"30303:30303/udp"#"31303:30303/udp"#' docker-compose.yaml
sed -i 's/"9545:9545"/"19545:9545"/' docker-compose.yaml
sed -i 's/"7300:7300"/"17300:7300"/' docker-compose.yaml

这个“批量改端口”的思路来自社区文章做法与官方仓库端口映射。若你不确定,建议只改宿主机侧端口,容器内保持默认,避免容器内部互联被破坏。(Medium)


八、构建并启动

# 构建镜像(并行更快)
docker compose build --parallel

# 启动(指定使用 .env.sepolia)
NETWORK_ENV=.env.sepolia docker compose up -d

以上启动方式与仓库 README 完全一致。(GitHub)


九、查看日志与健康度

# 全量看
docker compose logs -fn 200

# 分别看执行/共识(名称以 compose 为准)
docker compose logs -f consensus
docker compose logs -f execution

健康判断:

  • 日志应能看到从 L1(Sepolia)拉取/跟随的提示、与 L2 同步推进;

  • 容器无频繁重启(Restarting)、无持续 4xx/5xx 拉取失败;

  • RPC 探活(见下一节)。 这些检查与官方 README 的排障建议一致。(GitHub)


十、验证本地 RPC 是否工作

1)查询区块号(HTTP RPC)

# 请把 127.0.0.1:8545 换为你的宿主机IP与端口(如你改了端口)
curl -s -X POST http://127.0.0.1:8545 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

能返回形如 {"jsonrpc":"2.0","id":1,"result":"0x..."} 说明 HTTP RPC 正常。

2)在钱包添加 GIWA Testnet 网络

  • Network Name:GIWA Sepolia

  • RPC URL:https://sepolia-rpc.giwa.io(公共网关;你也可以填自己的本地 RPC)

  • Chain ID:91342

  • Currency Symbol:ETH 这组参数来自社区实测与测评文,便于你对齐自建节点与官方公共网关。(boxmining.com)


十一、领取测试币(GIWA Testnet)

测试转账/合约时需要 Test ETH。你可以使用 GIWA 官方挂载的水龙头(由节点服务商提供):

如果 Faucet 忙碌,稍后再试;或在社区频道寻找临时补给。


十二、常见问题(FAQ)

Q1:必须要有 L1 Beacon 吗? 是的。按照仓库 README 的 Quick Start,OP_NODE_L1_ETH_RPCOP_NODE_L1_BEACON 都是必填。缺一不可。(GitHub)

Q2:我的端口被占用怎么办? 按上文批量替换宿主机端口即可;或换一台干净机器。注意,只改宿主机端口映射即可,不要随意改容器内服务端口,避免组件通讯失联。(Medium)

Q3:为什么需要 Sepolia(L1)? GIWA 基于 OP Stack,op-node 需跟随 L1(Sepolia)头信息并完成数据可用性/提交流程;这也是几乎所有 OP 系链(含 Boba/Celo L2 等)共同点。(docs.optimism.io)

Q4:我能用其他实现(如 Reth for OP)吗? 可以,但这属进阶路径。Reth 针对 OP Stack 的运行文档有说明,对新手不建议直接上,后续可再折腾。(reth.rs)

Q5:有没有托管式节点服务? GIWA 文档里提供了节点服务商清单(如 Nodit 等),适合想少管运维的人。(GIWA Documentation)


十三、运维与停机

查看资源占用:

平滑停止与清理:

# 停止
docker compose down

# 完整清理(包含数据卷)
docker compose down -v && rm -rf ./execution_data

这些指令与官方仓库 README 的停止/清理流程一致。清理前请确认不再需要本地索引数据。(GitHub)


十四、进阶:把 RPC 暴露给外网(可选)

强烈建议放在反代后面并限制访问(如 Nginx + Basic Auth/IP 白名单/Cloudflare Tunnel)再开放 8545。生产环境切记:

  • 只开必要方法(eth_call/eth_getLogs…),禁止 personal_miner_ 等敏感方法;

  • 打好防火墙策略(ufw/iptables),限制来源网段;

  • 开启系统与 Docker 的自动更新,监控日志与磁盘。


十五、验证你的链上连通性(钱包端)

  1. MetaMask 添加 GIWA Sepolia

  2. 切到你的 本地 RPC(或暂用官方公共网关);

  3. 用 Faucet 领到 Test ETH 后,发一笔小额转账或部署最简单的合约(Hardhat/Foundry 均可,GIWA 提供了 Hardhat 开发文档)。(GIWA Documentation)


十六、参考与外延阅读

  • GIWA:Get Started / 文档首页 / 节点服务商(官方)(GIWA Documentation)

  • giwa-io/node 仓库(Docker Compose、环境变量、硬件与排障)(GitHub)

  • GIWA 网络参数(社区汇总):RPC、Chain ID、钱包添加方法等(用于交叉核验)(boxmining.com)

  • Optimism 官方:用 Docker 跑节点 / 源码构建 / 创建 L2(了解 OP Stack 背景)(docs.optimism.io)

  • Sepolia(以太坊测试网)资料:RPC/链参数/服务商(L1 依赖)(chainlist.org)

  • GIWA Faucet(Nodit 提供):GIWA Testnet 领水入口(faucet.lambda256.io)

可以加一个“TLS 证书信任(可选)”小节,把这段 override 当成修复 x509 报错的标准做法写进教程。给你现成文案与命令:


十七、TLS 证书信任(可选)

如果 consensus(op-node)连接 L1 RPC 时出现 tls: failed to verify certificate: x509: certificate signed by unknown authority, 在同目录新增一个 docker-compose.override.yaml,把宿主机的系统 CA 证书只读挂载进容器:

cat > docker-compose.override.yaml <<'YAML'
services:
  consensus:
    volumes:
      - /etc/ssl/certs:/etc/ssl/certs:ro
YAML

说明:

  • 这会把宿主机的 /etc/ssl/certs(Debian/Ubuntu 的系统 CA 目录)映射到容器同路径,Go 程序(op-node)即可加载系统信任链。

  • 大多数 Linux 发行版(含 Alpine)默认也在 /etc/ssl/certs 查找信任链。若你的镜像只找单文件,也可挂载:

    • /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro

  • 这是不改镜像的最简修复;如需根治,可在镜像内安装 ca-certificates 包。

应用:

docker compose down
docker compose up -d          # 与主 compose 同目录时,override 会被自动加载
# 或显式指定:
# docker compose -f docker-compose.yaml -f docker-compose.override.yaml up -d

验证:

# 查看共识层日志无 x509 报错
docker compose logs --tail=100 consensus | grep -iE 'x509|tls|certificate|failed|error' || echo "OK"

# 可选:容器内直接 curl 你的 L1 RPC(应返回 0xaa36a7)
docker compose exec consensus sh -lc \
  "curl -sS -H 'content-type: application/json' \
   -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_chainId\",\"params\":[]}' \
   https://ethereum-sepolia-rpc.publicnode.com"

取消此修复:删除或重命名 docker-compose.override.yaml,再 docker compose up -d 即可。


结语

照着本教程完成:拉仓库 → 配 L1 RPC/Beacon →(必要时)改宿主机端口 → 构建与启动 → 验证 RPC → 领水测试,即可拥有一套稳定的 GIWA Testnet 本地节点,后续你可以把它接入自家 DApp、索引器或分析任务。若你想进一步减少运维负担,也可以直接采用官方文档中列出的托管式节点服务。(GIWA Documentation)

—— 完 ——