Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

Sonic RPC 节点:如何连接 Sonic 主网

摘要

Sonic 是一个兼容 EVM 的第 1 层区块链,专为高吞吐量的 DeFi 应用而设计。要与 Sonic 交互,开发者需要一个可靠的 RPC 节点来处理 JSON-RPC 请求、WebSocket 订阅和归档数据查询。

本页介绍如何配置您的钱包或 dApp 以使用 Sonic RPC 端点,RPC 提供商应具备哪些条件,以及如何排查常见连接问题。无论您是在 Sonic 上构建,还是只需要一个可靠的端点,我们都会介绍要点。

快速开始:Sonic RPC 端点

如果您只需要一个 Sonic RPC 端点来开始构建,以下是 OnFinality 提供的公共端点:

https://sonic.api.onfinality.io/public

您可以使用此端点发送 JSON-RPC 请求,但对于生产环境的应用,您需要更可靠且可扩展的解决方案。OnFinality 提供专用 Sonic 节点托管 RPC 服务,具有更高的速率限制、归档数据和 WebSocket 支持。

链参数一览

在连接 Sonic 之前,您需要正确的网络参数。以下是摘要:

参数
网络名称Sonic 主网
链 ID146
原生货币S (Sonic)
区块浏览器https://sonicscan.org
公共 RPC URLhttps://sonic.api.onfinality.io/public

这些设置对于配置钱包、dApp 和开发工具至关重要。

如何将 Sonic 添加到您的钱包

要与基于 Sonic 的 dApp 交互,您需要将网络添加到您的钱包(例如 MetaMask)。以下是分步指南:

  1. 打开您的钱包并导航到网络设置。
  2. 点击“添加网络”或“自定义 RPC”。
  3. 输入以下详细信息:
    • 网络名称:Sonic 主网
    • 新的 RPC URLhttps://sonic.api.onfinality.io/public
    • 链 ID146
    • 货币符号S
    • 区块浏览器 URLhttps://sonicscan.org
  4. 保存网络并切换到该网络。

添加后,您可以查看您的 Sonic 余额并与 Sonic dApp 交互。

发起您的第一个 JSON-RPC 调用

要验证您的连接,您可以使用 curl 发起一个简单的 JSON-RPC 调用。例如,获取当前区块号:

curl https://sonic.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

您应该会收到类似以下的响应:

{"jsonrpc":"2.0","result":"0x...","id":1}

result 是十六进制区块号。这确认了您的 RPC 端点正常工作。

使用 ethers.js 或 viem 使用 Sonic RPC

对于 JavaScript 开发者,您可以使用 ethers.js 或 viem 等流行库集成 Sonic RPC。以下是使用 ethers.js 的示例:

import { ethers } from "ethers";

const provider = new ethers.JsonRpcProvider("https://sonic.api.onfinality.io/public");

async function getBlockNumber() {
  const blockNumber = await provider.getBlockNumber();
  console.log("当前区块号:", blockNumber);
}

getBlockNumber();

使用 viem:

import { createPublicClient, http } from "viem";

const client = createPublicClient({
  chain: {
    id: 146,
    name: "Sonic Mainnet",
    network: "sonic",
    nativeCurrency: { name: "Sonic", symbol: "S", decimals: 18 },
    rpcUrls: { default: { http: ["https://sonic.api.onfinality.io/public"] } },
  },
  transport: http(),
});

const blockNumber = await client.getBlockNumber();
console.log("当前区块号:", blockNumber);

用于实时数据的 WebSocket 订阅

如果您的 dApp 需要实时更新(例如新区块、待处理交易),您将需要一个 WebSocket 端点。OnFinality 为 Sonic RPC 节点提供 WebSocket 支持。WebSocket URL 通常遵循以下模式:

wss://sonic.api.onfinality.io/public/ws

注意:确切的 WebSocket URL 可能有所不同。请查看 Sonic 网络页面 获取最新支持的传输方式。

以下是使用 ethers.js 订阅新区块头的示例:

import { ethers } from "ethers";

const provider = new ethers.WebSocketProvider("wss://sonic.api.onfinality.io/public/ws");

provider.on("block", (blockNumber) => {
  console.log("新区块:", blockNumber);
});

选择合适的 Sonic RPC 提供商

在为 Sonic 选择 RPC 提供商时,请考虑以下因素:

因素检查内容重要性
速率限制每秒请求数、每日配额公共端点通常有严格限制,可能会限制您的 dApp
归档数据支持 eth_getLogs 和历史状态分析、索引和调试所需
WebSocket 支持是否提供 wss 端点对实时功能至关重要
专用节点提供私有、隔离节点的选项提供一致的性能,无干扰邻居
正常运行时间和可靠性历史正常运行时间、冗余停机可能会中断您的应用

OnFinality 同时提供共享公共 RPC专用 Sonic 节点。专用节点让您完全控制基础设施,具有明确的速率限制和归档数据访问权限。

公共与专用 Sonic RPC 节点

对于开发和测试,公共 RPC 端点通常就足够了。然而,对于生产工作负载,您应考虑使用专用节点。以下是比较:

方面公共 RPC专用节点
成本免费或低成本订阅制
速率限制有,通常严格无(或非常高)
性能共享,可变一致,隔离
归档数据通常不可用可按需提供
WebSocket可能受限完全支持
控制完全访问节点配置

如果您的 dApp 处理大量请求或需要历史数据,专用节点是更好的选择。

排查常见 Sonic RPC 问题

即使使用可靠的提供商,您也可能会遇到问题。以下是常见问题及解决方法:

1. 连接超时

如果您遇到超时,请检查:

  • 您的网络连接
  • RPC 端点 URL(确保正确)
  • 您是否使用了正确的传输方式(HTTP 与 WebSocket)

2. 速率限制错误

公共端点经常返回 429 Too Many Requests。为避免此问题:

  • 在客户端实现缓存
  • 对高流量应用使用专用节点
  • 考虑使用多个端点并启用故障转移

3. 错误的链 ID

确保您的钱包或 dApp 配置了正确的链 ID(146)。使用错误的链 ID 可能导致交易失败。

4. 缺少归档数据

如果您需要历史数据,请确保您的提供商支持归档请求。公共端点通常只提供最近的状态。

监控您的 Sonic RPC 节点

一旦您的 RPC 连接正常,您应该监控其健康状况。您可以使用脚本设置简单的健康检查:

#!/bin/bash

# 检查 RPC 端点是否响应
response=$(curl -s -o /dev/null -w "%{http_code}" -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
  https://sonic.api.onfinality.io/public)

if [ "$response" -eq 200 ]; then
  echo "RPC 健康"
else
  echo "RPC 宕机"
fi

您可以定期运行此脚本以确保您的端点正常运行。

关键要点

  • Sonic 是一个兼容 EVM 的第 1 层区块链,链 ID 为 146
  • 公共 RPC 端点是 https://sonic.api.onfinality.io/public
  • 对于生产环境,考虑使用专用 Sonic 节点以避免速率限制并获取归档数据。
  • 始终验证您的链设置并使用正确的传输方式(HTTP/WebSocket)。
  • 监控您的 RPC 端点以确保高可用性。

常见问题解答

问:Sonic RPC URL 是什么? 答:公共 RPC URL 是 https://sonic.api.onfinality.io/public。对于生产环境,您可能需要专用端点。

问:Sonic 链 ID 是什么? 答:链 ID 是 146

问:OnFinality 是否支持 Sonic WebSocket? 答:是的,OnFinality 为 Sonic RPC 节点提供 WebSocket 支持。请查看 Sonic 网络页面 了解详情。

问:我可以获取 Sonic 的归档数据吗? 答:可以,OnFinality 上的专用 Sonic 节点可以配置归档数据。请联系我们获取更多信息。

问:如何在公共和专用 RPC 之间选择? 答:公共 RPC 适合开发,但对于高流量的生产应用,专用节点提供更好的性能和可靠性。

有关 RPC 提供商和网络支持的更多信息,请访问我们的 RPC 定价页面支持的网络列表

RPC 知识库

相关 RPC 内容

RPC 提供商选择BNB Chain

如何为高吞吐量工作负载扩展 BNB Chain RPC

为了扩展 BNB Smart Chain (BSC) RPC 以应对高吞吐量工作负载,不要将每秒请求数视为唯一指标。一个快速执行 eth_call 和 eth_getTransactionReceipt 循环的交易机器人、一个使用 eth_getLogs 扫描大区块范围的分析索引器,以及一个广播交易...

网络 RPCArbitrum

什么是 Arbitrum 节点,你应该如何运行或访问它们?

Arbitrum 节点是维护 Arbitrum 链(如 Arbitrum One 和 Arbitrum Sepolia)状态的软件客户端。你可以运行自己的全节点或归档节点来独立验证链,或者使用托管的 RPC 提供商来访问,而无需操作基础设施。本指南解释了节点类型、运营权衡,以及如何决定是自托管还是使...

测试网 RPCSolana

什么是 Solana Devnet RPC 端点,如何使用它?

Solana Devnet 是一个公共测试集群,用于构建和测试 Solana 程序,而无需冒真实资金的风险。其官方公共 RPC 端点是 https://api.devnet.solana.com,但公共端点有速率限制且为共享资源,因此严肃的开发通常使用像 OnFinality 这样的托管 RPC 提...

RPC 提供商选择Solana

在选择带有分析 API 的 Solana RPC 提供商时,您应该评估什么?

选择带有分析 API 的 Solana RPC 提供商意味着要超越基本的交易广播。您需要评估数据深度、方法覆盖范围,以及提供商如何处理高吞吐量工作负载,如账户订阅和历史查询。本文分解了关键标准——从分析方法支持到故障转移和专用节点选项——以便您将基础设施与应用程序的数据需求相匹配。...

网络 RPCMangata X

什么是 Mangata X,如何连接其 RPC?

Mangata X 是一个社区拥有的、基于 Kusama 上 Substrate 应用链构建的全链去中心化交易所(DEX),旨在最小化 MEV 并实现跨链交换。本页介绍 Mangata X 是什么、如何连接其 RPC 端点,以及如何评估在其上构建的基础设施选项。...

网络 RPCOptimism

关于 Optimism RPC 端点,我需要了解什么?

# 关于 Optimism RPC 端点,我需要了解什么? Optimism RPC 端点之所以重要,是因为 Web3 应用依赖稳定的端点访问来进行读取、交易、仪表盘和后端工作流。正确的设置应匹配你的工作负载,支持你所需的网络和测试网,使限制可见,并在共享 RPC 不再足够时提供扩展路径。 对于 O...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始