摘要
Gnosis 节点是验证并为 Gnosis 链提供数据的客户端,Gnosis 链是一个专注于稳定币支付的 EVM 兼容网络。大多数开发者不需要运行节点:托管的 RPC 端点提供了可靠的链访问,无需同步和维护基础设施的开销。本文解释了 Gnosis 节点的功能、如何连接 Gnosis RPC,以及如何在运行自己的节点和使用托管服务之间做出选择。
Gnosis 是一个 EVM 兼容的区块链,专为快速、低成本的稳定币交易而设计。如果你在 Gnosis 上构建,你最终需要与 Gnosis 节点交互——要么自己运行一个,要么连接到远程 RPC 端点。本文解释了什么是 Gnosis 节点,如何连接到网络,以及如何在自托管和使用托管 RPC 服务之间做出决定。
快速建议:运行自己的节点还是使用托管 RPC?
在深入节点设置之前,决定你想如何访问 Gnosis 链。你的选择会影响成本、维护和可靠性。
- 对于生产级 dApp 和高流量后端:使用像 OnFinality 这样的托管 RPC 提供商。你获得可靠的端点,而无需同步或监控基础设施。OnFinality 提供专用节点和共享 RPC,定价随使用量扩展。
- 对于开发和测试:公共端点或轻量级本地节点通常就足够了。OnFinality 在
https://gnosis.api.onfinality.io/public提供公共 Gnosis RPC 端点,用于快速实验。 - 对于最大控制或合规性:运行自己的 Gnosis 节点让你完全控制客户端、数据和访问。但你需要处理硬件、存储和持续维护。
如果你不确定,从托管 RPC 开始,当流量增长时迁移到专用节点。OnFinality 的支持的网络包括 Gnosis,你可以在不更改应用程序代码的情况下切换计划。
什么是 Gnosis 节点?
Gnosis 节点是连接到 Gnosis 网络的软件客户端,验证交易和区块,并维护区块链状态的副本。节点是网络的骨干:它们中继交易,向钱包和 dApp 提供数据,并参与共识。
Gnosis 是一个 EVM 兼容链,因此它使用像 Nethermind、Erigon 和 Geth 这样的客户端(尽管 Geth 在 Gnosis 上不太常见)。这些客户端实现了以太坊协议,并带有 Gnosis 特定的修改,例如 xDai 代币作为原生货币。
当你与 Gnosis 交互——发送交易、读取合约或查询余额——你是在向节点发出 JSON-RPC 调用。节点处理你的请求并返回结果。
Gnosis 链设置一览
如果你要连接 Gnosis,你需要正确的网络设置。以下是一个快速参考:
| 设置 | 值 |
|---|---|
| 链 ID | 100 |
| 原生货币 | xDAI (XDAI) |
| 区块浏览器 | https://gnosisscan.io |
| 公共 RPC 端点 | https://gnosis.api.onfinality.io/public |
这些设置用于钱包、dApp 和后端服务。对于托管 RPC,你通常会使用包含 API 密钥的端点,你可以从 OnFinality 的 Gnosis 网络页面 获取。
如何连接 Gnosis RPC
如果你有正确的端点,连接 Gnosis 很简单。以下是如何使用 curl 进行第一次 JSON-RPC 调用。
curl -X POST https://gnosis.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
此请求返回最新区块号,确认你的端点可达且已同步。
对于更实际的示例,让我们获取一个地址的余额:
curl -X POST https://gnosis.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x742d35Cc6634C0532925a3b844Bc454e4438f44e","latest"],"id":1}'
将地址替换为有效的 Gnosis 地址以获取其 wei 余额。
在 JavaScript 中使用 Gnosis RPC (ethers.js)
对于 dApp 开发者,使用像 ethers.js 这样的库可以简化交互。以下是一个最小示例:
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://gnosis.api.onfinality.io/public");
async function getBlockNumber() {
const blockNumber = await provider.getBlockNumber();
console.log("Current block number:", blockNumber);
}
getBlockNumber();
在生产环境中,你会希望使用带有 API 密钥的私有端点,以避免速率限制并确保可靠性。OnFinality 通过其 API 服务 提供此类端点。
运行自己的 Gnosis 节点:涉及什么?
如果你决定运行自己的节点,以下是你需要了解的。
硬件要求
Gnosis 节点需要大量资源,尤其是归档节点。对于全节点,你需要:
- CPU:4 核以上
- RAM:最低 16 GB,推荐 32 GB
- 存储:1 TB+ SSD(随时间增长)
- 网络:稳定的高带宽互联网连接
归档节点需要更多存储,通常为数 TB。
客户端选项
Gnosis 支持多种客户端。Nethermind 和 Erigon 是流行的选择。你可以使用 Docker 或二进制文件运行节点。
Nethermind 的示例 Docker 命令(简化):
docker run -d --name gnosis-node \
-v /path/to/data:/data \
-p 8545:8545 \
nethermind/nethermind:latest \
--config gnosis \
--JsonRpc.Enabled true
这是一个基本示例;你需要为你的环境正确配置客户端。
同步和维护
启动节点后,它将同步整个区块链历史。这可能需要几天时间,具体取决于你的硬件和网络。同步完成后,你必须监控节点问题,应用客户端更新,并确保其保持健康。
运行节点是一项重大的运营承诺。如果你没有资源或专业知识,托管服务通常是更好的选择。
托管 Gnosis RPC 与自托管:比较什么
在评估是使用托管 RPC 提供商还是运行自己的节点时,请考虑以下因素:
| 因素 | 自托管节点 | 托管 RPC (OnFinality) |
|---|---|---|
| 设置时间 | 数天到数周 | 分钟 |
| 维护 | 你处理更新、监控和备份 | 提供商处理 |
| 成本 | 硬件、电力和你的时间 | 订阅或按需付费 |
| 可扩展性 | 手动容量规划 | 自动扩展 |
| 可靠性 | 取决于你的基础设施 | 提供商 SLA(如果适用) |
| 归档数据 | 需要大量存储 | 可按需提供 |
OnFinality 提供共享和专用节点,随着需求变化为你提供灵活性。
常见陷阱和故障排除
以下是开发人员在连接 Gnosis RPC 时遇到的一些问题以及如何解决它们。
错误的链 ID
如果你的交易失败,请检查你使用的是链 ID 100。使用错误的链 ID 可能导致交易被拒绝或发送到错误的网络。
公共端点上的速率限制
公共端点是共享的,可能有速率限制。如果你看到类似 429 Too Many Requests 的错误,请切换到带有 API 密钥的私有端点。
节点未同步
如果你运行自己的节点并获取过时数据,你的节点可能未完全同步。检查最新区块号与浏览器。
WebSocket 支持
对于实时更新,你需要一个 WebSocket 端点。OnFinality 的 Gnosis 网络页面 提供了可用传输的详细信息。
关键要点
- Gnosis 节点是通过 JSON-RPC 提供对 Gnosis 链访问的客户端。
- 你可以运行自己的节点或使用像 OnFinality 这样的托管 RPC 服务。
- 托管 RPC 节省时间和精力,尤其对于生产应用。
- 始终使用正确的链 ID (100) 和 Gnosis 端点。
- 公共端点适合测试,但私有端点更适合生产。
常见问题解答
Gnosis 链 ID 是什么?
Gnosis 链 ID 是 100。
Gnosis 的原生货币是什么?
原生货币是 xDAI (XDAI),一种与美元挂钩的稳定币。
我需要在 Gnosis 上构建时运行 Gnosis 节点吗?
不需要。你可以使用像 OnFinality 这样的托管 RPC 提供商来访问网络,而无需运行自己的节点。
同步 Gnosis 节点需要多长时间?
同步时间因硬件和网络而异,但全节点可能需要几天时间。
我可以将 OnFinality 用于 Gnosis 测试网吗?
OnFinality 支持 Gnosis 主网。对于测试网需求,请查看支持的网络页面以获取可用的测试网。
全节点和归档节点有什么区别?
全节点存储当前状态,而归档节点存储历史状态,允许查询任何过去的区块。归档节点需要更多存储。