Bittensor Subtensor 入门与区块链开发指南

Bittensor Subtensor 入门与区块链开发指南
WeekendBittensor Subtensor 入门与区块链开发指南
随着去中心化人工智能生态 Bittensor 的不断发展,其核心基础设施 Subtensor 逐渐成为开发者和研究者关注的重点。Subtensor 是一个基于 Substrate 的区块链节点实现,它承载了 Bittensor 的共识机制、节点信息发布以及价值转移(TAO 代币)等关键逻辑。本文将对 Subtensor 的架构、运行环境、开发方法和实践操作进行全面介绍,帮助开发者快速上手。
1 | _ _ |
本文章包含 Bittensor 的 substrate 链。Subtensor 包含以下可信逻辑:
- 运行 Bittensor 的 共识机制;
- 广播神经元信息、IP 等;
- 通过 TAO 促进价值转移。
系统需求
./bin/release中的二进制文件为 Linux 内核使用的 x86_64 二进制文件。Subtensor 运行需要约 ~286 MiB 内存。
支持架构:
- Linux: x86_64
- MacOS: x86_64 和 ARM64 (M 系列 Mac)
当前不支持 Linux 和 MacOS 之外的操作系统。
架构支持
Subtensor 支持以下架构:
Linux x86_64
需求:
- Linux 内核 2.6.32+
- glibc 2.11+
这是一个基于 FRAME 的 Substrate 节点,开箱即用,适合开发 🚀
MacOS x86_64 & arm64 (Apple Silicon)
需求:
- macOS 10.7+ (Lion+) 用于 x86_64
- macOS 11+ (Big Sur+) 用于 Apple Silicon (M1, M2 及更新),支持 arm64 架构。
网络需求
Subtensor 需要访问公网
Subtensor 运行在 IPv4 上
Subtensor 监听以下端口:
- 9944 - WebSocket:Bittensor 使用的端口,仅接受本地连接。必须防火墙保护,避免暴露公网。
- 9933 - RPC:端口开放,但未使用。
- 30333 - p2p socket:用于接收其他 Subtensor 节点的连接。必须确保防火墙允许进入该端口的流量。
假设默认的出站流量策略为 ACCEPT。若不是,请确保允许出站 30333 端口。
子网开发
如果你在开发和测试子网激励机制,则需要运行本地 Subtensor 节点。请参考 Bittensor 开发者文档 - Subtensor Nodes 中的详细步骤。
Lite 节点 vs Archive 节点
关于 Lite 节点与 Archive 节点的区别,以及如何在这些模式下运行本地 Subtensor 节点,请参考 Bittensor 开发者文档。
Subtensor 开发
安装
首先完成 Rust 基础环境安装。
编译并运行
使用 Rust 原生 cargo 命令编译并启动模板节点:
1 | cargo run --release -- --dev |
仅编译
如果只想编译而不运行,可以执行:
1 | cargo build --release |
其他启动方式
单节点开发链
启动非持久化的单节点开发链:
1 | ./target/release/subtensor --dev |
清除开发链状态:
1 | ./target/release/subtensor purge-chain --dev |
调试模式下运行:
1 | RUST_BACKTRACE=1 ./target/release/subtensor -ldebug --dev |
运行日志调试:
1 | SKIP_WASM_BUILD=1 RUST_LOG=runtime=debug -- --nocapture |
运行单个测试:
1 | SKIP_WASM_BUILD=1 \ |
代码覆盖率
1 | bash scripts/code-coverage.sh |
注意:需要在主机安装
cargo-tarpaulin,例如:cargo install cargo-tarpaulin
保持链状态
默认情况下,开发链状态存储在临时目录。若需持久化:
1 | mkdir my-chain-state |
执行后可查看数据库文件:
1 | ls ./my-chain-state/chains/dev |
连接 Polkadot-JS 前端
运行本地节点后,可以通过 Polkadot-JS Apps 进行交互:
多节点本地测试网
若需体验多节点共识,请参考 Substrate 教程:模拟网络教程。
模板结构
一个 Substrate 项目包含多个分布在不同目录的组件。
节点功能
Substrate 节点提供的能力包括:
- 网络通信:基于
libp2p - 共识机制:支持 Aura 出块、GRANDPA 最终性
- RPC 服务:通过远程过程调用与节点交互
核心文件
chain_spec.rs:链配置与创世状态service.rs:节点实现,包含共识逻辑runtime/:运行时逻辑,基于 FRAMEpallets/:自定义业务模块
CLI 帮助
构建完成后,可通过以下命令查看支持参数:
1 | ./target/release/node-subtensor --help |
Runtime 与 Pallets
- Runtime:即区块链的状态转换函数,验证区块并执行状态变更
- FRAME Pallets:模块化组件,用于定义存储、调度函数、事件、错误等
- 构建方式:通过
construct_runtime!宏将 Pallets 组合成完整的链
与前端交互
运行节点后,可以使用 Polkadot-JS Apps 连接本地 Subtensor 节点,进行链状态查询和交互。
节点架构与核心文件
Subtensor 基于 Substrate 的模块化设计,主要目录结构:
chain_spec.rs:链配置文件,定义创世区块状态(包括 Alice、Bob 等预置账户)service.rs:节点服务入口,涉及共识机制(Aura 出块、GRANDPA 最终性)runtime/:定义运行时逻辑,基于 FRAME Pallets 组合pallets/:自定义业务逻辑模块(存储、事件、错误、可调度函数等)
开发者小结
Subtensor 是 Bittensor 的底层支撑,既具备 Substrate 的灵活性,又加入了 AI 网络的独特逻辑。对于开发者而言,掌握 Subtensor 可以帮助你:
- 构建与调试本地子网(Subnet)
- 探索 Bittensor 的奖励机制与共识实现
- 开发定制化 Pallet,实现新的链上逻辑
如果你正在研究去中心化 AI 或想要构建自己的子网,Subtensor 将是你最好的实验田。












