摘要
Starknet 节点是一种软件,它与 Starknet 网络同步,验证状态转换,并为 dApp 和索引器提供 JSON-RPC 请求服务。运行全节点可以让您直接访问和控制,但需要大量的硬件、存储和维护。对于大多数生产工作负载,像 OnFinality 这样的托管 RPC 服务可以提供可靠的端点,而无需运营开销。
快速决策:自行运行 Starknet 节点还是使用托管 RPC?
在深入了解节点架构之前,先决定您的项目实际需要什么。运行 Starknet 节点可以让您完全控制并拥有数据,但也会带来实际成本:硬件、存储、同步时间和持续维护。像 OnFinality 这样的托管 RPC 服务可以抽象掉这些,让您专注于应用程序。
| 考虑因素 | 自行运行节点 | 使用托管 RPC(例如 OnFinality) |
|---|---|---|
| 设置时间 | 数天到数周(同步 + 配置) | 几分钟(API 密钥 + 端点) |
| 硬件成本 | 高(SSD、RAM、带宽) | 可预测的订阅 |
| 维护 | 您处理升级、监控、备份 | 提供商处理 |
| 可扩展性 | 手动容量规划 | 自动扩展 |
| 控制 | 完全数据访问和自定义查询 | 仅限于提供的 API |
| 最适合 | 研究、自定义索引、最大隐私 | 生产 dApp、初创公司、没有基础设施专业知识的团队 |
如果您需要检查原始状态或运行公共 API 不支持的自定义查询,自托管节点是可行的方法。对于大多数 dApp、钱包和索引器,托管 RPC 是务实的选择。查看 RPC 定价 和 支持的网络,看看 OnFinality 是否适合您的工作负载。
什么是 Starknet 节点?
Starknet 是以太坊上的第 2 层(L2)扩展解决方案,使用 zk-rollups 在链下批量处理交易,并将有效性证明发布到以太坊。Starknet 节点是连接到 Starknet 网络、同步状态并公开 JSON-RPC 接口以查询和提交交易的客户端。
节点是任何 Starknet dApp 的关键基础设施。它们允许您读取合约状态、模拟交易和广播新交易。没有节点,您无法以编程方式与网络交互。
Starknet 节点如何工作?
Starknet 节点与排序器和其他节点通信,以维护网络的一致视图。它们处理区块、执行交易并存储结果状态。节点的 JSON-RPC API 允许客户端查询区块号、交易回执和合约存储等数据。
Starknet 节点的关键组件:
- 同步层:从网络下载并验证区块。
- 状态管理:跟踪所有合约的当前状态。
- JSON-RPC 服务器:为客户端提供请求服务。
- 交易池:在交易被包含在区块之前保存待处理的交易。
运行您自己的 Starknet 节点
如果您决定运行自己的节点,以下是您需要了解的内容。
硬件要求
Starknet 节点资源密集。您需要:
- 具有多核的现代 CPU
- 至少 16GB RAM(推荐 32GB)
- 至少 500GB 可用空间的快速 SSD(随时间增长)
- 高带宽的稳定互联网连接
软件选项
有几种 Starknet 节点实现,包括:
- Pathfinder:用 Rust 编写,由 Starknet 生态系统维护。
- Junō:Go 实现,专注于性能。
- Papyrus:Rust 实现,专注于全节点功能。
根据您的熟悉程度和性能需求选择一个。大多数文档可在各自的 GitHub 仓库中找到。
设置步骤
- 安装节点软件(例如,下载二进制文件或从源代码构建)。
- 配置节点以连接到 Starknet 网络(主网或测试网)。
- 启动节点并等待其同步。这可能需要数小时或数天,具体取决于硬件和网络条件。
- 通过检查区块浏览器上的最新区块号来验证节点是否已同步。
- 将 JSON-RPC 端点(通常为
http://localhost:9545)暴露给您的应用程序。
常见陷阱
- 存储不足:区块链增长迅速;规划扩展。
- 同步问题:如果您的节点落后,可能需要重新同步。
- 安全性:在没有适当身份验证的情况下公开您的节点可能导致滥用。
使用 JSON-RPC 连接到 Starknet 节点
一旦您有了节点(自托管或托管),您可以通过 JSON-RPC 与之交互。以下是使用 curl 的基本示例:
curl -X POST http://localhost:9545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"starknet_blockNumber","params":[],"id":1}'
这将返回最新的区块号。其他常见方法包括:
starknet_getBlockWithTxHashesstarknet_getTransactionReceiptstarknet_callstarknet_addInvokeTransaction
对于托管端点,您可以将 URL 替换为 RPC 提供商提供的 URL。OnFinality 为 Starknet 提供公共和私有端点;有关详细信息,请参阅 Starknet 网络页面。
在您的 dApp 中使用 Starknet 节点
大多数开发人员使用像 starknet.js 这样的库与节点交互。以下是一个快速示例:
import { Provider } from 'starknet';
const provider = new Provider({
nodeUrl: 'https://starknet-mainnet.public.blastapi.io' // 替换为您的节点 URL
});
const blockNumber = await provider.getBlockNumber();
console.log('最新区块:', blockNumber);
将 nodeUrl 替换为您自己的端点。如果您使用 OnFinality,您将在创建 API 密钥后获得专用 URL。
托管 Starknet 节点:何时使用
像 OnFinality 这样的托管 RPC 服务提供了几个优势:
- 无需基础设施管理:您无需担心硬件、正常运行时间或扩展。
- 可靠的端点:提供商确保高可用性和性能。
- 易于扩展:随着您的 dApp 增长,您可以升级计划而无需停机。
- 支持:在需要时获得基础设施专家的帮助。
OnFinality 支持 Starknet 作为其 网络产品 的一部分。您可以从免费层开始,并根据需要进行扩展。查看 定价 了解详情。
关键要点
- Starknet 节点对于以编程方式与 Starknet 网络交互至关重要。
- 运行自己的节点可以让您控制,但需要大量资源和维护。
- 像 OnFinality 这样的托管 RPC 服务为生产 dApp 提供了方便、可扩展的替代方案。
- 使用 JSON-RPC 方法查询和提交交易,并使用像
starknet.js这样的库来简化集成。
常见问题解答
Starknet 全节点和轻节点有什么区别?
全节点存储整个状态并验证所有交易,而轻节点仅验证区块头并依赖全节点获取数据。全节点资源密集,但提供完整的数据访问。
同步 Starknet 节点需要多长时间?
同步时间因硬件和网络条件而异。在具有良好带宽的快速机器上,可能需要几个小时到一天。较慢的设置可能需要几天。
我可以免费使用 Starknet 节点吗?
是的,您可以免费运行自己的节点(不包括硬件成本),或使用有限速的公共 RPC 端点。对于生产环境,请考虑使用具有免费层的托管服务,如 OnFinality。
Starknet 节点的硬件要求是什么?
您需要至少 16GB RAM、多核 CPU 和具有 500GB+ 可用空间的快速 SSD。随着网络的增长,要求可能会增加。
如何在运行自己的节点和使用托管 RPC 之间做出选择?
如果您需要完全控制、自定义查询或正在进行研究,请自行运行。如果您想专注于构建 dApp 而无需担心基础设施,请使用托管 RPC 服务。