⚙️ 区块链开发框架

Substrate 框架
构建你自己的区块链

Substrate 是 Parity Technologies 开发的模块化区块链开发框架,
让你像搭积木一样快速构建自定义区块链 —— 从概念验证到主网上线。

300+ 生态项目
50+ FRAME模块
Rust 开发语言
3年+ 主网运行

Substrate 核心架构

从底层运行时环境到上层业务逻辑,Substrate 提供了一套完整的区块链开发基础设施。

🧠

Runtime 运行时

区块链的核心逻辑层,包括状态转换函数、共识机制、区块执行。通过 WebAssembly 实现无分叉升级。

Wasm 执行
🧩

FRAME 模块系统

预构建的模块化组件库,包含共识、治理、资产管理等 pallet。开发者可组合、定制或创建自定义 pallet。

模块化
🔗

共识机制

支持 BABE、Aura、GRANDPA 等多种共识引擎,可灵活切换。也可实现自定义共识算法。

可插拔
🌐

P2P 网络层

基于 libp2p 的节点发现与通信,支持节点同步、交易广播、轻客户端验证。

libp2p
💾

存储层

基于 RocksDB/ParityDB 的键值存储,支持默克尔树验证。提供高效的链上数据读写。

Merkle Trie
🔌

RPC 接口

JSON-RPC 和 WebSocket 接口,支持链上数据查询、交易提交、事件订阅。兼容以太坊 API。

JSON-RPC

理解 Substrate 关键设计

掌握这些核心概念,你就能理解 Substrate 的设计哲学和开发模式。

01

无分叉升级

Substrate 区块链的运行时逻辑存储在链上,通过 Wasm 字节码执行。当需要升级时,只需提交一个新的 Wasm 块,网络节点会自动加载新版本,无需硬分叉。这是 Substrate 最具革命性的特性之一。

// 提交运行时升级的交易
pub fn set_code(
    origin: OriginFor<T>,
    code: Vec<u8>,
) -> DispatchResult
02

FRAME 与 Pallet

FRAME(Framework for Runtime Aggregation of Modularized Entities)是 Substrate 的模块化系统。每个 Pallet 是一个独立的逻辑模块,可以管理代币、治理、合约等功能。开发者可以像搭积木一样组合 Pallet,快速构建复杂的业务逻辑。

// 定义一个简单的 Pallet
pub mod pallet {
    use frame_support::pallet;
    
    pub struct Pallet<T>(PhantomData<T>);
    
    pub fn do_something(origin: OriginFor<T>) -> DispatchResult {
        let _who = ensure_signed(origin)?;
        // 业务逻辑
        Ok(())
    }
}
03

混合共识

Substrate 采用混合共识模型,将区块生产(BABE/Aura)与区块最终性(GRANDPA)分离。BABE 负责出块,GRANDPA 负责最终确认,两者并行工作,既保证了出块效率,又提供了确定性最终性。

// 共识配置示例
type Block = generic::Block<
    Header, UncheckedExtrinsic
>;
type Consensus = Babe<Runtime>;
type Finality = Grandpa<Runtime>;
04

链下工作机 (Off-chain Workers)

链下工作机允许节点在链下执行计算密集型或需要外部数据获取的任务,结果通过交易提交到链上。这为预言机、链下计算等场景提供了原生支持,而无需依赖第三方服务。

// 链下工作机示例
fn offchain_worker(block_number: T::BlockNumber) {
    let price = fetch_price_from_api();
    let _ = submit_price(price);
}

常用 FRAME Pallet

Substrate 生态提供了丰富的预构建 Pallet,覆盖了区块链开发的大部分常见需求。

💰 Balances

管理账户余额、转账、手续费等核心代币功能。支持原生代币的增发、销毁和冻结。

pallet_balances pallet_assets

📜 System

提供区块链底层功能,包括账户管理、事件系统、区块头处理等基础基础设施。

frame_system pallet_timestamp

🗳️ Governance

实现链上治理功能,包括公投、理事会、技术委员会、民主投票等去中心化决策机制。

pallet_democracy pallet_collective pallet_elections

🔒 Staking

实现 PoS 质押机制,包括 nominator/validator 角色管理、奖励分配、惩罚机制等。

pallet_staking pallet_session

📡 Contracts

支持智能合约部署与执行,兼容 ink! 合约语言,提供沙箱执行环境。

pallet_contracts pallet_revive

🌉 XCM & Bridges

实现跨链消息传递(XCM)和桥接功能,支持不同区块链之间的资产和数据传输。

pallet_xcm pallet_bridge

Substrate vs 其他 区块链框架

了解 Substrate 与其他主流区块链开发框架的差异,帮助你选择最适合的技术方案。

特性 Substrate Cosmos SDK 以太坊 (Solidity)
开发语言 Rust Go Solidity / Vyper
升级方式 无分叉升级 治理分叉 硬分叉
共识引擎 可插拔(BABE/GRANDPA/Aura) Tendermint Casper (PoS)
互操作性 XCM 原生跨链 IBC 协议 桥接方案
执行环境 Wasm 虚拟机 原生 Go 执行 EVM
模块化程度 FRAME 高度模块化 模块化 低
轻客户端 原生支持 支持 需要额外实现
链下计算 链下工作机原生支持 需要自定义 依赖预言机

Substrate 开发流程

从环境搭建到链上部署,跟随这些步骤快速开始你的第一条 Substrate 区块链。

1

安装 Rust 环境

安装 Rust 编译工具链,配置 Wasm 目标。Substrate 依赖 Rust nightly 版本和 wasm32-unknown-unknown 目标。

2

使用脚手架

通过 substrate-node-template 快速生成项目骨架。一个命令即可创建包含基础 Pallet 和测试网络的完整项目。

3

编写 Pallet

在 FRAME 框架下编写自定义业务逻辑。定义存储、事件、错误和可调用函数,实现链上状态管理。

4

编译与测试

使用 cargo build 编译 Wasm 运行时,编写单元测试和集成测试,确保逻辑正确性。

5

启动本地网络

使用 polkadot-launch 或 zombienet 启动本地多节点测试网,模拟真实网络环境。

6

部署上线

通过治理提案或 sudo 权限提交运行时升级,将新的 Wasm blob 部署到主网。整个过程无分叉、不停机。

深入学习 Substrate

官方文档、教程和社区资源,帮助你系统掌握 Substrate 开发技能。

📖

Substrate 官方文档

最权威的技术文档,涵盖架构、API、教程和最佳实践。从快速入门到高级主题一应俱全。

访问官网 →
🎓

Substrate 开发者课程

Parity 官方推出的系统化课程,包含视频、代码示例和实验,适合零基础开发者。

开始学习 →
💻

GitHub 示例代码

官方维护的示例项目和模板,包括 Node Template、Frontier(EVM兼容)等实用仓库。

查看源码 →
🌍

Polkadot Wiki

Polkadot 生态知识库,包含 Substrate 开发、生态项目、治理机制等丰富内容。

浏览 Wiki →
🛠️

ink! 智能合约

基于 Rust 的智能合约语言,专为 Substrate 链设计。学习如何在 Substrate 链上部署合约。

了解 ink! →
👥

社区与论坛

加入 Substrate 开发者社区,在 Stack Exchange、Element、Discord 中与其他开发者交流。

加入社区 →

关于 Substrate 的 FAQ

解答开发者在学习 Substrate 时最常遇到的问题。

Substrate 和 Polkadot 是什么关系? +

Polkadot 是使用 Substrate 框架构建的。Substrate 是底层开发框架,Polkadot 是基于该框架构建的最著名的公链项目。任何开发者都可以使用 Substrate 构建自己的区块链,然后通过平行链插槽连接到 Polkadot 网络,获得共享安全性和跨链互操作性。

学习 Substrate 需要哪些前置知识? +

建议具备 Rust 语言基础,了解区块链基本原理(区块、交易、共识等)。有 Web3 开发经验会更容易上手。如果没有 Rust 经验,可以先学习 Rust 基础语法,Substrate 的 FRAME 模块化设计相对友好,可以边学边用。

Substrate 链可以兼容以太坊吗? +

可以。通过 Frontier 项目,Substrate 链可以运行以太坊兼容层,支持 EVM 和以太坊 RPC。这意味着你可以直接部署 Solidity 合约,使用 MetaMask 等以太坊工具。Moonbeam、Astar 等知名项目就是基于此方案构建的。

Substrate 链的 TPS 能达到多少? +

Substrate 本身不对 TPS 做硬性限制,性能取决于硬件配置、区块大小、执行逻辑复杂度等因素。在标准配置下,Substrate 链可以达到 1000-3000 TPS(简单转账场景)。通过优化和分片方案,理论上可以支持更高吞吐量。

如何将现有项目迁移到 Substrate? +

迁移过程包括:1) 将业务逻辑封装为 FRAME Pallet;2) 处理账户体系和代币模型;3) 迁移链上状态(可能需要快照和回放);4) 重写前端 SDK 交互逻辑。建议先在测试网充分测试,再通过无分叉升级部署到主网。

开始你的 Substrate 之旅

从零搭建一条属于你自己的区块链,加入 Polkadot 生态,成为 Web3 的构建者。