摘要
了解如何使用正确的链 ID、RPC 端点和浏览器设置连接到 Mantle 主网。本页涵盖公共和专用 RPC 选项、常见的 JSON-RPC 方法以及生产 dApp 的故障排除步骤。
Mantle 端点概览
Mantle 是一个以太坊 Layer 2 网络,采用乐观汇总架构和模块化数据可用性层。如果您正在 Mantle 上构建 dApp、索引器或后端服务,首先需要的是一个可靠的 RPC 端点来读取链状态和提交交易。
以下是 Mantle 主网的基本网络详情:
| 设置 | 值 |
|---|---|
| 链 ID | 5000 |
| 网络名称 | Mantle |
| 原生货币 | MNT(18 位小数) |
| 区块浏览器 | https://mantlescan.xyz |
| 公共 RPC URL | https://mantle.api.onfinality.io/public |
此表是配置钱包、dApp 或后端服务所需的最低要求。对于生产工作负载,您可能需要专用 RPC 端点而不是共享的公共端点。我们将在下一节讨论这个决策。
快速建议:公共端点还是专用端点?
在将 RPC URL 复制到代码之前,请决定哪种类型的端点适合您的用例。正确的选择取决于您的流量、对速率限制的容忍度以及是否需要归档数据。
- 原型开发或低流量测试:公共端点如
https://mantle.api.onfinality.io/public就足够了。它允许您验证合约调用并发送少量交易,无需任何设置。 - 生产 dApp 或后端:使用专用 RPC 端点。公共端点是共享的,在高负载下可能会被限流。专用节点提供一致的吞吐量,避免嘈杂邻居问题。
- 索引或分析:如果您需要历史状态或希望避免
eth_getLogs限制,请考虑归档节点或支持归档数据的提供商。
如果您不确定,请先使用公共端点进行开发,然后在启动前迁移到专用端点。OnFinality 为 Mantle 提供公共 RPC 访问和专用节点,因此您可以扩展而无需更改代码。
Mantle RPC 端点选项
有几种方式可以访问 Mantle RPC 端点。每个选项在成本、可靠性和控制方面都有权衡。
公共端点
公共端点免费且易于使用。它们适用于开发、小型项目和偶尔查询。但是,它们被许多用户共享,因此在高峰时段可能会变慢或受到速率限制。
OnFinality 在 https://mantle.api.onfinality.io/public 提供公共 Mantle 端点。这是测试的良好起点。
专用节点
专用节点为您提供具有专用资源的私有 RPC 端点。您不会与其他用户共享节点,这意味着更一致的性能和明确的速率限制。
专用节点非常适合生产 dApp、高流量服务以及需要每秒大量请求的应用程序。OnFinality 的专用节点服务允许您部署具有自己端点的 Mantle 节点,您可以根据需要选择归档节点或全节点。
第三方提供商
许多 RPC 提供商提供 Mantle 端点。比较提供商时,请查看以下内容:
- 吞吐量限制:您考虑的计划的每秒最大请求数 (RPS) 是多少?
- 归档数据:提供商是否提供归档节点?如果提供,额外费用是多少?
- WebSocket 支持:您是否需要实时更新?确保提供商支持 WSS。
- 地理分布:节点是否位于用户附近以减少延迟?
OnFinality 是众多选项之一。我们建议根据您的具体工作负载评估提供商,而不仅仅是价格。
钱包和 dApp 的链设置
当您将 Mantle 添加到像 MetaMask 这样的钱包或配置 dApp 时,您需要正确的链设置。以下是一个可用的 JSON 片段:
{
"chainId": "0x1388",
"chainName": "Mantle",
"nativeCurrency": {
"name": "Mantle",
"symbol": "MNT",
"decimals": 18
},
"rpcUrls": ["https://mantle.api.onfinality.io/public"],
"blockExplorerUrls": ["https://mantlescan.xyz"]
}
请注意,链 ID 十进制为 5000,十六进制为 0x1388。某些工具需要十六进制格式,因此了解两者都很有用。
向 Mantle 发起 JSON-RPC 调用
一旦您有了端点,您可以使用标准的以太坊 JSON-RPC 方法与 Mantle 交互。以下是一个基本的 curl 示例,用于获取最新区块号:
curl -X POST https://mantle.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
您也可以在 dApp 中使用像 ethers.js 或 viem 这样的库。以下是使用 ethers.js 的示例:
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider("https://mantle.api.onfinality.io/public");
async function getBlockNumber() {
const blockNumber = await provider.getBlockNumber();
console.log("当前区块号:", blockNumber);
}
getBlockNumber();
对于实时更新,您可以使用 WebSocket。OnFinality 的公共端点支持 WSS,但对于生产环境,您应该使用具有稳定 WSS URL 的专用端点。以下是一个简单的 WebSocket 订阅示例:
const WebSocket = require('ws');
const ws = new WebSocket('wss://mantle.api.onfinality.io/public');
ws.on('open', function open() {
ws.send(JSON.stringify({
jsonrpc: '2.0',
method: 'eth_subscribe',
params: ['newHeads'],
id: 1
}));
});
ws.on('message', function incoming(data) {
console.log(data);
});
常见故障模式及解决方法
即使端点正确,您也可能遇到问题。以下是常见问题及其解决方案。
速率限制
如果您看到类似 429 Too Many Requests 或 rate limit exceeded 的错误,说明您已达到公共端点的限制。解决方法是降低请求频率或升级到具有更高限制的专用节点。
连接超时
如果您的请求超时,端点可能过载或您的网络连接不稳定。检查您的互联网连接并重试。如果问题仍然存在,请考虑使用具有服务级别协议的专用节点。
链 ID 错误
如果您发送交易失败,请仔细检查您是否使用了正确的链 ID(5000)。使用错误的链 ID 可能导致交易被拒绝。
缺少归档数据
如果您需要历史数据而您的节点不是归档节点,则在查询旧状态时可能会收到错误。在这种情况下,您需要归档节点。OnFinality 为 Mantle 提供归档节点;有关详细信息,请参阅我们的网络页面。
调试您的 Mantle 连接
当出现问题时,系统化的方法会有所帮助。以下是调试路径:
- 检查端点:验证 URL 是否正确且可访问。使用
curl进行简单的eth_chainId调用。 - 检查链 ID:确保您的客户端使用
5000。 - 检查方法:某些方法可能在公共端点上不受支持。例如,
eth_getLogs的宽区块范围可能受到限制。 - 检查负载:确保您的 JSON-RPC 请求格式正确。
- 检查响应:查看错误消息。它通常会准确告诉您问题所在。
以下是检查链 ID 的 curl 命令:
curl -X POST https://mantle.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
如果您收到带有 result: "0x1388" 的响应,则您的端点工作正常。
监控端点健康
对于生产应用程序,您应该监控 RPC 端点以尽早发现问题。您可以设置一个简单的健康检查,每几秒调用一次 eth_blockNumber,并在请求失败或区块号不前进时发出警报。
以下是使用 Node.js 的简单监控脚本:
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://mantle.api.onfinality.io/public");
async function checkHealth() {
try {
const blockNumber = await provider.getBlockNumber();
console.log(`健康。区块: ${blockNumber}`);
} catch (error) {
console.error("健康检查失败:", error);
}
}
setInterval(checkHealth, 30000);
对于更高级的监控,您可以跟踪响应时间、错误率和区块高度滞后。如果您使用专用节点,您还可以监控节点资源使用情况。
关键要点
- Mantle 主网使用链 ID
5000和原生代币 MNT。 - 公共 RPC 端点
https://mantle.api.onfinality.io/public适用于开发和测试。 - 对于生产工作负载,请考虑使用专用 RPC 端点以避免速率限制并确保一致的性能。
- 始终验证链 ID 并使用正确的 JSON-RPC 方法。
- 监控端点健康,以便在问题影响用户之前发现它们。
常见问题解答
Mantle RPC URL 是什么?
Mantle 主网的公共 RPC URL 是 https://mantle.api.onfinality.io/public。对于生产用途,您可能需要来自像 OnFinality 这样的提供商的专用端点。
Mantle 链 ID 是什么?
Mantle 链 ID 是 5000(十进制)或 0x1388(十六进制)。
如何将 Mantle 添加到 MetaMask?
您可以使用本文提供的链设置将 Mantle 添加到 MetaMask。或者,您可以使用支持 Mantle 的网络切换工具。
为什么我的 Mantle RPC 请求失败?
常见原因包括端点 URL 错误、链 ID 错误、速率限制或网络问题。检查错误消息并参考上面的调试部分。
OnFinality 是否提供专用的 Mantle 节点?
是的,OnFinality 为 Mantle 提供专用节点。您可以在我们的专用节点页面和Mantle 网络页面上找到更多信息。