官方地址https://github.com/smartcontracts/simple-optimism-node
机器翻译
我认为人们开始运行自己的 Optimism 节点非常重要。我创建了这个存储库以使该过程尽可能简单。您应该比较熟悉在您的机器上运行命令。我们开始做吧!
所需软件
推荐硬件
- 16GB+ 内存
- 500GB+ 磁盘(HDD 目前可用,SSD 更好)
- 10mb/s+ 下载
近似磁盘使用
截至 2022-09-21 的使用情况:
- 存档节点:~800gb
- 全节点:~60gb
安装和设置说明
此处的说明适用于 MacOS 和大多数 Linux 发行版。我可能不会包含 Windows 的说明,因为我很懒。
将 Docker 配置为非根用户(可选)
如果您计划以根用户身份运行 Docker,则可以安全地跳过此步骤。但是,如果您以非根用户身份使用 Docker,则需要将自己添加到docker
用户组:
sudo usermod -a -G docker `whoami`
您需要注销并重新登录才能使此更改生效。
克隆存储库
git clone https://github.com/smartcontracts/simple-optimism-node.git
cd simple-optimism-node
配置节点
制作一份.env.example
named的副本.env
。
cp .env.example .env
使用您选择的编辑器打开.env
并填写该文件中列出的环境变量。只需要以下变量:
变量的名称 | 描述 |
---|---|
NETWORK_NAME |
运行节点的网络(“mainnet”或“goerli”) |
NODE_TYPE |
要运行的节点类型(“完整”或“存档”) |
SYNC_SOURCE |
从哪里同步数据(“l1”或“l2”) |
HEALTHCHECK__REFERENCE_RPC_PROVIDER |
另一个参考 L2 节点来检查块,以防万一 |
FAULT_DETECTOR__L1_RPC_PROVIDER |
用于检查状态根的 L1 节点 RPC |
DATA_TRANSPORT_LAYER__RPC_ENDPOINT |
从中获取链数据的节点,如果是“l1”,则必须是 L1 节点,SYNC_SOURCE 对于 L2,反之亦然 |
您可以从这些节点提供者处获得 L1/L2 RPC 端点。
如果您愿意,您也可以修改任何可选的环境变量,但默认设置对大多数人来说应该工作得很好。只需确保不要更改标记为“NO TOUCHING”的行下的任何内容,否则您可能会破坏某些东西!
设置数据目录(可选)
请注意,这是一个可选步骤,但对于那些对如何让 Docker 指向主磁盘以外的磁盘感到困惑的人来说可能会有用。如果您希望 Docker 数据保存在主磁盘以外的磁盘上,请创建一个/etc/docker/daemon.json
包含以下内容的文件:
{
"data-root": "/mnt/<disk>/docker_data"
}
确保在执行此操作后重新启动 docker,否则更改将不适用:
sudo systemctl daemon-reload
sudo systemctl restart docker
确认更改已正确应用:
docker info | grep -i "Docker Root Dir"
操作节点
开始
docker compose up -d
将在分离的 shell ( -d
) 中启动节点,这意味着该节点将继续在后台运行。如果您关闭机器,则需要再次运行此程序。
第一次启动节点时,它会从再生(2021 年 11 月 11 日)同步到现在。这个过程需要几个小时。
停止
docker compose down
将关闭节点而不擦除任何卷。您可以安全地运行此命令,然后再次重新启动节点。
擦拭
docker compose down -v
将通过删除为每个容器创建的卷来完全擦除节点。注意这是一个破坏性的动作,要非常小心!
日志
docker compose logs <service name>
将显示给定服务的日志。您还可以通过添加标志来实时跟踪服务的日志-f
。
可用的服务是:
更新
docker compose pull
将为您尚未硬编码服务版本的任何服务下载最新图像。定期推送更新以提高 Optimism 节点的稳定性或引入新的生活质量功能,如更好的日志记录和更好的指标。我建议您每隔一段时间运行一次此命令(每周一次应该绰绰有余)。如果您打算长期维护一个 Optimism 节点,也值得通过RSS或optimism-announce@optimism.io 邮件列表订阅Optimism Public Changelog。
包括什么
乐观节点
目前,一个 Optimism 节点可以从 L1 或其他 L2 节点同步。从 L1 同步通常是最安全的选择,但需要更长的时间。从 L1 同步的节点也将落后于链的尖端,具体取决于 Optimism Sequencer 将交易发布到以太坊所需的时间。从 L2 同步速度更快,但(目前)需要信任您从中同步的 L2 节点。
许多人正在运行从其他 L2 节点同步的节点,但我想激励更多人运行直接从 L1 同步的节点。因此,我将此存储库设置为默认从 L1 同步。稍后我可能会添加从 L2 同步的选项,但我需要暂时做其他事情。
健康检查
当您使用这些说明运行您的 Optimism 节点时,您还将运行两个服务来监控您的节点的健康状况和网络的健康状况。Healthcheck 服务会不断地将您的节点计算的状态与其他参考节点的状态进行比较。这是确认您的节点是否正确同步的好方法。
故障检测器
Fault Detector 服务将持续扫描 Optimism Sequencer 发布的交易结果,并将它们与您的节点在本地生成的交易结果进行交叉检查。 如果这两个值之间存在差异,请大声抱怨! 这意味着 Sequencer 发布了无效的交易结果,或者您的节点软件中存在错误,Optimism 开发人员需要了解它。将来,该服务将触发 Cannon,这是 Optimism 在其 Bedrock 升级中构建的故障证明机制。
故障检测器公开了几个指标,可用于确定您的节点是否检测到差异,包括is_currently_diverged
仪表。Fault Detector 还公开了一个简单的 API,localhost:$PORT__FAULT_DETECTOR_METRICS/api/status
用于返回{ ok: boolean }
. 您可以使用此 API 从另一个应用程序监视 Fault Detector 的状态。
指标仪表板
Grafana 公开在http://localhost:3000并带有一个预加载的仪表板(“简单节点仪表板”)。Simple Node Dashboard 包含基本节点信息,如果您的节点与参考 L2 节点不同步或是否检测到状态根故障,它将告诉您。
使用以下登录详细信息访问仪表板:
- 用户名:
admin
- 密码:
optimism
导航Dashboards > Manage > Simple Node Dashboard
到查看仪表板,如果您需要帮助,请查看以下 gif: