Substrate 生态

Substrate 开发
与贡献指南

从零开始学习 Substrate 框架开发,掌握 Rust 区块链编程,参与波卡(Polkadot)生态开源贡献。股老师带你从入门到成为一名真正的 Substrate 贡献者。

5 分钟搭建开发环境

无需任何区块链经验,跟着步骤一步步来

terminal — substrate-dev-setup — zsh
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # 安装 Rust 工具链(若已安装可跳过) info: downloading installer info: Rust 已安装成功!   $ rustup default stable $ rustup update nightly $ rustup target add wasm32-unknown-unknown --toolchain nightly # 安装 Substrate 开发依赖 $ cargo install --git https://github.com/paritytech/substrate substrate --tag monthly-2025-01   $ substrate --version substrate 0.9.50-xxxxxxxxx $ 🎉 环境就绪,开始你的第一条链!
🦀

Rust 基础速通

Substrate 使用 Rust 开发。如果你还不熟悉 Rust,先花 3 天掌握核心语法:所有权、trait、泛型、宏。我们准备了精选学习路径。

所有权 trait 泛型
🧱

创建你的第一条链

使用 `substrate-node-template` 快速启动一个自定义区块链。只需 3 个命令,你就能跑起来一个拥有账户、转账功能的链。

node-template FRAME pallet
🧪

编写第一个 Pallet

Pallet 是 Substrate 的功能模块。我们将手把手教你写一个简单的「存证」Pallet,理解存储、事件、可调度函数的核心概念。

Storage Event Dispatch

理解 Substrate 架构

掌握这些概念,你就能看懂整个波卡生态的底层设计

⚙️

FRAME 运行时

FRAME 是 Substrate 的运行时开发框架,它将区块链逻辑抽象为独立的 pallet。你可以像搭积木一样组合各种功能模块,包括系统、余额、共识等。

system balances consensus
🔗

区块执行与最终性

Substrate 内置了多种共识引擎(Aura、BABE、Grandpa),支持同步最终性和异步最终性。了解区块如何被构建、导入和最终确认。

BABE Grandpa Aura
🌐

链下工作机(Off-chain Workers)

链下工作机允许你的运行时执行昂贵的计算或访问外部数据(如 HTTP API),结果可以通过交易提交回链上。这是实现预言机和复杂计算的关键。

OCW Oracle HTTP
🧬

Wasm 运行时

Substrate 将区块链逻辑编译为 Wasm 字节码,存储在链上。这意味着区块链可以通过链上升级改变其核心逻辑——无需硬分叉!

Wasm 无分叉升级 Runtime
📡

Substrate 轻客户端

Substrate 支持 Warp 同步和轻客户端,用户可以只同步区块头就能验证链的状态。这对于移动端和浏览器应用至关重要。

轻客户端 Warp 验证
🔌

Substrate API 与 RPC

通过 JSON-RPC 接口与 Substrate 节点交互。使用 `polkadot-js/api` 库可以轻松构建前端应用,查询链上状态、发送交易。

JSON-RPC polkadot-js 前端

一个简单的存证 Pallet

这是你写的第一个 Substrate Pallet — 用于在链上存储和验证数据

Rust
// pallets/poe/src/lib.rs
// Proof of Existence — 存证模块

use frame_support::pallet_prelude::*;
use frame_system::pallet_prelude::*;

#[pallet]
pub mod pallet {
    #[pallet::config]
    pub trait Config: frame_system::Config {
        type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;
    }

    #[pallet::pallet]
    pub struct Pallet<T>(PhantomData<T>);

    // 链上存储:Hash -> (AccountId, BlockNumber)
    #[pallet::storage]
    pub type Claims<T: Config> = StorageMap<_, Blake2_128Concat, T::Hash, (T::AccountId, T::BlockNumber)>;

    #[pallet::event]
    #[pallet::generate_deposit(pub(super) fn deposit_event)]
    pub enum Event<T: Config> {
        ClaimCreated(T::AccountId, T::Hash),
    }

    #[pallet::call]
    impl<T: Config> Pallet<T> {
        #[pallet::weight(10_000)]
        pub fn create_claim(
            origin: OriginFor<T>,
            hash: T::Hash,
        ) -> DispatchResult {
            let sender = ensure_signed(origin)?;
            ensure!(!<Claims<T>>::contains_key(&hash), "Hash already claimed");
            let block = <frame_system::Pallet<T>>::block_number();
            <Claims<T>>::insert(&hash, (&sender, block));
            Self::deposit_event(Event::ClaimCreated(sender, hash));
            Ok(())
        }
    }
}

这个 Pallet 只有 40 行代码,但它包含了 Substrate 开发的核心元素:存储、事件、可调度函数。你可以在 Polkadot JS Apps 中直接调用它。

成为 Substrate 开源贡献者

波卡生态的繁荣离不开每一个开发者的贡献。无论你水平如何,都有适合你的参与方式。

01

从 Issue 开始

paritytech/substrate 仓库中,找到标记为 good first issuehelp wanted 的 Issue。这些通常是比较容易上手的任务,比如文档改进、测试补充、小 bug 修复。

查看 Good First Issues →
02

贡献文档与测试

Substrate 的文档和测试覆盖率一直在持续改进中。你可以帮助翻译文档、补充 Rust doc 注释、编写单元测试或集成测试。这是对项目最直接的价值贡献。

查看 primitives 文档 →
03

提交 PR

Fork 仓库,创建你的分支,提交代码变更。Substrate 团队会在 PR 中 review 你的代码。不要担心不完美——每个贡献者都是从第一个 PR 开始的。记得在提交前运行 cargo checkcargo test

阅读贡献指南 →
04

参与社区讨论

加入 Substrate 技术社区:Element 聊天室、Polkadot Forum、Substrate Stack Exchange。你可以回答问题、提出改进建议、分享你的开发经验。社区贡献同样被广泛认可。

加入 Substrate 技术频道 →

精选学习路径与工具

我们为你整理了从入门到进阶的必备资源

来自社区的贡献者

每一位贡献者都是 Substrate 生态的基石。你也可以成为他们中的一员。

🦀

张小明

核心贡献者 · Rust 开发者

参与了 Substrate 共识模块的优化,提交了 20+ 个 PR,包括 BABE 共识效率提升和 Grandpa 最终性加速。

@zhangxiaoming_substrate
🧪

李思颖

文档贡献者 · 技术写作者

翻译并整理了 Substrate 中文文档,帮助上百名中文开发者入门。同时编写了多个 pallet 的集成测试。

@siying_li_docs
🔧

王浩然

工具贡献者 · 全栈工程师

开发了 Substrate 链的区块浏览器前端工具,支持自定义 pallet 的事件和存储查询,已被多个波卡平行链项目采用。

@haoran_dev_tools
🌍

陈安妮

社区贡献者 · 布道师

组织了多场 Substrate 线上工作坊和黑客松,编写了《Substrate 从入门到贡献》系列教程,累计影响超过 5000 名开发者。

@annie_chen_edu

准备好了吗?
开始你的第一条链

无论你是刚接触区块链的新手,还是经验丰富的 Rust 开发者,Substrate 都为你提供了广阔的舞台。现在就动手,成为波卡生态的构建者之一。