摘要
Stellar 节点是运行 Stellar 网络的服务器,负责验证交易和维护账本。本文解释了不同的节点类型、如何运行节点,以及如何使用 RPC 端点将您的应用程序连接到网络。
快速决策指南:您需要运行 Stellar 节点还是仅连接一个?
在深入了解节点类型和设置之前,先问问自己实际需要什么。大多数应用程序不需要运行 Stellar 节点。如果您正在构建钱包、交易所集成或支付应用,您需要可靠地访问网络数据并能够提交交易。运行自己的节点可以让您完全控制并保护数据隐私,但会带来运维开销:同步、监控以及跟上协议升级。
如果您刚刚起步或流量适中,使用像 OnFinality 的 Stellar RPC 这样的托管 RPC 服务是最快的途径。您将获得用于测试的公共端点和用于生产的可扩展访问,而无需管理基础设施。如果您有严格的数据驻留或合规要求,或者预期请求量非常高,那么专用节点可能值得投入成本。对于大多数团队来说,决策归结为:您是想将工程时间花在节点运维上,还是花在产品上?
什么是 Stellar 节点?
Stellar 节点是运行 Stellar Core 软件的计算机,该软件实现了 Stellar 共识协议(SCP)。节点之间相互通信以就账本状态达成一致。与工作量证明或权益证明网络不同,Stellar 使用联邦拜占庭协议系统。每个节点选择一组受信任的验证节点,称为 quorum slice,当足够多的节点达成一致时即达成共识。
节点可以扮演不同的角色:
- 验证节点:通过提议和投票交易集参与共识。验证节点是网络达成一致的骨干。
- 全节点:维护账本的完整副本并验证所有交易,但不一定参与共识。全节点向客户端提供数据并有助于网络健康。
- 归档节点:存储历史账本数据,使新节点能够从快照同步,并为分析提供数据。
对于大多数开发者来说,节点类型的区别不如访问方式重要。您通过 API 与网络交互,通常是 Horizon 或 Soroban RPC,我们将在下面介绍。
Stellar 节点类型比较
| 节点类型 | 角色 | 资源要求 | 典型用例 |
|---|---|---|---|
| 验证节点 | 参与共识 | 高 CPU、网络和存储 | 网络安全和治理 |
| 全节点 | 账本副本和数据服务 | 中到高存储 | 运行自己的 Horizon 实例 |
| 归档节点 | 历史数据存储 | 非常高的存储 | 分析、合规和快照 |
验证节点对网络运行至关重要,但大多数开发者不需要运行它们。对于希望自托管 Horizon 或需要直接访问账本数据的团队来说,全节点更常见。归档节点用于专门的用例。
如何运行 Stellar 节点
运行 Stellar 节点涉及安装 Stellar Core 并配置其连接到网络。该过程在官方 Stellar 文档中有详细说明,但以下是高级概述。
前提条件
- 一台至少 8 GB RAM 和几百 GB 存储空间的服务器(账本会随时间增长)。
- 如果您想参与网络,需要一个公共 IP 地址。
- 基本熟悉 Linux 和命令行工具。
安装步骤
- 安装 Stellar Core:您可以下载预编译的二进制文件或从源代码构建。官方文档提供了各种操作系统的说明。
- 配置 stellar-core.cfg:此文件包含您节点的身份、网络设置和 quorum set。您需要指定网络口令(例如,主网的
Public Global Stellar Network ; September 2015)。 - 与网络同步:初始同步可能需要数小时或数天,具体取决于您的硬件和网络速度。您可以使用归档节点的快照来加速此过程。
- 运行 Horizon:如果您想为应用程序提供 HTTP API,您还需要运行 Horizon,它连接到 Stellar Core 并索引数据。
以下是一个 stellar-core.cfg 的最小示例片段:
[NETWORK]
NETWORK_PASSPHRASE="Public Global Stellar Network ; September 2015"
[QUORUM_SET]
VALIDATORS="GCGB2S2KjARzYHe1i4EsnDWxFiUlytK8vH8D2UfJ7VvH4ZqYg"
[HTTP]
PORT=11626
这是一个简化的示例。实际上,您需要在 quorum set 中包含更多验证节点,并配置数据库连接。
连接 Stellar:Horizon 和 Soroban RPC
一旦您运行了节点(或使用第三方服务),您就可以通过 API 与 Stellar 交互。两个主要接口是:
- Horizon:一个 RESTful API,提供对账户、交易和账本数据的访问。这是在 Stellar 上构建的传统方式。
- Soroban RPC:一个 JSON-RPC API,用于与 Soroban 智能合约交互,随 Soroban 升级引入。
大多数开发者使用 Horizon 进行基本操作,使用 Soroban RPC 进行合约交互。如果您使用托管提供商,您将获得两者的端点。
例如,要通过 Horizon 获取账户详细信息,您可以使用简单的 curl 命令:
curl https://horizon.stellar.org/accounts/GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF
将地址替换为真实地址。这将返回包含账户余额、序列号和其他数据的 JSON。
Stellar RPC 端点和配置
当您使用第三方 RPC 提供商时,通常会获得一个指向 Horizon 或 Soroban RPC 实例的 URL。OnFinality 提供一个公共 Stellar 端点,您可以在开发中使用。对于生产环境,您应该注册 API 密钥以获得更高的速率限制和可靠性。
OnFinality 公共 Stellar 端点的基本 URL 是 https://stellar.rpc.onfinality.io。您可以根据服务附加 Horizon 或 Soroban RPC 的路径。例如,要进行 Soroban RPC 调用,您可以使用:
curl -X POST https://stellar.rpc.onfinality.io/rpc \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getHealth","params":[]}'
这是一个简单的健康检查。确切的方法和路径在 Stellar 开发者文档中有记录。
使用 Stellar 节点时的常见陷阱
即使使用托管服务,您也可能遇到问题。以下是一些常见陷阱以及如何避免它们:
- 使用错误的网络:Stellar 有主网和测试网(称为 Futurenet)。确保您的配置使用正确的网络口令和端点。
- 速率限制:公共端点通常有速率限制。如果您发出许多请求,请使用专用端点或添加缓存。
- Horizon 游标和分页:在流式传输交易时,您需要正确处理分页。使用
cursor参数以避免错过事件。 - Soroban RPC 方法差异:Soroban RPC 是 JSON-RPC,但方法与以太坊的不同。请参阅官方文档。
关键要点
- Stellar 节点运行 Stellar Core 并参与共识或提供数据。
- 大多数应用程序不需要运行节点;使用托管 RPC 服务更简单。
- Horizon 是用于账户和交易的 REST API;Soroban RPC 用于智能合约。
- 选择提供商时,请考虑速率限制、正常运行时间以及对 Horizon 和 Soroban RPC 的支持。
- OnFinality 提供公共和专用 Stellar 端点;查看 RPC 定价 和 支持的网络 了解详情。
常见问题解答
Stellar 节点和验证节点有什么区别?
验证节点是参与共识的节点。所有验证节点都是节点,但并非所有节点都是验证节点。全节点和归档节点提供数据,但不一定投票。
同步 Stellar 节点需要多长时间?
初始同步可能需要几个小时到几天,具体取决于您的硬件和网络。使用归档节点的快照可以显著减少此时间。
我可以在笔记本电脑上运行 Stellar 节点吗?
从技术上讲可以,但不推荐。账本很大且不断增长。您需要一台具有可靠存储和网络连接的服务器。
什么是 Soroban RPC?
Soroban RPC 是一个 JSON-RPC API,用于与 Stellar 上的 Soroban 智能合约交互。它允许您提交交易、读取合约状态和模拟合约调用。
如何选择运行自己的节点还是使用托管服务?
如果您需要完全控制、数据隐私或流量非常高,专用节点可能值得。对于大多数项目,像 OnFinality 这样的托管服务在成本和可靠性之间提供了良好的平衡。评估您团队的运维能力和应用程序的需求。