摘要
# 什么是 Stellar RPC,如何使用它? Stellar RPC(远程过程调用)是与 Stellar 区块链网络交互的标准接口。它允许开发者以编程方式查询账本数据、提交交易和管理账户。Stellar 的 RPC API 与兼容以太坊的 JSON-RPC 不同;它使用基于 RESTful 原则构建的自定义 Horizon API,但也支持用于智能合约交互的 Soroban RPC。本指南涵盖了在 Stellar 上构建所需的基本端点、身份验证和最佳实践。 无论您是在构建支付应用、去中心化交易所还是 Soroban 上的智能合约,可靠的 RPC 访问都至关重要。OnFinality 提供托管式 Stellar RPC 端点,具有高可用性和低延迟,支持 Horizon 和 Soroban RPC 用于生产工作负载。
关键要点
- Stellar RPC 主要通过 Horizon REST API 和用于智能合约的 Soroban RPC 访问。
- Horizon 端点允许查询账户、交易、报价和账本数据。
- Soroban RPC 使用 JSON-RPC 实现合约部署、调用和事件检索。
- 公共 Stellar RPC 端点通常不需要身份验证,但存在速率限制。
- 对于生产应用,使用托管式 RPC 提供商(如 OnFinality)可确保可靠性和可扩展性。
- Stellar 测试网可用于开发,可通过专用测试网 RPC 端点访问。
- 选择共享还是专用 RPC 节点取决于您的吞吐量和延迟要求。
理解 Stellar RPC:Horizon 与 Soroban
Stellar 提供两种主要的 RPC 接口:Horizon 和 Soroban RPC。Horizon 是一个 RESTful API,提供对核心 Stellar 网络数据(如账户、交易和账本条目)的访问。它是传统支付和资产操作中最常用的与 Stellar 交互的方式。
Soroban RPC 是为 Stellar 的智能合约平台引入的 JSON-RPC 接口。它允许开发者部署和调用合约、查询合约状态以及订阅合约事件。Soroban RPC 紧密遵循以太坊 JSON-RPC 规范,但使用 Stellar 特定的方法。
这两种接口对于在 Stellar 上构建都至关重要。OnFinality 同时支持 Horizon 和 Soroban RPC 端点,确保您拥有满足所有 Stellar 开发需求的单一提供商。
- Horizon:用于账户、交易、报价和账本数据的 RESTful API。
- Soroban RPC:用于智能合约部署和调用的 JSON-RPC。
- 两者均可在主网和测试网上使用。
关键 Horizon 端点
Horizon 提供了广泛的端点用于与 Stellar 网络交互。以下是一些最常用的端点。
- List the exact RPC methods, chains, and environments your app will call.
- Test with the same request pattern your frontend, backend, bot, dashboard, or indexer will use.
- Check whether archive, trace, WebSocket, testnet, analytics, or dedicated-node access is actually required.
- Review pricing, usage visibility, and upgrade paths before moving sustained traffic.
| 标准 | 检查内容 | 为什么重要 |
|---|---|---|
| 端点 | GET /accounts/{account_id} | 检索账户详情、余额和序列号。 |
| 端点 | GET /transactions/{hash} | 获取交易详情,包括费用、备注和操作。 |
| 端点 | POST /transactions | 向网络提交已签名的交易。 |
| 端点 | GET /ledgers/{sequence} | 查询账本头部和元数据。 |
| 端点 | GET /offers/{offer_id} | 检索去中心化交易所上特定报价的详情。 |
Soroban RPC 方法
Soroban RPC 公开了类似于以太坊 JSON-RPC 的方法。关键方法包括:
- getHealth:检查 RPC 节点是否同步且健康。
- getLedgerEntry:检索特定的账本条目(合约代码、合约数据等)。
- sendTransaction:提交已签名的 Soroban 交易。
- getTransaction:获取已提交交易的状态和结果。
- simulateTransaction:模拟合约调用以估算费用并验证。
- getEvents:按主题或合约 ID 查询合约事件。
| 标准 | 检查内容 | 为什么重要 |
|---|---|---|
| Endpoint | GET /accounts/{account_id} | Retrieve account details, balances, and sequence number. |
| Endpoint | GET /transactions/{hash} | Get transaction details including fee, memo, and operations. |
| Endpoint | POST /transactions | Submit a signed transaction to the network. |
| Endpoint | GET /ledgers/{sequence} | Query ledger header and metadata. |
| Endpoint | GET /offers/{offer_id} | Retrieve details of a specific offer on the decentralized exchange. |
身份验证和速率限制
公共 Stellar RPC 端点(Horizon 和 Soroban)通常不需要身份验证。但是,它们会实施速率限制以防止滥用。例如,Stellar 开发基金会的公共 Horizon 实例允许每个 IP 每秒最多 10 个请求。Soroban RPC 端点可能有类似或更严格的限制。
对于生产应用,依赖公共端点存在风险,因为可能遇到限流或停机。使用托管式 RPC 提供商(如 OnFinality)可提供更高的速率限制、专用吞吐量和 support terms 保障的可用性。OnFinality 还提供用于身份验证和使用跟踪的 API 密钥。
- getHealth: Check if the RPC node is synced and healthy.
- getLedgerEntry: Retrieve a specific ledger entry (contract code, contract data, etc.).
- sendTransaction: Submit a signed Soroban transaction.
- getTransaction: Get the status and result of a submitted transaction.
- simulateTransaction: Simulate a contract invocation to estimate fees and validate.
- getEvents: Query contract events by topic or contract ID.
选择共享还是专用 Stellar RPC
共享 RPC 端点成本效益高,适用于开发、测试和低流量应用。它们跨多个用户共享资源,在高峰使用期间可能导致性能波动。
专用 Stellar 节点提供隔离的基础设施,具有保证的性能、无速率限制以及对节点配置的完全控制。它们非常适合高吞吐量应用、交易所或需要持续低延迟的服务。
OnFinality 提供共享和专用 Stellar RPC 选项。您可以从共享端点开始,随着应用增长升级到专用端点。
Stellar RPC 集成的最佳实践
集成 Stellar RPC 时,请遵循以下最佳实践以确保可靠性和效率。
- 使用连接池和重试逻辑来处理临时故障。
- 监控您的速率限制使用情况,如果持续达到限制,请升级到专用节点。
- 缓存频繁访问的数据(例如账户详情)以减少 RPC 调用。
- 对于 Soroban,始终在提交前模拟交易以捕获错误并估算费用。
- 在部署到主网之前,使用测试网进行开发和预发布。
- 选择具有全球边缘缓存的提供商以最小化延迟。
开始使用 OnFinality Stellar RPC
OnFinality 为 Horizon 和 Soroban 提供托管式 Stellar RPC 端点。要开始使用:
1. 注册 OnFinality 账户并导航到 Stellar 网络页面。 2. 获取您的 API 端点 URL 和可选的 API 密钥。 3. 配置您的应用以使用该端点,如果需要,设置适当的身份验证标头。 4. 使用您首选的 HTTP 客户端或 SDK 开始发送请求。 OnFinality 端点针对低延迟和高可用性进行了优化,具有自动故障转移和负载均衡。
- 即时访问 Stellar 主网和测试网 RPC。
- 支持 Horizon REST 和 Soroban JSON-RPC。
- 可从共享节点扩展到专用节点。
- 全天候监控和支持。
Getting Started with OnFinality Stellar RPC
OnFinality provides managed Stellar RPC endpoints for both Horizon and Soroban. To get started:
1. Sign up for an OnFinality account and navigate to the Stellar network page. 2. Obtain your API endpoint URL and optional API key. 3. Configure your application to use the endpoint, setting appropriate headers for authentication if required. 4. Start making requests using your preferred HTTP client or SDK. OnFinality endpoints are optimized for low latency and high availability, with automatic failover and load balancing.
- Instant access to Stellar mainnet and testnet RPC.
- Supports both Horizon REST and Soroban JSON-RPC.
- Scalable from shared to dedicated nodes.
- 24/7 monitoring and support.
常见问题
Horizon 和 Soroban RPC 有什么区别?
Horizon 是用于核心 Stellar 网络操作(账户、交易、报价)的 RESTful API。Soroban RPC 是用于 Soroban 平台上智能合约交互的 JSON-RPC 接口。
使用 Stellar RPC 需要 API 密钥吗?
公共 Stellar RPC 端点通常不需要 API 密钥,但它们有速率限制。像 OnFinality 这样的托管提供商可能提供 API 密钥以获得更高的限制和使用跟踪。
我可以将 Stellar RPC 用于 Soroban 智能合约吗?
是的,Soroban RPC 专门设计用于在 Stellar 上部署和调用智能合约。它提供了 sendTransaction、simulateTransaction 和 getEvents 等方法。
Stellar RPC 的速率限制是多少?
公共端点通常限制为每个 IP 每秒 10 个请求。托管提供商提供更高的限制,或者通过专用节点提供无限制访问。
如何选择共享还是专用 Stellar RPC?
共享 RPC 适用于开发和低流量应用。对于具有高吞吐量或低延迟要求的生产应用,建议使用专用 RPC。