如何学习Substrate

July 20, 2020
Blockchain Substrate

[toc]

通过本文,你能了解到,

  • 为什么学习Substrate;
  • 学习它所需的必要性知识有哪些;
  • Substrate 学习资料和推荐的使用方法;
  • 部分学习路径/方法的分享等。

为什么学习Substrate

Substrate是由Parity公司开发的一个区块链开发框架,提供了区块链开发所需的底层公共组件,可以让普通的开发者快速地开发一条区块链应用,来验证自己的想法。如何你对区块链技术感兴趣,并且想要把区块链的技术带到普通人的生活中,但是没有相关的技术经验,那么,Substrate再适合你不过了。

必要性知识

区块链知识

如果你对区块链技术能做什么还不太清楚,我建议你把下面这些问题思考一下(不清楚的可以Google搜索),然后和朋友、同事讨论,把讨论结果分享在区块链的爱好者社区里,

  • 我们现在的世界存在什么问题?
  • 区块链核心的观点/技术点有哪些?
  • 区块链能改善或者解决上面提到的问题吗?

如果你想看一下其他人学习区块链的经历,可以参考我之前写的这篇如何学习区块链技术

对区块链有了初步的了解后,就可以开启我们的Substrate学习之旅了。

开发者技能

已经是或者想要成为技术开发者,就必须熟练使用开发者常用到的工具,包括:

  • 命令行工具;
  • 代码编辑器或者集成开发环境(IDE),如vscode,intellij idea, clion等等;
  • Google 搜索,首先用英文搜索(中文只占互联网资料的5%甚至更低);
  • Git/Github 常用操作等。

学习Rust

Substrate本身以及基于Substrate的应用链的开发都使用的是Rust语言,一定程度的Rust编程知识是需要的。我建议以下的学习方式:

  • 浏览Rust的官方网站https://www.rust-lang.org/,熟悉里面的各种资料,次数不限(我应该看了不下3遍~)。
  • 读和练习Rust的官方书籍内容,https://doc.rust-lang.org/book/,定一个固定的时间把它学完(比如一个月),把碎片时间充分利用,这本书的前10章是重中之重。
  • 如果学有余力,可以尝试写1~2个自己感兴趣的Rust的小项目。

并不是说要在学习Substrate之前就要把Rust掌握到很高的程度,而是在学习Substrate的过程中,逐步去读上面提到的书和网站提供的各种练手代码等。

一些其它的小工具包括:

Substrate资料和使用方法

日常获取相关资料的快捷链接:https://subdev.cn/

重要的内容都在 substrate.dev 网站上,比如:

中文的技术资料主要是技术文章和视频,这些内容通常是针对某一个概念或者教程,空闲时间可以多看看:

和Substrate核心开发者以及众多的社区技术爱好者互动的渠道有:

在这些聊天群里,大家可以提问题,参与讨论,通常会很快获得想要的答案和知识。

另外一些比较重要,但相对深入的资料有StackOverflow关于Substrate的问答Substrate的Rust实现文档源代码,在用到的时候搜索就可以了。

学习路径分享

区块链后端(Runtime)开发

这里的后端开发是指的区块链节点代码的开发,在Substrate里也称为runtime开发。

建议的学习路径是:

  • 首先尝试这两个教程Create Your First Substrate Chain -> Build a PoE Decentralized Application,另外一个加密猫的教程也可以学习下(版本更新可能不及时);

  • 在练习教程的同时,熟悉substrate.dev和其它中文频道上的各项资料,通过上面提供的资料,了解substrate常用的概念如runtime、宏等;

  • 对遇到的问题先尝试搜索已有的资料,如果没有找到,在相应的聊天频道里获取帮助,也可以积极的观察和参与其他人的讨论;

  • 完成教程之后,就可以结合自己的兴趣、工作需要,编写自己的感兴趣的区块链功能;

  • 如果想部署开发的区块链应用,可以参考博客Substrate 部署公开测试网络

上面的学习路径并不是固定的,你可以根据自己的情况调整,找到最适合自己的方法。

前端开发

一个区块链应用想要被用户接受,必须有一个用户体验良好的前端体验。前端开发者可以这样学习:

总结

本文简单介绍了Substrate的一些知识和资料,以及推荐的学习路径和方法,善用这些资料可以辅助大家的学习,在不断练习和阅读里,总结适合自己的方法,希望大家早日开发出自己的区块链应用。

comments powered by Disqus