Bittensor 元图是每个子网注册神经元的链上聚合视图,包括质押、权重、信任以及派生的激励和分红值。您可以通过查询子网的神经元 Substrate 运行时存储并在本地计算元图,或使用封装这些状态查询的第三方索引器,直接从 subtensor 节点读取。本文解释了该机制,提供了可复现的示例来验证热键的质押和权重,并展示了共识权重如何转化为排放和分红。
什么是元图及其存储位置
Bittensor 是一个基于 Substrate 的区块链(Finney 网络),维护着子网注册表,每个子网由 netuid 标识。在每个子网内,注册实体称为神经元,由唯一的 UID 标识。元图 是每个子网注册表的聚合、可观察视图:它包括每个神经元的质押、来自质押(委托 TAO)、权重、信任、共识排名、激励和分红。此状态并非存储为单个 JSON 对象;它源自 subtensor pallet 的运行时存储。官方 Bittensor 文档 描述了网络的激励机制,而 subtensor 源代码(可在 GitHub 上获取)实现了确切的公式。
当您连接到 subtensor 端点(例如 OnFinality 的 Bittensor RPC 指南 提供的端点)时,您正在访问 Finney 链的 JSON-RPC 接口。元图并非作为单个 RPC 方法公开;相反,您需要查询子网神经元的底层存储映射,然后计算派生字段。社区工具和索引器(例如 taostats 或 bittensor Python SDK)会为您执行此聚合,但它们是第三方便捷层。要信任数据,您应该根据链状态进行验证,如本文所述。
- 元图状态存储在 subtensor pallet 的存储映射中,以
netuid和 UID 或热键为键。 - 读取它的规范方式是通过 Substrate 状态查询(例如
state_getStorage或subnetInfoRPC 接口)。 - 第三方 API 是派生视图;始终与本地或可信的 subtensor 节点进行交叉检查。
经济模型:从权重到排放和分红
每个子网运行一个竞争性激励游戏。验证者定期根据他们自己的质量分数为矿工设置权重——一个每 UID 一个值的向量。这些权重存储在链上,用于计算共识分数。共识机制是一种 Schelling 式游戏:设置权重接近网络加权中位数的验证者将获得奖励,而偏离的验证者将受到惩罚。确切的算法在 subtensor 源代码中实现,并在官方 Bittensor 验证文档 中描述。
排放根据子网的 alpha/link 预算在每个时期分配。每个子网获得总 TAO 排放的一部分,该部分根据矿工的激励分数在矿工之间分配。验证者获得 分红——子网排放的一部分,反映了他们的共识加权质押。重要的是,分红不同于验证者自己的挖矿奖励;它们是验证者根据其权重与网络的契合度对子网排放的索取权。stake-from 字段跟踪委托的 TAO,奖励在验证者自己的质押和委托质押之间分配。因此,当您看到报告的“APR”或“奖励”数字时,您必须将其分解为验证者自身的回报和委托人的份额。
确切的排放间隔和奖励节奏会随时间演变。始终在官方文档中或通过读取链的运行时常量来确认当前参数。切勿在未检查的情况下假设固定的每日数字。
- 权重是验证者每个时期设置的每 UID 向量。
- 共识分数决定了激励支付的顺序。
- 分红是验证者从矿工激励的共识中获得的份额。
- 来自质押的回报流向委托人,因此奖励必须拆分。
实际读取接口:Subtensor RPC 和链下索引器
有两种实际读取元图的方法。第一种是直接查询 subtensor 节点。同步的全节点通过 Substrate RPC 方法公开原始存储。例如,您可以使用 state_getStorage 方法配合适当的存储键,或使用某些节点实现提供的 subnetInfo RPC 接口。社区 bittensor Python SDK 封装了这些调用,并提供了一个 metagraph 对象来获取和计算状态。第二种方法是使用已经计算共识和排放的链下索引器或区块浏览器。这些很方便,但应针对链状态进行验证。
使用 subtensor RPC 端点时,请注意节点必须已同步且不落后于链尖。滞后的节点将返回过时数据。有关检查方法,请参阅我们的指南 检测 RPC 节点落后于链尖。此外,不同的提供商可能有不同的速率限制和支持的方法;请查看 RPC 定价 和 API 服务 页面了解详情。
- 直接节点查询:使用
state_getStorage或subnetInfoRPC 接口。 - 社区 SDK(例如
bittensorPython 包)提供metagraph对象。 - 像 taostats 这样的索引器是第三方的;始终与链状态交叉检查。
可复现示例:读取特定热键的质押和权重
以下示例使用 bittensor Python SDK 连接到 subtensor 端点并读取特定子网的元图。将 wss://your-subtensor-endpoint 替换为您的实际端点(例如,来自 OnFinality 的 Bittensor RPC 指南)。该脚本获取子网 1 的元图,并打印给定热键的质押、权重、激励和分红。
import bittensor as bt
# Connect to a subtensor node
subtensor = bt.subtensor(network="wss://your-subtensor-endpoint")
# Fetch the metagraph for subnet 1
metagraph = subtensor.metagraph(netuid=1)
# Specify a hotkey to inspect
hotkey = "5C..." # replace with actual hotkey
# Find the UID for this hotkey
uid = metagraph.hotkeys.index(hotkey)
print(f"UID: {uid}")
print(f"Stake: {metagraph.S[uid]}")
print(f"Weights: {metagraph.W[uid]}")
print(f"Incentive: {metagraph.I[uid]}")
print(f"Dividends: {metagraph.D[uid]}")
print(f"Trust: {metagraph.T[uid]}")
print(f"Stake-from: {metagraph.ST[uid]}")预期输出以及如何核对报告的奖励
输出将显示链上的原始值。例如,质押以 Tao 为单位(精度为 10^9),权重已归一化,激励和分红也以 Tao 为单位。要核对报告的“APR”或“奖励”数字,您需要了解排放时间表。每个子网的总排放由网络的排放率和子网的 alpha 决定。矿工的激励是子网排放与矿工激励分数的乘积。对于验证者,分红是他们质押的矿工激励的总和,按其质押加权。下表提供了一个模板,您可以用自己的数据填写以验证奖励声明。
请注意,确切的排放间隔和 alpha 值会随时间变化。始终在官方文档中或通过读取链的运行时常量来检查当前参数。下表是您自己验证的模板。
- 质押以 Tao 为单位,精度为 10^9(u64)。
- 权重是浮点数向量,归一化后总和为 1。
- 激励和分红以每个时期的 Tao 为单位。
- 要计算 APR,您需要知道时期持续时间和排放率。
| Field | Value from chain | Reported value | Difference |
|-------|------------------|----------------|------------|
| Stake (Tao) | 123.456 | 123.456 | 0 |
| Incentive (Tao/epoch) | 0.001 | 0.001 | 0 |
| Dividends (Tao/epoch) | 0.0005 | 0.0005 | 0 |
| APR (calculated) | 12.3% | 12.3% | 0 |元图读取的故障排除清单
读取元图时,您可能会遇到几个常见问题。首先,如果您从非最终确定的本地节点读取,数据可能落后于链尖。使用我们的 检测滞后指南 中的方法进行检查。其次,“热键未找到”错误通常意味着 UID 已被注销或热键已更改。第三,权重仅在每个时期窗口更新,因此如果您在更新之间查询,出现过时读取是正常的。第四,注意 u64/u128 金额的编码:TAO 金额以 10^9 精度存储,因此除以 10^9 得到 Tao。最后,不同的节点实现(存档节点与 requests/state_query)可能具有不同的行为和速率限制;请查看您的提供商的文档。
- 节点滞后:验证节点是否处于最新区块。
- 热键未找到:检查 UID 是否仍已注册。
- 权重按时期更新:在更新之间预期有过时数据。
- 金额编码:除以 10^9 得到 Tao。
- 提供商差异:存档节点可能具有不同的 RPC 方法和限制。
链上读取的局限性和权衡
直接从 subtensor 节点读取元图可为您提供最权威的数据,但它需要同步的节点和一些计算工作来派生元图。第三方索引器提供了便利,但可能引入延迟或聚合错误。此外,subtensor RPC 接口并非在所有节点实现中标准化;某些方法可能已弃用或特定于版本。始终参考官方 subtensor 源代码和文档以获取确切的存储键和公式。
对于生产应用程序,请考虑使用可靠的 RPC 提供商,例如 OnFinality 的 Bittensor RPC 指南,以确保正常运行时间和性能。有关基准测试和最佳实践,请参阅我们的 性能和延迟指南。如果您遇到超时或错误,请参阅我们的 超时和错误指南。
后续步骤:验证、监控和构建
既然您了解了如何读取元图,您就可以构建工具来验证验证者性能、跟踪排放或创建仪表板。首先,针对可信来源验证几个热键。然后,为您的 RPC 端点设置监控,以确保它们不滞后;请参阅我们的 监控指南。要更深入地了解 Bittensor 网络,请探索 Bittensor Finney 网络概述。
如果您正在构建依赖元图数据的应用程序,请考虑使用专用的 API 服务来处理负载。查看我们的 API 服务 和 RPC 定价 了解选项。最后,始终与官方 Bittensor 文档和 subtensor 源代码交叉引用以获取最新的机制更改。
- 针对第二个来源验证您的读取。
- 监控您的 RPC 端点的滞后和健康状况。
- 探索 Bittensor Finney 网络 以获取更多上下文。
- 使用 OnFinality Learn 中心 获取更多指南。