Bittensor的去中心化计算层是如何工作的
最近偶然发现了subtensor代码库。它是Bittensor项目的核心,在去中心化AI领域引起了广泛关注。简而言之,它是一个基于Substrate的区块链,试图将计算能力——从神经网络推理到数据存储——转化为数字商品。
这个想法看起来有些复杂,但从技术角度来看,这个项目的实现方式很有趣。它是一个包含区块链节点本身、Python SDK、文档甚至网站代码的单体仓库。Rao Foundation的人决定将所有内容放在一个地方是避免链升级时破坏兼容性的最佳方式。
它到底是什么
Bittensor通过子网逻辑运作。想象你有一个市场,其中一些参与者(矿工)提供资源,而其他人(验证者)验证他们工作的质量。对于有用的操作,网络会奖励TAO代币。
Subtensor在这里充当协调者的角色。它不处理实际的计算——在区块链上训练模型或存储文件简直是疯狂。相反,链记录神经元的状态,管理质押,分发排放,并维护共识。实际工作在链下进行,在特定的子网内。
有趣的是,subtensor内部共存着多个世界。一方面,有原生的Substrate及其外部调用。另一方面——完整的EVM支持(通过Frontier)和ink!/Wasm中的智能合约。这意味着你可以用Solidity编写逻辑,与主网络中的质押或余额进行交互。
代码库里面有什么
项目结构相当透明,尽管代码量很大:
pallets/subtensor/— 核心逻辑在这里:子网如何运作,权重如何累积,奖励如何分配。sdk/python/—bittensor包和btcli工具。该库是根据链元数据生成的,最大限度地减少了版本之间的差异。node/— 节点二进制文件本身,负责网络和RPC。precompiles/— 将区块链功能暴露给EVM环境的桥接器。
顺便说一下关于SDK生成。这是一个相当务实的方法:当您更新运行时,文档和客户端库会随之更新。CI包括在主网"克隆"上的测试,在推广到生产环境之前验证真实数据上的迁移。
如何在本地运行
最快的方式是使用Docker启动本地网络。开发者准备了一个现成的镜像,省去了半小时编译Rust代码的麻烦。
docker run --rm --name local_chain \
-p 9944:9944 -p 9945:9945 \
ghcr.io/raofoundation/subtensor-localnet:devnet
之后,您可以通过btcli或Python客户端连接:
import bittensor
client = bittensor.Client("local")
print(client.get_block_number())
如果您想深入了解内部结构,有一个用于初始化Rust环境并启动"快速"本地网络的脚本:
./scripts/init.sh
./scripts/localnet.sh
值得深入吗
这个项目比较小众。如果您只是想运行LLM,由于加密组件的存在,Bittensor可能会显得不必要地复杂。然而,subtensor作为一个具有混合架构的复杂Substrate系统示例很有趣。
谁应该研究这个代码:
- 为Substrate编写Rust代码的人,想要看复杂经济模型的自定义pallet实现。
- 寻找将Solidity合约与原生区块链逻辑结合方法的开发者。
- 设计需要验证链下工作(链下工作者)的系统的人。
缺点是入门门槛相当高。代码库中的文档在某些地方比较稀疏,要理解权重分配逻辑,您需要在pallets文件夹中花费大量时间。但如果您对去中心化资源市场这个话题感兴趣,subtensor是目前最活跃的示例之一。
从文档开始您的探索,因为readme主要描述代码库结构和开发过程,而不是网络实际工作原理的理论。
相关项目