摘要
Bittensor 网络是一个去中心化机器学习协议,子网在其中协调 AI 模型和矿工。对于开发者来说,实际的入口点是 Finney 主网,它暴露了一个基于 Substrate 的 JSON-RPC 接口,用于读取链状态、提交外部交易和订阅事件。本文解释了如何连接、在构建之前需要检查什么,以及何时使用托管 RPC 或专用节点是合理的。OnFinality 为 Bittensor Finney 提供 RPC API 和专用节点基础设施,因此您可以专注于子网逻辑,而不是节点运维。
快速推荐:托管 RPC 与运行自己的 Finney 节点
如果您在 Bittensor 上构建,第一个决定是如何与链交互。您有三种现实的选择:
- 公共 RPC 端点 – 适合原型设计、读取余额和测试外部交易。不适用于需要一致吞吐量或 WebSocket 订阅的生产工作负载。
- 托管 RPC 提供商 – 像 OnFinality 这样的服务为您提供一个托管端点,支持 HTTP 和 WebSocket,因此您无需进行节点维护、升级和同步。这是 dApp、仪表板和子网工具通常的选择,它们需要可靠的访问而无需运行基础设施。
- 专用节点 – 您获得隔离的资源,用于高容量或延迟敏感的工作负载。当您需要可预测的性能、自定义修剪或私有访问时,这是有意义的。
对于大多数开发者来说,托管 RPC 端点是实现集成的最快途径。如果您以后遇到速率限制或需要专用容量,可以迁移到专用节点而无需更改应用程序逻辑。请参阅 RPC 定价 和 支持的 RPC 网络 了解当前选项。
Bittensor 网络向开发者暴露的内容
Bittensor 是一个用于机器学习的去中心化网络。其主网 Finney 基于 Substrate 构建,这意味着它暴露了一个类似于 Polkadot 和其他 Substrate 链的 JSON-RPC 接口。您可以使用标准的 Substrate 工具查询链状态、提交交易和订阅事件。
开发者关键事实:
- 链名称: Bittensor Finney Mainnet
- 原生代币: TAO(9 位小数)
- RPC 传输: HTTP 和 WebSocket
- 公共端点(OnFinality):
https://bittensor-finney.api.onfinality.io/public - WebSocket 端点:
wss://bittensor-finney.api.onfinality.io/public-ws
这些端点适用于开发和轻量级生产使用。对于更重的工作负载,请考虑专用节点。
链设置一览
当您为 Bittensor 配置钱包、SDK 或索引器时,需要正确的链参数。下表总结了应使用的参数。
| 设置 | 值 |
|---|---|
| 网络名称 | Bittensor Finney Mainnet |
| 原生货币 | TAO |
| 小数位数 | 9 |
| HTTP RPC | https://bittensor-finney.api.onfinality.io/public |
| WebSocket RPC | wss://bittensor-finney.api.onfinality.io/public-ws |
| 区块浏览器 | 使用官方 Bittensor 浏览器或兼容 Substrate 的浏览器 |
| SS58 前缀 | 42(默认 Substrate) |
如果您使用 JavaScript 钱包或 SDK,可以这样配置端点:
import { ApiPromise, WsProvider } from '@polkadot/api';
const provider = new WsProvider('wss://bittensor-finney.api.onfinality.io/public-ws');
const api = await ApiPromise.create({ provider });
const chain = await api.rpc.system.chain();
console.log(`Connected to ${chain}`);
对于仅 HTTP 的客户端,您可以使用 curl 调用公共端点:
curl -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"chain_getBlock","params":[],"id":1}' \
https://bittensor-finney.api.onfinality.io/public
连接您的应用程序:HTTP 与 WebSocket
Substrate 链支持 HTTP 和 WebSocket 传输。正确的选择取决于您的用例。
- HTTP 是无状态的,适用于一次性查询、定时任务和无服务器函数。每个请求都会打开一个新连接,因此对于高频轮询效率较低。
- WebSocket 保持持久连接并支持订阅。用于实时仪表板、事件监听器以及任何需要在新区块或外部交易发生时做出反应的应用程序。
如果您正在构建显示实时质押或排放数据的子网仪表板,WebSocket 通常是更好的选择。对于定期检查余额的后端服务,HTTP 更简单。
生产就绪检查清单
在发布 Bittensor 集成之前,请运行以下检查:
- 端点冗余 – 如果主 RPC 端点不可用,您是否有备用端点?托管提供商通常提供多个区域或故障转移 URL。
- 速率限制 – 了解您计划中的请求限制。公共端点是共享的,在高负载下可能会受到限制。如果您需要一致的吞吐量,请迁移到专用节点。
- WebSocket 稳定性 – 如果您依赖订阅,请测试重连逻辑。网络可能会断开连接,您的应用应能优雅地恢复。
- 数据新鲜度 – 对于质押或排放计算,请确认您的节点已完全同步且未落后于链头。
- 监控 – 为端点错误、延迟峰值和订阅中断设置警报。每分钟调用
chain_getBlock的简单健康检查可以及早发现问题。
如果您不想自己管理这些问题,像 OnFinality 这样的托管 RPC 服务会处理节点升级、同步和可用性,以便您可以专注于应用程序。对于需要隔离资源的工作负载,专用节点 为您提供具有可预测性能的私有端点。
与 Bittensor 集成时的常见陷阱
刚接触 Substrate 链的开发者经常会遇到一些反复出现的问题:
- 错误的 SS58 前缀 – Bittensor 使用默认的 Substrate 前缀(42)。如果您使用不同的前缀生成地址,它们在 Finney 上将无效。
- 假设 EVM 兼容性 – Bittensor 不是 EVM 链。您不能直接使用 ethers.js 或 viem。请使用 Substrate 库,如
@polkadot/api或py-substrate-interface。 - 忽略存在性存款 – Substrate 链对账户存在有最低余额要求。在资助新账户之前,请检查当前的存在性存款。
- 硬编码区块时间 – 区块时间可能会变化。不要假设排放或质押奖励的固定间隔;始终从链上读取。
- 跳过元数据更新 – 当运行时升级时,链元数据会发生变化。您的客户端应获取最新的元数据以避免解码错误。
何时从公共 RPC 迁移到专用节点
公共 RPC 端点是一个很好的起点,但它们是共享的。随着使用量的增长,您可能会在高峰时段注意到响应时间变慢或速率限制。需要专用节点的迹象包括:
- 您的应用程序每分钟发出数千个请求。
- 您需要保证交付的 WebSocket 订阅。
- 您需要自定义修剪或归档数据。
- 您想要一个不与其他用户共享的私有端点。
OnFinality 的专用 Bittensor 节点为您提供隔离的资源和私有端点。您可以在 Bittensor Finney 网络页面 上了解更多信息。
监控您的 Bittensor RPC 连接
一旦进入生产环境,监控至关重要。以下是一个简单的 Node.js 脚本,通过获取最新区块来检查端点的健康状况:
const fetch = require('node-fetch');
async function checkHealth() {
const res = await fetch('https://bittensor-finney.api.onfinality.io/public', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
method: 'chain_getHeader',
params: [],
id: 1
})
});
const data = await res.json();
console.log('Latest block:', parseInt(data.result.number, 16));
}
checkHealth().catch(console.error);
定期运行此脚本,如果区块号停止增加或请求失败,则发出警报。对于 WebSocket 连接,还要监控意外断开连接,并在重连时实现指数退避。
关键要点
- Bittensor 的主网 Finney 是一个基于 Substrate 的链,具有 HTTP 和 WebSocket RPC 端点。
- 使用 OnFinality 公共端点进行开发:
https://bittensor-finney.api.onfinality.io/public和wss://bittensor-finney.api.onfinality.io/public-ws。 - 对于生产环境,根据您的吞吐量、延迟和隔离需求评估托管 RPC 或专用节点。
- 始终配置备用端点,并监控速率限制、同步延迟和 WebSocket 断开。
- Bittensor 不兼容 EVM;请使用 Substrate 工具,如
@polkadot/api。
常见问题
我可以将 MetaMask 与 Bittensor 一起使用吗?
不可以。Bittensor 不是 EVM 链,因此 MetaMask 和其他以太坊钱包不兼容。请使用兼容 Substrate 的钱包,如 Polkadot.js 或 Talisman。
Bittensor 和 Finney 有什么区别?
Finney 是 Bittensor 主网的名称。当您连接到 Bittensor 网络时,您连接的是 Finney。
运行子网需要专用节点吗?
不一定。许多子网操作可以使用托管 RPC 端点完成。但是,如果您运行验证人或高频服务,专用节点可能会提供更好的性能和可靠性。
如何获取 TAO 进行测试?
TAO 是 Finney 主网上的原生代币。没有官方的 TAO 测试网水龙头。对于开发,您可以针对本地 Substrate 节点进行测试,或使用少量真实的 TAO。
OnFinality 支持 Bittensor WebSocket 订阅吗?
是的,公共 WebSocket 端点支持订阅。对于生产使用,请考虑使用专用节点以避免共享速率限制。有关详细信息,请参阅 RPC 定价。
后续步骤
如果您准备好连接,请从公共端点开始并构建您的集成。当您需要更多容量或隔离时,请探索 OnFinality 的 RPC API 和 专用节点。您还可以查看 如何选择 RPC 提供商 以系统地比较选项。