摘要
Polkadex 是一个基于 Polkadot 的非托管交易网络,具有订单簿引擎和 Substrate/Polkadot.js 风格的 RPC 接口。本页解释了开发者通常连接什么、如何选择端点,以及在 Polkadex 上构建时如何调试常见问题。它还涵盖了何时使用托管 RPC API 或专用节点比运行自己的基础设施更合适。
Polkadex 是一个基于 Polkadot 的网络,专注于非托管交易,具有链上订单簿和 Substrate 风格的 RPC 接口。如果您正在构建钱包、交易仪表板、机器人或索引器,第一个实际问题通常是相同的:我将应用指向哪个端点,以及当调用开始失败时我该怎么办?
本页快速回答这个问题,然后深入探讨端点选择、钱包配置、JSON-RPC 调试以及节点基础设施的构建与购买决策。它是为已经知道需要与 Polkadex 通信并希望获得可靠生产路径的开发者编写的。
快速推荐:托管 RPC 与自托管节点
在编写任何代码之前,决定如何访问链。这个决定会影响您的延迟、维护负载以及团队花在基础设施而非产品上的时间。
| 情况 | 推荐方法 | 原因 |
|---|---|---|
| 原型设计、黑客马拉松或早期测试 | 公共或共享 RPC 端点 | 首次成功调用的最快路径;无需运行服务器 |
| 具有稳定读取流量的生产 dApp | 来自提供商的托管 RPC API | 卸载节点升级、同步和监控 |
| 高频交易机器人或索引器 | 专用节点 | 可预测的资源和隔离的吞吐量 |
| 合规或数据驻留要求 | 自托管或专用节点 | 完全控制数据和密钥的位置 |
| 您需要归档或跟踪风格的历史数据 | 支持归档的提供商 | 避免自己运行和存储大型归档节点 |
如果您仍在评估提供商,一个好的起点是我们的指南如何选择 RPC 提供商。如果您已经知道需要隔离容量,请查看专用节点。
Polkadex RPC 接口实际暴露的内容
Polkadex 使用 Substrate 构建,因此其 RPC 表面遵循熟悉的 Substrate/Polkadot.js 模式,而不是以太坊 JSON-RPC 方法集。在实践中,您将使用几个方法系列:
- 链和状态方法,如
chain_getHeader、chain_getBlockHash和state_getMetadata,用于读取链状态和元数据。 - 运行时和存储查询,通过
state_getStorage和state_getKeys,它们支撑大多数应用级读取。 - 提交方法,如
author_submitExtrinsic和author_pendingExtrinsics,用于发送和跟踪交易。 - 订阅方法,如
chain_subscribeNewHeads和state_subscribeStorage,用于通过 WebSocket 进行实时更新。
由于确切的方法集和运行时元数据会随着网络升级而变化,请始终从您连接的节点获取当前元数据,而不是硬编码类型。当您连接到活动端点时,Polkadot.js 和基于 Substrate 的 SDK 等库会自动处理这一点。
链设置一览
当您配置钱包或客户端时,需要网络的标识详细信息。使用以下值作为检查清单,并在发布前对照 Polkadex 网络页面 确认它们。
| 设置 | 需要确认的内容 |
|---|---|
| 网络名称 | Polkadex(主网) |
| 代币符号 | PDEX |
| 地址格式 | SS58,Polkadot 生态系统前缀 |
| RPC 传输 | HTTP(S) 用于请求/响应,WebSocket 用于订阅 |
| 元数据 | 在运行时获取;不要硬编码 |
| 浏览器 | 使用官方 Polkadex 浏览器进行交易查找 |
如果您的工具期望以太坊风格的链 ID,请注意 Substrate 网络不以相同方式使用它。相反,您的客户端通过创世哈希和元数据来识别链。支持 Substrate 的钱包和 SDK 会要求提供 RPC URL 并推导其余部分。
从 JavaScript 和命令行连接
大多数 Polkadex 集成使用 Polkadot.js 或 Substrate 客户端。一个最小的连接如下所示:
import { ApiPromise, WsProvider } from '@polkadot/api';
const provider = new WsProvider('wss://your-polkadex-rpc-endpoint');
const api = await ApiPromise.create({ provider });
const [chain, nodeName, nodeVersion] = await Promise.all([
api.rpc.system.chain(),
api.rpc.system.name(),
api.rpc.system.version()
]);
console.log(`Connected to ${chain} via ${nodeName} v${nodeVersion}`);
对于没有完整 SDK 的快速健康检查,通过 HTTP 的原始 JSON-RPC 调用通常就足够了:
curl -s -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"system_chain","params":[]}' \
https://your-polkadex-rpc-endpoint
健康的节点会在 result 字段中返回链名称。如果您收到连接错误,则端点不可达;如果您收到方法未找到错误,则可能指向了一个不暴露您所需方法的节点。
订阅和实时数据
交易界面和仪表板通常需要实时更新而不是轮询。Substrate 节点为此暴露了 WebSocket 订阅:
const unsub = await api.rpc.chain.subscribeNewHeads((header) => {
console.log(`New block: ${header.number}`);
});
生产中的两个实用注意事项:
- 重连逻辑是强制性的。 WebSocket 连接会断开。您的客户端应检测断开并重新订阅,最好使用退避策略。
- 并非每个端点都支持订阅。 如果您仅通过 HTTP 连接,订阅方法将失败。在设计实时数据之前,请与您的提供商确认 WebSocket 支持。
调试常见的 Polkadex RPC 故障
当出现问题时,错误消息通常指向几个根本原因之一。使用此表快速缩小范围。
| 症状 | 可能原因 | 下一步 |
|---|---|---|
| 连接被拒绝或超时 | URL 错误、端点关闭或网络被阻止 | 验证 URL 并尝试第二个端点 |
Method not found | 节点不暴露该 RPC 方法 | 检查提供商方法支持或切换端点 |
| 元数据或类型错误 | 运行时升级后客户端类型过时 | 重新获取元数据并更新 SDK |
| 交易卡在待处理状态 | 费用低、nonce 间隙或节点未传播 | 检查 author_pendingExtrinsics 并重新提交 |
| 订阅静默停止 | WebSocket 断开 | 添加重连和重新订阅逻辑 |
| 跨端点读取不一致 | 节点处于不同的区块高度 | 将读取固定到特定区块哈希 |
一个有用的习惯是在每次读取时记录区块哈希。当两个端点不一致时,区块哈希会告诉您这是同步滞后问题还是真正的数据差异。
生产就绪检查清单
在从测试转向生产之前,请检查以下项目。它们能捕获大多数仅在实际流量下才会出现的问题。
- 端点冗余: 配置至少两个 RPC 端点并自动故障转移。
- 速率和负载行为: 了解提供商的请求限制以及您的应用在达到限制时的行为。
- 归档需求: 如果您查询历史状态,请确认端点提供归档数据。
- WebSocket 支持: 订阅所必需;验证其已启用。
- 监控: 跟踪请求成功率、延迟和错误类型,而不仅仅是正常运行时间。
- 密钥管理: 切勿在前端代码中嵌入私钥;在服务器端或钱包中签名。
- 升级处理: 将运行时元数据视为动态,并针对新版本进行测试。
OnFinality 为 Polkadex 和许多其他网络提供 RPC API 访问和专用节点基础设施。您可以查看 RPC 定价 和完整的 支持的 RPC 网络 列表,以了解适合您工作负载的内容。
为 Polkadex 评估 RPC 提供商
如果您决定不运行自己的节点,您选择的提供商将成为您技术栈的一部分。在真正影响您应用的维度上比较候选者。
| 提供商 | 方法覆盖 | 归档和跟踪 | WebSocket | 专用选项 | 备注 |
|---|---|---|---|---|---|
| OnFinality | 支持网络的 Substrate RPC 方法 | 取决于网络和计划 | 支持 | 是 | RPC API 加专用节点;参见 api-service |
| 提供商 B | 因网络而异 | 共享层级通常有限 | 有时 | 有时 | 依赖前请确认 |
| 提供商 C | 因网络而异 | 因网络而异 | 因网络而异 | 很少 | 检查每个网络的方法支持 |
评估时,提出具体问题:暴露了哪些 RPC 方法?归档数据是否可用?是否支持 WebSocket?超出计划时会发生什么?如果共享吞吐量不够,能否获得隔离节点?答案比标题数字更重要。
何时迁移到专用节点
共享 RPC 端点对于大多数读取密集型应用来说是高效的。但有些工作负载会超出它们:
- 交易机器人 需要一致、低方差的响应时间。
- 索引器 扫描大范围的区块和状态。
- 具有严格隔离需求的应用,其中噪声邻居效应不可接受。
- 希望获得可预测容量 而非共享池的团队。
专用节点为您提供隔离的资源和更多的配置控制。权衡是成本和运行它的运营工作,这就是为什么许多团队从托管 RPC API 开始,仅当流量证明合理时才转向专用容量。有关该选项的工作原理,请参见 专用节点。
关键要点
- Polkadex 使用 Substrate 风格的 RPC 接口,因此请围绕 Substrate 方法和运行时元数据进行规划,而不是以太坊 JSON-RPC。
- 尽早选择访问方法:大多数应用使用共享 RPC,高频或隔离工作负载使用专用节点。
- 始终配置多个端点并在客户端中构建故障转移。
- 在运行时获取元数据并保持 SDK 类型最新,以应对运行时升级。
- 在读取时记录区块哈希,以区分同步滞后和真实数据差异。
- 在设计之前,与您的提供商确认归档、跟踪和 WebSocket 支持。
常见问题解答
Polkadex 使用以太坊风格的 JSON-RPC 吗? 不。Polkadex 是一个基于 Substrate 的网络,因此其 RPC 表面遵循 Substrate/Polkadot.js 方法集。如果您的工具假设以太坊方法,您将需要一个兼容 Substrate 的客户端。
我可以在生产中使用公共 RPC 端点吗? 公共端点适用于测试和轻度使用,但生产应用通常受益于具有更清晰容量和支持期望的托管 RPC API 或专用节点。
为什么我的交易一直处于待处理状态? 常见原因包括费用不足、nonce 间隙或节点未能很好地传播交易。检查待处理的外部交易并考虑切换端点。
我需要归档节点吗? 仅当您查询历史状态或扫描旧区块时才需要。如果需要,请与您的提供商确认归档支持,因为并非每个共享端点都提供它。
如何处理运行时升级? 将元数据视为动态:在连接时获取它并定期更新您的 SDK。硬编码类型是升级后损坏的最常见原因。
在哪里可以看到 OnFinality 支持哪些网络? 支持的 RPC 网络 页面列出了当前网络,RPC 定价 涵盖了计划选项。