无需任何区块链经验,跟着步骤一步步来
Substrate 使用 Rust 开发。如果你还不熟悉 Rust,先花 3 天掌握核心语法:所有权、trait、泛型、宏。我们准备了精选学习路径。
使用 `substrate-node-template` 快速启动一个自定义区块链。只需 3 个命令,你就能跑起来一个拥有账户、转账功能的链。
Pallet 是 Substrate 的功能模块。我们将手把手教你写一个简单的「存证」Pallet,理解存储、事件、可调度函数的核心概念。
掌握这些概念,你就能看懂整个波卡生态的底层设计
FRAME 是 Substrate 的运行时开发框架,它将区块链逻辑抽象为独立的 pallet。你可以像搭积木一样组合各种功能模块,包括系统、余额、共识等。
Substrate 内置了多种共识引擎(Aura、BABE、Grandpa),支持同步最终性和异步最终性。了解区块如何被构建、导入和最终确认。
链下工作机允许你的运行时执行昂贵的计算或访问外部数据(如 HTTP API),结果可以通过交易提交回链上。这是实现预言机和复杂计算的关键。
Substrate 将区块链逻辑编译为 Wasm 字节码,存储在链上。这意味着区块链可以通过链上升级改变其核心逻辑——无需硬分叉!
Substrate 支持 Warp 同步和轻客户端,用户可以只同步区块头就能验证链的状态。这对于移动端和浏览器应用至关重要。
通过 JSON-RPC 接口与 Substrate 节点交互。使用 `polkadot-js/api` 库可以轻松构建前端应用,查询链上状态、发送交易。
这是你写的第一个 Substrate Pallet — 用于在链上存储和验证数据
// 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 中直接调用它。
波卡生态的繁荣离不开每一个开发者的贡献。无论你水平如何,都有适合你的参与方式。
在 paritytech/substrate 仓库中,找到标记为 good first issue 或 help wanted 的 Issue。这些通常是比较容易上手的任务,比如文档改进、测试补充、小 bug 修复。
Substrate 的文档和测试覆盖率一直在持续改进中。你可以帮助翻译文档、补充 Rust doc 注释、编写单元测试或集成测试。这是对项目最直接的价值贡献。
查看 primitives 文档 →Fork 仓库,创建你的分支,提交代码变更。Substrate 团队会在 PR 中 review 你的代码。不要担心不完美——每个贡献者都是从第一个 PR 开始的。记得在提交前运行 cargo check 和 cargo test。
加入 Substrate 技术社区:Element 聊天室、Polkadot Forum、Substrate Stack Exchange。你可以回答问题、提出改进建议、分享你的开发经验。社区贡献同样被广泛认可。
加入 Substrate 技术频道 →我们为你整理了从入门到进阶的必备资源
substrate.io — 最权威的学习入口,包含教程、API 参考、概念解释
paritytech/substrate — 阅读源码、提交 Issue、参与 PR review
与 Substrate 链交互的通用前端,调试和测试的必备工具
官方提供的 Rust 和 Substrate 工具链安装脚本
技术问答社区,搜索或提问,社区成员会热心解答
Parity 团队出品的系列视频,从零开始构建一条链
每一位贡献者都是 Substrate 生态的基石。你也可以成为他们中的一员。
参与了 Substrate 共识模块的优化,提交了 20+ 个 PR,包括 BABE 共识效率提升和 Grandpa 最终性加速。
@zhangxiaoming_substrate开发了 Substrate 链的区块浏览器前端工具,支持自定义 pallet 的事件和存储查询,已被多个波卡平行链项目采用。
@haoran_dev_tools组织了多场 Substrate 线上工作坊和黑客松,编写了《Substrate 从入门到贡献》系列教程,累计影响超过 5000 名开发者。
@annie_chen_edu