Substrate 学习笔记
Table of Contents
Substrate 学习笔记
通过源码学习pallet 您推荐从那些pallet开始看最有效果。 可以先看看多签吧 多签看起来还更清晰一些 顺便可以了解下在substrate中怎样实现模块互调,dispatch call这些基本概念
看substrate业务模块觉得不好看懂很正常哈~substrate中的业务模块是底层工程师写的,不是runtime工程师写的,所以会相对来说更复杂一点
你可以带着一些特定的学习目的去看会更快一点 只是通用地想学习语法我建议直接开始写
比如,举个例子,如果你想知道staking或者governance相关的就可以直接去看对应的业务逻辑(这两块也挺繁琐的) 如果你想了解一条链如何支持多手续费付费,就可以去看transactionpayment和signedExtra相关的代码 如果想了解如何自定义runtime origin逻辑,可以去看下多签和治理相关的 如果 想知道如何在节点中请求外部数据并且写入链上,可以搜搜offchain worker相关的概念和代码 如果想知道跨链相关的逻辑,可以看xcm相关的逻辑
如果想知道如何为一条链引入一种自己自定义的交易格式,可以看看pallet-revive(集成evm)相关的逻辑
这些功能用其他的区块链框架几乎不可能实现或者改动量非常大,但是在substrate中都可以通过一些example pallet看到比较标准通用的实现方案
源码都在 polkadot-sdk
了解波卡或者polkadot-sdk能干什么,好处就是自己遇到问题了,可以在代码中找到相应的实现思路
如果看substrate/frame下的pallet觉得逻辑不好看懂的话,也不要气馁,这不是你们的问题,这是一个底层工程师在构造业务层代码时,也会做各种架构和抽象,这其实是底层工程师眼中的业务逻辑,并不表示这样写一定是最好的。
学习源码过程,需不需要自己搭建部署polkadot节点,调试跟踪代码 自己debug肯定是学习最快的路径,不过目前wasm内不支持debug,可以写测试
如果相比于公链开发的话,钱包毕竟属于应用端,肯定是更多的,不过相比于其他dapp应用,钱包就少多了
运行节点的时候可以指定runtime运行方式,native时可以调试的
这个问题不同生态不太一样,相对来说链开发工程师需求比较多的岗位是波卡和eth生态,一个是平行链,一个是layer2, 波卡生态的话大部分情况数量掌握runtime层逻辑就可以了(精通底层是个加分项),layer2的话更多就是拿着目前的layer2 stack,如op-stak和orbit把链启动起来并且能维护正常运行就行了
所以除非进入头部的layer2项目有可能会有更多的写代码的场景,不然就是看懂目前的op-stack和orbit也就差不多了
如果是从知识体系来看的话,首先最好懂:
- 分布式基础原理
- VM体系(有合约运行的基本概念)
- 指令 (解析和运行)
- 存储 (和区块链底层存储框架的交互)
- 中间件的开发范式(有架构设计的概念)
- 加分项:
- crypto算法
- 追踪行业动态(比如evm并行,AA等)
了解理论就行,不用深入到算法层面
我说的是编译产物的运行,比如vm的一些必要的构成组件,解释器,vm运行时用到的栈和memory相关的概念,还有vm和外接交互的一些interface,理解了这些才能理解vm和链是如何交互的
这些都是底层被调用的库,是具体实现。这里更多说的是区块链存储模型
我的侧重点不在某个组件的具体实现,更多是理解链的运行机制,在理解运行机制中,会涉及到节点沟通,出块,修改存储,状态同步,以及合约运行的机制和结果。这些都围绕一个核心的业务场景,就是区块链节点是如何出块的,那一定涉及:
- 出块前的状态一致性如何保证
- 出块过程(vm相关的知识出现在这里)
- 出块后的本地状态修改
- 出块后的块同步(如何保证全网状态一致性) 围绕这个核心场景,先理解这些组件是如何相互作用的,不要陷入到细节中。
substrate相对于其他区块链代码,有点像rust相对于其他语言,学习曲线陡峭了一点,但是学好之后也是一种降为打击
学会substrate之后会觉得给链+新功能是一件很爽的事情哈 有一种通透感