RaoFoundation/subtensor
GitHub: RaoFoundation/subtensor
Bittensor 去中心化 AI 网络的 Substrate 区块链实现,整合链 runtime、Python SDK、CLI 和文档的 monorepo。
Stars: 365 | Forks: 324
```
███████╗██╗ ██╗██████╗ ████████╗███████╗███╗ ██╗███████╗ ██████╗ ██████╗
██╔════╝██║ ██║██╔══██╗╚══██╔══╝██╔════╝████╗ ██║██╔════╝██╔═══██╗██╔══██╗
███████╗██║ ██║██████╔╝ ██║ █████╗ ██╔██╗ ██║███████╗██║ ██║██████╔╝
╚════██║██║ ██║██╔══██╗ ██║ ██╔══╝ ██║╚██╗██║╚════██║██║ ██║██╔══██╗
███████║╚██████╔╝██████╔╝ ██║ ███████╗██║ ╚████║███████║╚██████╔╝██║ ██║
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝
```
# Subtensor
[](https://github.com/RaoFoundation/subtensor/actions)
[](https://discord.gg/bittensor)
Bittensor 的 monorepo。它包含 **subtensor** 链(一条基于 Substrate 的
区块链)、**Python SDK 和 `btcli`**、**文档**以及
渲染它的**网站** —— 所有这些都集中在一个地方,因此单个更改在发布前
可以进行端到端的验证。
**完整文档:** [bittensor.com/docs](https://bittensor.com/docs)
该站点是使用 Bittensor 的权威来源:安装、钱包、
质押、子网、EVM、每一笔交易和查询、错误代码以及
贡献者指南。Markdown 文件位于 [`docs/`](./docs/),并由
[`website/`](./website/) 发布。
## Bittensor 是什么
Bittensor 是一个开放网络,独立的**子网**在其中生产数字
商品 —— 计算、推理、存储、预测 —— 链以 **TAO** 支付
参与者,金额与他们贡献的价值成正比。**矿工**
生产,**验证者**评分,**子网所有者**定义激励机制,
而**质押者**支持验证者。
**subtensor** 链是信任层:它运行共识,记录子网
和 neuron 状态,处理质押和排放,并转移价值。工作本身
发生在子网内的链下;链负责协调并为其付款。
Subtensor 还在原生 Substrate extrinsics 旁边暴露了完整的 **EVM** (Frontier) 和
**ink!/wasm** 智能合约。
## 此仓库包含什么
| 领域 | 路径 | 它是什么 |
|------|------|------------|
| 链 runtime | [`pallets/`](./pallets/), [`runtime/`](./runtime/) | FRAME pallets 和组合后的 runtime。`pallets/subtensor/` 是核心(质押、子网、排放、权重)。 |
| 节点 | [`node/`](./node/) | `node-subtensor` 二进制文件:网络、RPC、链配置。 |
| EVM | [`precompiles/`](./precompiles/) | 将 substrate 功能暴露给 EVM 合约的 Precompiles。 |
| Wasm 合约 | [`chain-extensions/`](./chain-extensions/), [`ink-contract/`](./ink-contract/) | 链扩展和 ink! 合约源码。 |
| 共享 Rust | [`common/`](./common/), [`primitives/`](./primitives/), [`support/`](./support/) | 共享类型、数学原语、lints、宏、权重工具。 |
| 客户端核心 | [`sdk/bittensor-core/`](./sdk/bittensor-core/) | Bittensor 客户端的 Rust 核心(密钥对、密钥文件、SCALE codec、extrinsic 组装、RFC-0078 摘要、drand timelock、ML-KEM)—— 基于与链相同的 crate 版本构建;Python 绑定位于 [`sdk/bittensor-core-py/`](./sdk/bittensor-core-py/)。 |
| Python SDK | [`sdk/python/`](./sdk/python/) | `bittensor` 包和 `btcli` CLI。从链元数据生成,因此读取、写入和文档不会发生偏差。 |
| 文档 | [`docs/`](./docs/) | bittensor.com/docs 的来源。`docs/tx/`、`docs/query/` 和 `docs/errors/` 是生成的 —— 请勿手动编辑。 |
| 网站 | [`website/`](./website/) | Yarn + Turbo monorepo;`apps/bittensor-website` 渲染营销页面和这些文档。 |
| 测试 | [`ts-tests/`](./ts-tests/), [`clones/`](./clones/), [`eco-tests/`](./eco-tests/) | Moonwall/zombienet 集成测试、主网克隆回归测试工具、indexer 合约测试。 |
| 运维 | [`chainspecs/`](./chainspecs/), [`scripts/`](./scripts/), [`Dockerfile`](./Dockerfile) | 链配置、CI/开发脚本、生产和 localnet Docker 镜像。 |
更详细的映射:[仓库布局](https://bittensor.com/docs/internals/repo-layout)。
## Monorepo 如何协同工作
runtime 的更改可能会破坏 SDK、文档或实时的主网状态。此
仓库使这些接口保持同步:
1. **元数据驱动的 SDK。** Python 层(`bittensor.storage`、`runtime_api`、
`calls`、`constants`)是从节点的 runtime 元数据生成的。手写的
**读取**和 **intents** 位于其上层;CLI(`btcli query …`、`btcli tx …`)
也是从相同的注册表生成的。CI 证明每个链调用要么
被 intent 包装,要么被明确标记为仅限原始调用。
2. **从相同注册表生成的文档。** `docs/` 中的交易、查询和错误
参考页面是根据 SDK 目录构建的,因此
bittensor.com/docs 始终与 `btcli` 和 `import bittensor` 暴露的内容相匹配。
3. **CI 验证整个技术栈。** 在每个 PR 中,Rust 检查与
[主网克隆升级](https://bittensor.com/docs/internals/mainnet-clone)
(将您的 runtime 应用于实时状态的副本)、Python SDK 套件和文档
构建一起运行。Runtime 迁移通过 try-runtime 进行重放。
4. **发布序列。** 合并到 `main` 会构建一次 runtime(确定性的
srtool 构建),并将其提升为 devnet → testnet → mainnet。SDK 和文档
在链升级落地后发布。参见
[发布流程](https://bittensor.com/docs/internals/release-process)。
## 从哪里开始
选择与您正在进行的操作相匹配的路径 —— 链接的文档包含详细信息。
| 您想要… | 从这里开始 |
|--------------|------------|
| 安装 SDK 并运行您的第一次查询/tx | [快速入门](https://bittensor.com/docs/quickstart) |
| 日常使用 `btcli` 或 Python API | [CLI](https://bittensor.com/docs/cli) · [SDK README](./sdk/python/README.md) |
| 在链之上构建 agent | [面向 agents](https://bittensor.com/docs/agents) · [`/catalog/intents.json`](https://bittensor.com/catalog/intents.json) |
| 了解子网、TAO、epochs、钱包 | [概念](https://bittensor.com/docs/concepts/network) |
| 运行本地链进行开发 | [本地开发](https://bittensor.com/docs/guides/local-development) |
| 运营主网/测试网节点 | [运行节点](https://bittensor.com/docs/guides/running-a-node) |
| 开发或更改链/runtime | [Rust 设置](https://bittensor.com/docs/internals/rust-setup) · [测试](https://bittensor.com/docs/internals/testing) |
| 贡献 PR | [贡献](https://bittensor.com/docs/internals/contributing) · [CONTRIBUTING.md](./CONTRIBUTING.md) |
### 最小化本地链 (Docker)
```
docker run --rm --name local_chain \
-p 9944:9944 -p 9945:9945 \
ghcr.io/raofoundation/subtensor-localnet:devnet
```
然后使用 `btcli --network local query is-fast-blocks` 或
`bittensor.Client("local")` 连接。有关从源码构建、
Alice 开发账户和水龙头行为的信息,请参见
[本地开发](https://bittensor.com/docs/guides/local-development)。
### 最小化链构建(从源码)
```
./scripts/init.sh # Rust toolchain + wasm target
./scripts/localnet.sh # build and launch a fast-blocks localnet
```
节点二进制文件是 `node-subtensor`(`cargo build --release` →
`./target/release/node-subtensor`)。Extrinsic 和查询参考:
[交易](https://bittensor.com/docs/tx) ·
[查询](https://bittensor.com/docs/query)。
### 最小化 SDK 开发(从此仓库)
```
cd sdk/python
just sync # uv environment; builds bittensor-core from ../bittensor-core-py (in sdk/)
just check # lint, typecheck, unit tests, codegen gates (same as CI)
```
面向链的 SDK 覆盖范围位于 Rust 核心的 e2e 测试套件中:
`cargo test -p bittensor-core --test e2e -- --nocapture`。参见
[SDK 测试](https://bittensor.com/docs/internals/sdk-tests)。
## 链架构(高层视角)
```
┌─────────────────────────────────────┐
│ node-subtensor │
│ (libp2p, RPC, tx pool, executor) │
└─────────────────┬───────────────────┘
│ executes
┌─────────────────▼───────────────────┐
│ node-subtensor-runtime (wasm) │
│ ┌─────────────┐ ┌────────────────┐ │
│ │ pallet- │ │ Frontier EVM │ │
│ │ subtensor │ │ + precompiles │ │
│ │ + swap, │ │ + pallet- │ │
│ │ shield, │ │ contracts │ │
│ │ proxy, … │ └────────────────┘ │
│ └─────────────┘ │
└───────────────────────────────────────┘
```
- **Runtime** (`runtime/src/lib.rs`):组合 pallets,定义
`spec_version`,托管迁移和 runtime API。
- **核心 pallet** (`pallets/subtensor/`):子网、注册、质押、
权重、排放、代理、承诺。
- **EVM**:Substrate 账户 (ss58) 和 EVM 账户 (h160) 是同一条链上独立的
签名域;precompiles 将质押和余额桥接到
Solidity。指南:[EVM](https://bittensor.com/docs/guides/evm)。
- **网络**:`finney`(主网)、`test`(测试网)、`local`(开发节点)。
公共端点以及 lite 与 archive 节点的对比:
[网络](https://bittensor.com/docs/concepts/network)。
## 许可证
参见 [LICENSE](./LICENSE)。各个 crate 可以在 `Cargo.toml` / `pyproject.toml` 中声明其自己的 SPDX
标识符。
标签:可视化界面, 请求拦截, 逆向工具, 通知系统