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

在 Bittensor 上挖矿 TAO:如何保持矿工注册并获得奖励?

摘要

在 Bittensor 上挖矿 TAO 不是工作量证明哈希。你在子网上注册一个热键,运行一个矿工来产生该子网奖励的任务,并保持链连接足够健康以设置权重、领取排放,并在被注销时重新注册。这个循环的链上部分是大多数矿工亏损的地方:在设置权重或注册期间 RPC 连接断开可能会让你损失整个 tempo 的排放。

本文关注挖矿 TAO 的运营方面:矿工实际与什么通信,注册和注销如何工作,哪些 RPC 调用重要,以及如何在运行自己的 Subtensor 节点和使用托管的 Bittensor RPC 端点(如 OnFinality)之间做出决定。它补充了更广泛的 Bittensor 挖矿和节点文章,而不是重复它们。

在 Bittensor 上挖矿 TAO 通常被描述为“挖矿”,但没有任何哈希运算。没有工作量证明谜题,也没有 GPU 竞赛来寻找区块。Bittensor 矿工是一个在子网上注册热键、产生该子网奖励的任何输出,然后依赖链对其进行评分、加权并以 TAO 排放支付的过程。如果你来自比特币或以太坊挖矿,这种思维模型是错误的,而且这种错误很重要:你的瓶颈很少是原始计算能力,而是保持注册并按时设置权重。

这就是为什么本文首先将挖矿 TAO 视为运营问题,其次才是建模问题。模型是你的业务,链连接是你的正常运行时间。

当你“挖矿”TAO 时实际发生了什么

Bittensor 子网是一个竞争市场。矿工提交工作,验证者对该工作进行评分,链将这些分数转换为排放。当以下三个条件同时满足时,你的矿工赚取 TAO:

  1. 你的热键已在子网上注册(你持有 UID)。
  2. 你的矿工在子网的 tempo 窗口内响应验证者查询。
  3. 验证者正在设置反映你分数的权重,并且这些权重上链。

打破其中任何一个,你的排放在该 tempo 内将归零。注册是人们低估的部分。每个子网有固定数量的 UID,因此注册意味着出价高于当前持有你想要的位置的人。如果你的矿工表现不佳,你将被注销,你的位置将被回收给新的注册者。重新注册需要再次花费 TAO。

所以真正的挖矿循环是这样的:注册、运行、获得评分、设置权重、收集排放、监控注销、必要时重新注册。除了模型本身,一切都在 RPC 上运行。

决策指南:自建 Subtensor 节点还是托管 Bittensor RPC?

在调整模型之前,决定你的矿工如何连接到链。这是最影响你的矿工是否保持在线的一个选择。

情况自托管 Subtensor 节点托管 Bittensor RPC
你运行一个矿工并希望今天开始同步时间和磁盘成本是前置的;你可能需要等待才能首次注册你可以立即将矿工指向端点并在同一天注册
你运行许多矿工或许多子网一个节点可以服务许多热键,但你要承担所有故障模式每个热键可以共享一个托管端点;故障转移是提供商的问题
你需要归档或历史质押数据你必须运行归档节点并管理其存储在承诺之前检查提供商是否暴露归档式查询
你需要在 tempo 边界低延迟设置权重本地节点避免网络跳数,但前提是它健康附近的管理端点加上重试逻辑通常胜过不健康的本地节点
你在实验且对成本敏感硬件和同步时间是成本按需付费 RPC 保持固定成本低

一个实用的中间路径:运行本地 Subtensor 节点用于开发和读取链状态,并使用托管端点作为你的生产矿工和验证者脚本实际依赖的连接。OnFinality 通过 HTTP 和 WebSocket 暴露 Bittensor Finney 端点,这涵盖了矿工最常用的两种访问模式:一次性 extrinsic 和基于订阅的区块监视。查看 Bittensor Finney 网络页面 获取当前端点详情,以及 RPC 定价 如果你想根据热键数量估算成本。

注册、注销以及重要的调用

大多数 Bittensor 工具包装了这些调用,但了解它们有助于调试。链是 Subtensor,它暴露了 Substrate 风格的 JSON-RPC 接口。

任务你调用什么为什么对矿工重要
检查你在子网上的 UID通过 Bittensor SDK 的 neuronInfo / uid 查询,由 state_getStorage 支持在花时间调整之前确认你仍然注册
读取当前注册成本子网上的 burn / recycle 值告诉你现在重新注册的成本
注册热键burnedRegister extrinsic你的位置生效的时刻;如果这在 tempo 中途失败,你会失去时间
作为验证者设置权重set_weights extrinsic如果这没有上链,你评分的矿工什么也得不到,你也是
监视新区块通过 WebSocket 的 chain_subscribeNewHeads让你的矿工在 tempo 边界做出反应,而不是盲目轮询
检查你的余额system_accountNextIndex 和余额查询防止连续发送多个 extrinsic 时 nonce 冲突

两种故障模式经常出现。第一,nonce 冲突:如果你连续发送注册和设置权重 extrinsic,它们可能共享一个 nonce,其中一个被丢弃。第二,过时读取:如果你的端点落后于链头,你可能认为你已注册但实际上没有,或者针对旧 tempo 设置权重。

以下是一个最小健康探测,你可以在将矿工指向任何 Bittensor 端点之前运行:

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

如果返回最近的区块头,则端点可达并跟随链。在信任它进行权重设置之前,将区块号与第二个来源进行比较。

将矿工连接到 WebSocket 端点

需要在 tempo 边界行动的矿工和验证者应该订阅而不是轮询。WebSocket 连接让你在新头到达时做出反应,这正是当权重设置窗口打开时你想要的。

import { ApiPromise, WsProvider } from "@polkadot/api";

const provider = new WsProvider(
  "wss://bittensor-finney.api.onfinality.io/public-ws"
);

const api = await ApiPromise.create({ provider });

// React to each new block head instead of polling on a timer.
const unsubscribe = await api.rpc.chain.subscribeNewHeads((header) => {
  const blockNumber = header.number.toNumber();
  console.log("new head", blockNumber);

  // Your tempo logic goes here: check UID, check stake,
  // decide whether this is the block to set weights.
});

// Always keep a handle so you can unsubscribe cleanly on shutdown.
process.on("SIGINT", async () => {
  await unsubscribe();
  await api.disconnect();
  process.exit(0);
});

两个操作注意事项。第一,将订阅视为可恢复的:如果套接字断开,使用退避重连而不是让矿工崩溃。第二,不要假设一个连接足以支持一组热键。单个 WebSocket 可以承载许多订阅,但单点故障仍然是单点故障。

矿工实际在哪里损失排放

大多数“挖矿 TAO”问题不是模型问题。它们是以下问题,大致按发生频率排序:

  • 静默注销。 你的 UID 被回收,你的矿工继续针对它不再拥有的位置运行。定期轮询你的 UID 并在变化时发出警报。
  • 权重设置从未上链。 extrinsic 已提交但未包含,通常是由于 nonce 冲突或费用不足。确认包含,而不仅仅是提交。
  • 端点漂移。 你的节点或端点落后于链头。针对过时视图设置权重比完全不设置权重更糟。
  • 注册成本意外。 回收成本随需求变化。将重新注册作为经常性成本预算,而不是一次性费用。
  • 密钥管理错误。 热键之所以是热的,是有原因的。保持冷键离线,绝不让矿工进程持有超出需要的权限。

一个有用的习惯是为每个 tempo 记录三个数字:你的 UID、你行动的链头,以及你的 extrinsic 是否被包含。当排放下降时,这三个数字通常会告诉你遇到了上述哪种故障模式。

为生产矿工选择端点

如果你正在为 Bittensor 矿工评估 RPC 选项,标准比一般的 dApp 清单更窄。你关心:

检查什么为什么矿工关心
HTTP 和 WebSocket 支持Extrinsic 需要 HTTP;tempo 边界逻辑需要 WebSocket
链头新鲜度过时读取导致错误的权重设置和虚假的注册检查
归档可用性如果你回测评分或重建历史质押,则需要
故障转移行为无法重连的矿工损失一个 tempo,而不是一个请求
速率和并发限制一组热键会倍增你的请求量
如何付费按请求定价比固定层级更适合突发矿工流量

OnFinality 提供 Bittensor Finney 访问作为托管 RPC API,对于运行许多热键或子网的团队,专用节点基础设施 消除了嘈杂邻居效应并为你提供私有端点。如果你更广泛地比较提供商,RPC 提供商选择指南 涵盖了通用评估框架,支持的 RPC 网络 列出了当前可用的内容。

一个适用于每个提供商(包括我们)的警告:不要假设公共端点是验证者权重设置路径的正确归宿。公共端点是共享的。如果你的排放依赖于特定 extrinsic 在特定窗口内上链,请相应地规划你的计划和故障转移。

一个现实的第一周计划

如果你从零开始,一个避免常见陷阱的顺序:

  1. 选择一个子网,在编写任何代码之前阅读其激励机制。
  2. 运行本地 Subtensor 节点或将开发矿工指向托管端点以学习注册流程。
  3. 注册一个热键并观察一个完整的 tempo 周期,不做任何更改。记录你的 UID、分数和排放。
  4. 在添加第二个热键之前,添加对 UID 变化和链头新鲜度的监控。
  5. 只有在那之后才扩展到多个热键,并在那时决定共享还是 专用基础设施 符合你的风险承受能力。

第三步是人们跳过的,也是教你子网实际奖励什么的一步。

关键要点

  • Bittensor 挖矿是注册加评分加设置权重,而不是工作量证明哈希。
  • 你的排放取决于保持注册和按时设置权重;链连接是运营风险。
  • HTTP 处理 extrinsic,WebSocket 处理 tempo 边界反应;生产矿工通常两者都需要。
  • Nonce 冲突和过时链读取是错过排放的两个最常见原因。
  • 托管的 Bittensor RPC 端点是生产矿工的合理默认;本地节点对于开发和深度调试仍然有用。
  • 将重新注册作为经常性成本预算,并将你的 UID 作为一等指标监控。

常见问题

挖矿 TAO 和比特币挖矿一样吗?

不。没有工作量证明。你在子网上注册一个热键,产生该子网奖励的输出,验证者对其进行评分。排放来自分数和权重,而不是哈希率。

我需要运行自己的 Subtensor 节点来挖矿 TAO 吗?

不一定。许多矿工使用托管 RPC 端点进行链连接,只运行矿工进程本身。本地节点对于开发、回测和调试(当你怀疑端点落后于链头时)仍然有用。

如果我的矿工离线会发生什么?

你在这段时间内停止被评分,如果你表现不佳足够长,你可能会被注销。重新注册需要花费 TAO,因此链连接的正常运行时间有直接成本。

我可以为多个热键使用一个 RPC 端点吗?

技术上可以,但要注意并发和速率限制。如果你的排放依赖于及时的权重设置,考虑共享访问还是 专用基础设施 更符合你的风险承受能力。

我在哪里可以找到 Bittensor 端点详情?

Bittensor Finney 的当前 HTTP 和 WebSocket 端点列在 Bittensor Finney 网络页面 上。对于多个热键的成本规划,请参阅 RPC 定价。

RPC 知识库

相关 RPC 内容

RPC 提供商选择Solana

哪些 Solana 验证器服务为开发者提供全面的 API 访问?

验证器运营商和 RPC API 提供商是 Solana 技术栈中不同的层级。验证器服务运行共识并生成或投票区块,而 RPC API 服务则暴露应用程序实际调用的 JSON-RPC、WebSocket 和索引端点。有些运营商同时提供两者,但你获得的 API 表面取决于提供商的节点集群、归档保留和传输支...

网络 RPCpeaq

什么是 peaq 网络 RPC?如何连接?

peaq 网络 RPC 是您的应用程序与 peaq 区块链之间的 API 网关,peaq 是一个兼容 EVM 的 Layer-1,专为 DePIN 和机器经济而设计。本参考涵盖链 ID 3338、PEAQ 代币详情、公共端点、JSON-RPC 测试以及生产前需要关注的提供商标准。 公共 peaq R...

网络 RPCOptimism

Optimism Nodes: Public, Managed, or Self-Hosted?

Optimism nodes are the software clients that let you read and write data on OP Mainnet, the leading Ethereum Layer 2. You can run your own node for fu...

网络 RPCBittensor

Bittensor 教程:如何连接、查询并在 Subtensor 上构建

本教程将逐步介绍在 Bittensor 上构建的实用部分:通过 RPC 连接到 Subtensor 链、读取元图和子网状态,以及使用 Python SDK 提交外部交易。它侧重于大多数教程跳过的连接层,以便您的脚本在从本地实验过渡到持续运行的过程中保持可靠。 您将了解如何配置 WebSocket 端...

网络 RPCSolana

PublicNode Solana RPC 端点:如何连接及预期

PublicNode 为希望在不投入付费基础设施的情况下测试应用的开发者提供免费的 Solana RPC 端点。本文介绍如何查找和使用 PublicNode Solana RPC 端点、预期的速率限制和可靠性,以及何时为生产工作负载迁移到像 OnFinality 这样的托管或专用 RPC 提供商。...

网络 RPCOptimism

Optimism API:它是什么以及如何在 OP Mainnet 上使用

Optimism API 是一组 JSON-RPC 端点,允许应用程序在 OP Mainnet(一个基于乐观汇总构建的以太坊 Layer 2)上读写数据。它遵循与以太坊相同的 JSON-RPC 标准,因此您可以使用熟悉的库(如 ethers 或 viem)与链进行交互。本文解释了什么是 Optimi...

永远不用担心基础设施

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

开始