摘要
Sonic 是一个高性能的 EVM 兼容 Layer-1 区块链,具有亚秒级最终性。本页涵盖官方 Sonic 网络 RPC 设置、如何连接您的钱包或 dApp,以及如何评估用于生产环境的 RPC 提供商。我们还解释了何时选择托管或专用的 Sonic RPC 端点是正确的选择。
快速决策指南:您应该使用哪个 Sonic RPC?
在深入了解链设置之前,请决定哪种类型的 Sonic RPC 适合您的用例。正确的选择取决于您的工作负载,而不仅仅是最低延迟。
- 原型开发或钱包设置:使用官方公共端点
https://rpc.soniclabs.com或 OnFinality 公共端点https://sonic.api.onfinality.io/public。这些适用于测试、将网络添加到钱包或低量请求。 - 生产 dApp 或索引器:使用具有专用端点的托管 RPC 提供商更安全。公共端点可能会限制或限流大量使用,并且它们很少提供归档数据或 WebSocket 可靠性保证。
- 高吞吐量或数据密集型工作负载:如果您需要大范围的
eth_getLogs、trace 方法或一致的 WebSocket 流,请考虑使用专用的 Sonic 节点。专用节点为您提供隔离的资源并可预测的性能。 - 合规性或数据保留:如果您需要历史状态或 trace 数据,请检查提供商是否提供归档节点。并非所有 Sonic RPC 端点都提供归档数据。
有关提供商评估的深入探讨,请参阅我们的选择 RPC 提供商指南。
Sonic 网络概览
Sonic 是一个 EVM 兼容的 Layer-1 区块链,专为高吞吐量和亚秒级最终性而设计。它是 Fantom 的继任者,并使用 S 代币作为 gas、质押和治理。对于开发者来说,关键要点是 Sonic 完全兼容 EVM,因此现有的以太坊工具只需很少的更改即可使用。
官方链设置如下:
| 设置 | 值 |
|---|---|
| 网络名称 | Sonic 主网 |
| RPC URL | https://rpc.soniclabs.com |
| 链 ID | 146 (0x92) |
| 货币符号 | S |
| 区块浏览器 | https://sonicscan.org |
这些设置是您将 Sonic 添加到钱包或配置 dApp 所需的。OnFinality 公共端点 https://sonic.api.onfinality.io/public 也可用作替代。
将 Sonic 添加到 MetaMask 或其他钱包
大多数钱包允许您手动添加自定义网络。MetaMask、Rabby 和其他 EVM 钱包的过程类似。
- 打开您的钱包并转到网络选择下拉菜单。
- 点击 添加网络 或 手动添加网络。
- 输入以下详细信息:
- 网络名称:Sonic
- 新的 RPC URL:
https://rpc.soniclabs.com或https://sonic.api.onfinality.io/public - 链 ID:146
- 货币符号:S
- 区块浏览器 URL:
https://sonicscan.org
- 保存网络并切换到它。
如果您使用支持 WalletConnect 或 chainlist 的钱包,您也可以一键添加。但是,手动输入详细信息可确保您控制使用的 RPC 端点。
使用 ethers 或 viem 连接 dApp
对于开发者来说,连接到 Sonic 很简单。以下是使用 ethers.js 的示例:
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider("https://sonic.api.onfinality.io/public");
const network = await provider.getNetwork();
console.log("Chain ID:", network.chainId); // 146
const blockNumber = await provider.getBlockNumber();
console.log("Latest block:", blockNumber);
使用 viem:
import { createPublicClient, http } from "viem";
const client = createPublicClient({
chain: {
id: 146,
name: "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("Latest block:", blockNumber);
使用 curl 进行 JSON-RPC 调用
如果您正在调试或测试,一个简单的 curl 请求可以验证连接性:
curl https://sonic.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
成功的响应以十六进制格式返回最新的区块号。
WebSocket 支持和实时数据
对于需要实时更新的应用程序,例如交易监控或订单簿,WebSocket 端点至关重要。官方 Sonic RPC 支持 WebSocket,许多提供商提供 WSS 端点。
使用 viem 的 WebSocket 订阅示例:
import { createPublicClient, webSocket } from "viem";
const client = createPublicClient({
chain: {
id: 146,
name: "Sonic",
nativeCurrency: { name: "Sonic", symbol: "S", decimals: 18 },
rpcUrls: {
default: { webSocket: ["wss://sonic-rpc.publicnode.com"] },
},
},
transport: webSocket(),
});
const unwatch = client.watchBlockNumber({
onBlockNumber: (blockNumber) => {
console.log("New block:", blockNumber);
},
});
请注意,公共 WebSocket 端点可能有连接限制。对于生产环境,建议使用专用的 WebSocket 端点。
Sonic RPC 提供商比较
在评估 Sonic RPC 提供商时,请考虑以下标准。下表比较了典型的产品,但请务必在每个提供商的网站上验证当前详细信息。
| 提供商 | 端点类型 | 归档数据 | WebSocket | 专用节点 |
|---|---|---|---|---|
| OnFinality | 公共、托管、专用 | 是(按需) | 是 | 是 |
| dRPC | 公共、高级 | 是(高级) | 是 | 否 |
| Dwellir | 公共、专用 | 是 | 是 | 是 |
| Ankr | 公共、高级 | 是(高级) | 是 | 否 |
OnFinality 提供公共端点和专用 Sonic 节点。专用节点为您提供隔离的资源,这对于高吞吐量应用程序非常重要。您可以在我们的网络页面上查看受支持网络的完整列表。
何时选择专用 Sonic 节点
专用节点是单租户 RPC 端点,不与其他用户共享。这在以下情况下很有用:
- 您的应用程序产生大量请求,并且您需要一致的性能。
- 您需要公共端点上不可用的归档数据或 trace 方法。
- 您希望避免速率限制和限流。
- 您需要用于实时数据的私有 WebSocket 端点。
OnFinality 的专用节点服务提供具有隔离资源的 Sonic 节点。您可以选择适合您工作负载的节点大小和配置。
常见陷阱和故障排除
即使使用正确的端点,您也可能会遇到问题。以下是常见问题及解决方法:
- 错误的链 ID:确保您的钱包或 dApp 使用链 ID 146。不匹配会导致交易签名错误。
- 速率限制:公共端点通常限制每秒请求数。如果您达到限制,请切换到托管或专用端点。
- 缺少归档数据:某些 RPC 方法(如大范围的
eth_getLogs)需要归档节点。如果您遇到错误,请检查您的提供商是否提供归档数据。 - WebSocket 断开:公共 WebSocket 端点可能会断开连接。对于生产环境,请使用专用的 WebSocket 端点。
- 区块浏览器差异:如果浏览器显示的区块高度与您的 RPC 不同,则可能是同步问题。请使用多个来源进行验证。
监控您的 Sonic RPC 健康状况
为确保您的应用程序保持健康,请监控您的 RPC 端点。一个简单的健康检查脚本可以提醒您问题:
#!/bin/bash
RPC_URL="https://sonic.api.onfinality.io/public"
response=$(curl -s -X POST $RPC_URL \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}')
if echo "$response" | grep -q "result"; then
echo "RPC is healthy"
else
echo "RPC is down"
fi
对于生产环境,请考虑使用监控服务来跟踪延迟、错误率和区块高度滞后。
关键要点
- Sonic 是一个 EVM Layer-1,链 ID 为 146,使用 S 代币。
- 官方 RPC 是
https://rpc.soniclabs.com;OnFinality 还提供公共端点https://sonic.api.onfinality.io/public。 - 对于生产环境,请评估托管或专用 RPC 提供商,以避免速率限制并获取归档数据。
- 专用 Sonic 节点非常适合高吞吐量或数据密集型工作负载。
- 始终监控您的 RPC 端点健康状况以确保可靠性。
常见问题解答
Sonic 网络 RPC URL 是什么?
官方 Sonic 主网 RPC URL 是 https://rpc.soniclabs.com。OnFinality 还提供公共端点 https://sonic.api.onfinality.io/public。
Sonic 链 ID 是什么?
Sonic 主网链 ID 是 146 (0x92)。
Sonic 支持 WebSocket 吗?
是的,Sonic 支持 WebSocket RPC。公共 WSS 端点可用,但对于生产环境,建议使用专用的 WebSocket 端点。
我可以将 Sonic 与 MetaMask 一起使用吗?
是的,您可以使用上述链设置将 Sonic 作为自定义网络添加到 MetaMask。
OnFinality 提供 Sonic RPC 吗?
是的,OnFinality 提供公共 Sonic 端点和专用 Sonic 节点。有关详细信息,请参阅我们的 Sonic 网络页面。
Sonic 区块浏览器是什么?
官方 Sonic 区块浏览器是 https://sonicscan.org。
Sonic 是 EVM 兼容链吗?
是的,Sonic 完全兼容 EVM,因此您可以无需修改即可部署以太坊智能合约。
如何获取 Sonic 测试网代币?
Sonic 测试网与主网分开。您可以从 Sonic 水龙头获取测试网代币,该水龙头可在 Sonic 文档中找到。