查看原文
其他

全球第一门 Substrate 开发课第3期学员顺利毕业!

小俞班长 一块Plus 2020-11-11


1月22日,由一块链习联合 Laminar CTO 、Substrate、Polkadot 贡献代码者、 Polkadot 社区大使陈锡亮老师《Substrate 快速入门与开发实战》 共同打造的全球第一门 Substrate 开发实战指南课程第三期课程已经结束,在场的小伙伴们纷纷表示,这是他们参加过的最满意的课程。


写在第三期课程结业的日子


我是《Substrate 快速入门与开发实战》 课程班长小俞。挤在春运人潮里,我问自己这句话:“2019年结束了,今年的你和去年有什么不一样?

 

看着第三期同学的  111 份作业,32天 Substrate 话题打卡,3组团队结业挑战,4次助教硬核分享,我相信本期课程同学们的回答不会让自己失望。

 

在课程结业之际,我试着对过去一个多月的课程做简要总结,希望能带领大家再次回顾这次课程的点点滴滴。


为何开发者都选择了

Substrate?


在课程接近尾声时,我和一些同学的交流为什么会想学习Substrate,为什么会报名参加这门课程?他们都纷纷提到以下两个重要原因:


1、看好 Substrate 前景;

2、想要深度学习Substrate,但是又苦于找不到靠谱的学习资料。

 

             

的确,Substrate目前还处于不断更新的阶段,从2019年1月推出的1.0版本到目前尚未正式推出的2.0,大大小小新的功能特性有一百多个,平均3天一个新功能。


另外,Substrate 从1.0开始到现在也经历了几个重大变动,甚至模块框架的名字都由SRML变成了FRAME了。

 

而官方和其他的文档基本都是1.0的文档,少有及时更新的。给本来就比较难的学习过程带来了更多的困扰,因为你学习的代码可能是使用已经过期的方法。

 

作为全球第一门Substrate开发实战指南,我们的教研组将课程中所有代码、教材全部更新到了最新版本的Substrate,旨在帮助同学快速入门和掌握。

 

那么对于这样一门看起来颇有难度的在线课程,在一个月的时间里大家是如何克服重重阻碍,在区块链这块新地图里努力探索的呢?


带你一起回顾这次课程的

N个小故事


Parity 于今年 8月表示在过去一年开发框架 Substrate 开发者社区增长迅速,一年间代码贡献数量增长了两倍,代码行数增长了 135%,Substrate 的开发者社区中的开发者数量已经超过 300 人。

 

1.仅邀请最优秀、最认真的开发者加入


刚刚发布课程报名信息时,教研组就给各位学员报名设置了门槛


正如我们一直说的,并非所有人都适合参与这门课程,我们希望邀请到最优秀、态度最认真、同时也是我们最有可能提供帮助的开发者加入。


也希望我们能够提供给每一位开发者的价值和帮助都是长期、持续的。

            

也正因如此,每一期《Substrate 快速入门与开发实战》特训营才能聚集来一批同样有能量且价值观相近的伙伴。


很多学员在结课时提到的,优秀的同学和社群的讨论是课程学习中获得的惊喜之一。

         

2.精心打磨的视频教学内容


一个真正有效果的学习方式应该是怎样的呢?回归到本质上来讲,就是:输入+输出+反馈。



而这,恰恰也是我们课程的核心设计理念。

 

具体来看——

 

第三期课程总共有8次视频教学,在4周内全部解锁完毕,12个月课程有效期内可无限重复观看。

 

第一周陈锡亮老师为大家介绍Substrate和波卡生态圈,并向同学们演示如何创建一个项目,介绍项目文件结构组成,力求同学们的课程所学都能运用到实战之中。

 

第二周着重让同学们理解 Substrate 底层代码实现,学会如何利用 Substrate 开发一个可产品化的区块链项目。

 

第三周老师带同学们了解并且掌握 Polkadot.js SDK 使用与前端项目开发的能力,掌握如何设计与完善区块链项目的相关技巧,让同学对整个 Substrate 开发的生态有全面的了解。

 

第四周老师详细地为同学们介绍了Substrate 最新的有价值的性能及其应用,项目上线前所需要的准备工作和Substrate 未来发展方向。

 

并且在最后一周的线上Hackathon挑战赛中,大家各显身手,将前一个月学习掌握的Substrate知识充分实战,完成最后的课程结业考试。

 

             

 

3.最最最痛苦又有意义的作业


课程中总共有7次作业,旨在帮助同学更好消化理解课程内容,在实际演练中发现知识短板。

 

4名助教在批改同学作业后,指出其中有待改进的地方,并将优秀作业作为示例供同学们参考改进。想要了解与复习各位助教反馈点评,可以查看一块plus社区《Subdev 讨论 | 》系列文章。

   


4.来自世界各地开发者们的精彩讨论 


我们的精英班级是一群不满足于优秀的人。各位报名课程的同学们来自世界各地,各行各业。


或许通过我们之前的录取名单来历介绍,有人会想说他们本来生来就是学霸,每个人都足够优秀的确不假,但我却没有料到可以这么拼。

 

作为全球最早学习Substrate的开发者,他们聚集在一起,清晨、深夜、午休间隙,可以看到社群里的讨论不断。不论是课程学习中的疑惑还是项目开发遇到的瓶颈,老师助教都会及时详细解答,同学之间也会分享干货学习资料。

 

省去在这个信息爆炸时代在茫茫“水货”中搜索筛选优质资料的大把时间。真的可以少走很多弯路。

                   

     

想要了解更多社群讨论,可以查看一块plus社区《Subdev 讨论 | 》系列文章。


5.史上最干的助教分享会


4次助教硬核分享,助教们在学习和实战项目开发中沉淀总结出的真正“干货”,每一次都是从基础数据知识到示例代码,力求真正让同学们学有所获。


每次分享会结束后,都有同学会反复阅读复盘文章,这些都成为了课程学习的补充资料,值得多次学习消化吸收。

 

第一周:刘吉洋 《Subdev分享|Substrate背后的密码学选择

第二周:黄志光《 Subdev分享 ▏Substrate Staking代币经济系统讲解

第三周:周洋 《Subdev 分享 | Substrate Runtime 中的堆排序

第四周:徐杨 《Subdev 分享 | 手把手:用RUST语言开发RSA算法模拟

(点击文章,阅读完整干货分享)


6.精彩纷呈的每日打卡


北京时间每天早上9点,或许你还在睡眼惺忪,又或许你才刚开始一天的工作,我们勤劳的班长已经在群内发放“鲸打卡”的话题讨论了,每天一个区块链技术、Substrate方面的话题,激发你对区块链拓展知识有更多的思考。


另外,我们还有一个小的激励机制,就是参与打卡讨论获得优质打卡的学员汇成奖励积分,统计在课程积分榜单里!



在这期间,何怡、陈威、林少婷、郝明等同学都十分积极参与打卡话题讨论,并且最后位于积分榜榜单前三名的同学获得结业丰厚的奖学金~!

 

通过打卡,很多学员从最开始面对每个话题一脸懵逼到后来主动搜罗基础知识去思考并回答出自己的观点。一个月下来,每一次的思考都是一个进步。       

想要了解更多优质打卡,可以查看一块plus社区《Subdev 周记 | 》系列文章。

 

7.最优秀的教研团队带你入门


要想打造一门优质课程,不仅需要有足够强的运营团队,还有两个非常重要的关键因素:

 

1)需要一位具有足够资历的老师


经过反复斟酌,一块链习找到了Laminar CTO,Polkadot 社区大使,Substrate & Polkadot 代码贡献者——陈锡亮老师。

 

在这门课程里,他结合自己多年的研究成果,深入浅出地讲解 Substrate 开发核心开发知识和典型应用,帮助同学们从源头理解如何创建自定义Substrate链并利用 Substrate 实战开发出一个可产品化的区块链项目。

 

如今已经三期课程结束,我们很庆幸找到了陈锡亮老师共同合作这门课程。拥有丰富的 Substrate 使用经验、非常理解开发者即将要面对的问题及需求的他不仅负责录制课程,并且出现在所有的中国 Substrate 技术社群,几乎经常秒回大家的问题。

             

 2)需要多位给力助教帮助新同学答疑解惑


为了帮助每一期开发者实现最好的学习效果和能力提升,我们不仅需要优质的课程内容,也需要有助教对学员作业进行批改反馈,而我们相信,优秀学员是助教最合适的人选。

 

为此,我们特别开启“认证助教计划”,希望能够让一部分往期的优秀学员来成为Substrate课程助教,通过他们来给予每一期新学员真正意义上的能力提升。

 

就这样,一期的学员成为了二期的助教,二期的学员成为了三期的助教。他们结合自己学习过程中的总结、实战中的经验,努力地消化吸收老师所教授的知识,并传递给其他更多的人,帮助新同学们更好的入门Substrate。

 

为了保证每位同学都能够充分消化吸收课程内容,我们将同学们分为四组,每一组都有一位助教为大家批改点评课程作业,解决同学疑惑。

              

在过去的大半年中,我们已经招募了20位Sub助教。

               

他们非常强大,是我们课程中非常重要的角色,在这里我们也非常由衷的感谢所有助教的辛苦付出。

 

             


8.组队并肩作战,交上我们最后的答卷


结束了全部课程,最后的结业挑战赛,是同学们运用学习成果激发新灵感的机会。

 

Substrate hackathon挑战赛,每期课程举行一次,在限制时间内,以小组团队协作的形式创建一个通用模块,与 Substrate Kitties 做基本整合作为模块的使用演示。


需要功能有创新性,独立完整模块,而不只是 Substrate Kitties runtime 里面的一个文件。

 

本期结业挑战赛中,由陈威、何怡、林少婷、沈国晔组成的Whatsubs团队获得冠军。

 


在结业仪式上Whatsubs 组长陈威对他们小组的成果进行了一次复盘,内容如下:

 

 需求 

 

1 小猫有最大繁殖年龄和最小繁殖年龄。只有在这个范围内才可繁殖 。

2 年龄太大的小猫会死亡。猫的寿命是在一定范围内随机的。

 

 时间的表示 

 

使用区块数来表示时间的跨度。比如5分钟表示为:

`5 * 60_000 / MILLISECS_PER_BLOCK`

 

小猫有最大繁殖年龄和最小繁殖年龄,只有在这个范围内才可繁殖。

 

这个过程中我们搞明白了`parameter_types!`和

`trait Get<T>{fn get() -> T;} ` 的使用。 

 

年龄太大的小猫会死亡,猫的寿命是在一定范围内随机的。


这个问题我们讨论的比较多。比较过几个方案,因为小猫死亡的时间是随机的,所以处理死亡的小猫变得稍微复杂一些。我们需要有个数据结构保存小猫的死亡区块, 并在`on_initialize`中处理在当前块要死亡的小猫。

 

链表方案(有序, 无序)

如果小猫不多,这样的方案也没什么问题,但是始终是受到小猫规模的限制。

有一些隐患,小猫多了,容易造成出块困难。


binary-heap

* 实现了最小堆,参考了Rust标准库中的堆实现。

* 如果有10000只猫,树高14层。


k-ary heap

* 实现了多叉最小堆

* 如果有10000只猫, k=8时, 树高5层。

* 每个节点的所有子节点, 保存在一起于一个数组中。

* 由于堆保存于磁盘,减少树高能减少磁盘的IO。


double_map

`double_map`的第一个`key`存放块号, 第二个存放猫ID。

因为无论是插入一个新小猫的死亡块,  还是查找某个块上要死亡的所有小猫都很高效。


添加小猫就是相当于`map`的`insert`操作。查找某个块上的小猫可以使用`iter_prefix`  。


`on_initialize` 还是 `offchain_worker`

经过讨论, `offchain_worker`比较复杂, 需要考虑的方面很多。 


最后选择了`on_initialize`, 这个方案比较稳妥。每个节点都执行.并且也适合小猫的业务,先处理小猫的死亡, 再进行其他业务。


写在最后


45天的学习结束了,今天是《 Substrate快速入门与开发实战 》第三期课程的终点,也是本期同学入门Substrate ,构建自己技术体系的起点。

 

带着同学们给予的信任,教研组的全体老师、助教、班长们也陪跑到了最后。虽然布置任务、催作业和发布打卡结束了,但是依旧欢迎大家在群组里讨论提问,这里有你们共同成长的伙伴。

 

2018年,在柏林 Web 3 峰会上,Gavin Wood 用一台全新的 Macbook 笔记本电脑,约 15 分钟时间,就写出了一条新的区块链, Substrate 彻底炸翻全场,这暗示着一个全新的时代正在到来。

 

上一次站在时代的路口时,你可能还是个旁观者。

如今,你可以选择成为一个参与者。

 

最后祝各位同学新年快乐!希望可以在新的一年中见到大家在这个领域活跃的身影,一同为下一代互联网下一代区块链的建设添砖加瓦。


扫码关注公众号,回复“1”加入开发者社群



更多阅读:

第三届Substrate Hackathon 挑战赛完整复盘

Subdev 讨论 | 同学们设计的加密猫进阶到模块V4了

Subdev 分享 | 手把手:用RUST语言开发RSA算法模拟


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存