在区块链技术的快速发展中,运行一个节点成为了许多开发者和技术爱好者的必备技能。今天,我们将详细介绍如何在Ink链上运行一个完整的或归档节点。无论你是区块链新手还是经验丰富的开发者,这篇文章都将为你提供清晰的步骤和实用的建议。
项目简介
Ink Node是一个基于Docker Compose的简单脚本,用于启动Ink链的完整节点或归档节点。该项目是从smartcontracts/simple-optimism-node fork并定制而来,旨在简化节点的部署和管理过程。
硬件要求
在开始之前,确保你的硬件满足以下要求:
主网(Mainnet)
- 内存:16GB以上
- 存储:2TB SSD(推荐NVME)
- 网络:100mb/s以上的下载速度
测试网(Testnet)
- 内存:16GB以上
- 存储:500GB SSD(推荐NVME)
- 网络:100mb/s以上的下载速度
安装与配置
安装Docker和Docker Compose
首先,我们需要在系统上安装Docker和Docker Compose。以下是在Ubuntu系统上的安装步骤:
bash
# 更新和升级包
sudo apt-get update
sudo apt-get upgrade -y
# 安装Docker和Docker Compose的依赖
sudo apt-get install -y curl
sudo apt-get install -y gnupg
sudo apt-get install -y ca-certificates
sudo apt-get install -y lsb-release
# 下载Docker的GPG文件
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 将Docker添加到Ubuntu的包列表中
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# 安装Docker和Docker Compose
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 将当前用户添加到docker组
sudo usermod -aG docker $(whoami)
# 验证安装
sudo docker run hello-world
安装完成后,注销并重新登录系统,然后运行以下命令验证Docker是否正常工作:
docker ps
如果返回一个空的容器列表且没有错误,说明Docker已成功安装。
克隆仓库
接下来,克隆Ink Node的仓库:
bash
git clone https://github.com/inkonchain/node
cd node
配置环境变量
复制.env.example
文件并重命名为.env
:
bash
cp .env.example .env
然后,使用你喜欢的编辑器打开.env
文件进行配置。
必填配置
-
NETWORK_NAME:选择你要操作的Optimism网络层:
ink-sepolia
:Ink Sepolia(测试网)ink-mainnet
:Ink(主网)
-
NODE_TYPE:选择你要运行的节点类型:
full
:完整节点(包含最近的区块,不包含历史状态)archive
:归档节点(存储区块链的完整历史,包括历史状态)
-
OP_NODE__RPC_ENDPOINT:指定Layer 1(如以太坊主网)的RPC端点。你可以使用Quicknode的免费计划。
-
OP_NODE__L1_BEACON :指定Layer 1的信标端点。你可以使用QuickNode提供的信标端点。
-
OP_NODE__RPC_TYPE:指定RPC端点的服务提供商:
alchemy
:Alchemyquicknode
:Quicknode(仅限ETH)erigon
:Erigonbasic
:其他提供商
可选配置
-
OP_GETH__SYNCMODE:指定执行客户端的同步模式:
- 未指定:默认使用快照同步(完整节点)或全同步(归档节点)
snap
:快照同步(默认)full
:全同步(适用于归档节点,不推荐用于完整节点)
-
IMAGE_TAG__[...] :为指定组件使用自定义的Docker镜像。
-
PORT__[...] :为指定组件使用自定义端口。
操作节点
启动节点
使用以下命令启动节点:
css
docker compose up -d --build
该命令将在后台启动节点(-d
),并确保应用最新的更改(--build
)。
查看日志
查看所有容器的日志:
bash
docker compose logs -f --tail 10
查看特定容器的日志:
bash
docker compose logs <CONTAINER_NAME> -f --tail 10
常用的容器名称包括:
op-geth
op-node
bedrock-init
停止节点
停止节点但不删除数据:
docker compose down
重启节点
安全地重启节点:
docker compose restart
升级节点
从GitHub和Docker Hub拉取最新更新并重建容器:
css
git pull
docker compose pull
docker compose up -d --build
清除数据 [危险]
停止节点并清除所有数据:
docker compose down -v
监控节点
估算剩余同步时间
使用progress.sh
脚本估算剩余同步时间和速度:
bash
./progress.sh
该脚本将显示每分钟同步的区块数和预计完成时间。
Grafana仪表盘
Grafana仪表盘暴露在http://localhost:3000
,并预加载了一个简单的仪表盘("Simple Node Dashboard")。该仪表盘包含基本的节点信息,并会告诉你节点是否与参考的L2节点不同步或是否检测到状态根故障。
使用以下登录信息访问仪表盘:
- 用户名:
admin
- 密码:
ink
导航到Dashboards > Manage > Simple Node Dashboard
查看仪表盘。
metrics dashboard gif
故障排除
长时间出现"walking back L1Block with curr=0x0000...:0 next=0x0000...:0"
如果在Ecotone升级后长时间出现此问题,可以尝试以下解决方法:
- 等待几分钟,问题通常会自行解决。
- 重启Docker Compose:
docker compose down
和docker compose up -d --build
- 如果仍然无效,尝试在
.env
中设置OP_GETH__SYNCMODE=full
并重启Docker Compose。
同类项目介绍
除了Ink Node,还有一些其他类似的区块链节点管理工具,例如:
- Geth:以太坊的官方Go语言实现,支持完整节点和归档节点的运行。
- Parity:另一个流行的以太坊客户端,提供高效的同步和强大的管理功能。
- Besu:由Hyperledger开发的以太坊客户端,支持企业级应用和私有链部署。
这些工具各有特点,开发者可以根据自己的需求选择合适的节点管理工具。
通过本文的详细介绍,相信你已经掌握了如何在Ink链上运行一个节点的全部步骤。无论是测试网还是主网,运行节点都是深入了解区块链技术的重要一步。希望这篇文章能帮助你在区块链的世界中更进一步!