《CKB 编程体验课》第一期正式结束了!这是一堂由黑曜石实验室,以及 Nervos 和 Nervos Community 共同打造的编程体验课,也是 首次在地表上出现的 CKB 编程系列课程 。
除了黑曜石实验室的 Phil 作为老师之外,我们也邀请了五位来自社区的资深成员 Harry 、 Shooter 、 一休哥 、 冯力全 、 王业伟 作为我们的课程助教,和 Phil 一起为报名的同学们答疑解惑。
CKB 编程体验课的诞生
过去我们常常说在 CKB 上编程有什么样的特点,以及 CKB 的编程模型如何地灵活,但无法用一个简单通用的界面来演示,而这一切随着 Nervos Grants 项目中的黑曜石实验室(Obsidain Labs)为 Nervos 专门打造的 IDE: CKB Studio 的诞生而有了改变。CKB Studio 让过去很多需要自己搭建的编程环境集成化,让开发者只需专心在自己的开发逻辑构造等核心的开发内容。
在今年 4 月初,我和史迪仔看到了两个重要的契机,首先是 CKB Studio 已经可以支持 Debug,并且除支持 C 语言外,还支持 JavaScript 这个很多 dApp 开发者会使用的语言,并且支持 sUDT 自定义代币,也就是说有很多的基础功能可以在 CKB Studio 使用了。
这时候我们在想,似乎可以请黑曜石团队给大家一些 Demo 来演示这些功能,于是就发生了下面的对话:
于是,黑曜石实验室和我们便开始安排了这次的课程。并且这一切都是开源的,提供给任何想学习 CKB 编程,想利用 CKB Studio 做开发的朋友们。
超乎预期的报名人数和师资阵容
一开始看到黑曜石实验室的创始人 Phil,也就是我们这次的课程讲师写的课程大纲,大家都非常的激动,因为这确实是长期以来许多关注 CKB 的开发者们都想系统学习的内容:
-
如何去编写 type script 来发币
-
lock script 能够怎样去设定锁定的条件以及怎么被解锁
-
如何引用其他 live cell 的脚本
-
如何使用 JavaScript 在 CKB 上面编程
除了 Phil 之外,我们也请了 Nervos 社区的 五大男团 来作为我们的课程助教,他们基本都是关注或者研究 Nervos 一年以上的资深社区小伙伴,包含来自 Rebase 技术社区,同时也是 Nervos Grants 项目 Synapse 的负责人 Harry 、 Shooter ,币乎 CKB 币吧的吧主 一休哥 ,来自 SNZ 的底层研发 冯力全 ,以及上海交通大学区块链协会的会长 王业伟 。
待课程的内容和老师确定以后,我们便迫不及待地和社区小伙伴们分享这个消息,期间很多 CKB 的技术社区朋友和媒体朋友们都为我们奔走相告,最终将近 70 位学员报名了本次课程,学员中不乏安全审计公司的大佬、技术社区的发起人以及资深的工程师。
最实用的「CKB编程体验」课程内容
这个课程最一开始的目的,就是想让大家知道,能怎么用 CKB Studio 这个工具来体验 CKB 编程的开发,也因此这也是个从最基础开始做起,然后循序渐进的课程:
Lesson 1:CKB Studio 的安装和使用
- 以及要怎么在 CKB Studio 上编写合约和构造交易。
Lesson 2:如何在 CKB 上发币(sUDT)
- 以及怎么去做 sUDT 的转帐和合约内容编写。通过发币大家也会练习到 type script 能够怎么的去编写智能合约和影响 cell 的属性。
Lesson 3:发出一笔任意大小金额的 CKB 甚至是 UDT
- 如何编写 lock script ,课程的合约范例是 Anyone-can-pay,在这里 lock script 的效用展现的一览无疑,通过这堂课会学到如何用 lock script 的编写来让资产的所有权有条件的转移。
Lesson 4:哪些工具可以搭配 CKB Studio 来编写 JavaScript 合约
- 最丰富最有趣的一堂课,比起前两堂课都是 C 写的合约,其实熟悉 JavaScript 的朋友可能更多。因此这堂课 Phil 老师带大家了解有哪些工具可以搭配 CKB Studio 来编写 JavaScript 合约,甚至在这堂课我们还发现了,可能在 CKB 上可以用 HTLC 合约和 Open Transaction 来实现更高效的闪电网络。
CKB 编程体验课的课程大纲
最 Real 的 CKB 编程体验课:全部现场直播、实时更新!
作为线上实时直播的课程,每堂课上的合约执行都由 Phil 现场从 0 开始向大家 Demo。只要跟着 Phil 的步骤,基本可以在自己的电脑上,实现出任何课堂上演示的合约。另外所有学员在课堂上提出的问题,几乎都能即刻给予回馈和解答,绝对非常地 Real 。
不得不说,Phil 讲课非常循循善诱,每堂课他都会先演示一遍操作的步骤,让大家知道当天的内容如何执行,以及可以发挥什么样的功效,并且在 Demo 结束之后配合代码讲解。比如在 sUDT 的课上,Phil 会先讲怎么样来使用 type script 来发币,然后再讲,之所以能这样运作,是因为背后的代码是如何运行的,每一行的代码代表什么意思、什么条件。
Phil 老师在课堂上讲解代码的画面
另外还必须点赞的一个地方是,Phil 和黑曜石团队几乎实时在为课程内容更新 CKB Studio,因此我们几乎随时都可以在课前发现了 CKB Studio 又多了一些新功能,让人每次上课前都在期待会不会又有什么样的「惊喜」出现。
会不会有一些应用从本期课程里诞生呢?
通过这次体验课,很多人对 CKB 编程在图形化的界面下有了更清晰的认识,甚至让许多人对于 CKB 的应用有了更多的想象。同时,因为课程结束后随时可回放,因此很容易有够跟着步骤操作并理解 CKB 的设计,如果听课时使用两个屏幕,甚至可以同步和 Phil 完成许多操作,在第二堂教大家如何发行 sUDT 时,就有小伙伴和 Phil 几乎同时发行了 sUDT 代币。
整期课程,讨论氛围异常浓厚。课堂内外,总会看到连绵不断的问题。此时,无论老师还是助教、学员,甚至连 CKB 的核心开发者也会在群里和大家一起讨论这些问题,并分享许多关于 CKB 的初始设计原理。
此外,我们也看到了一些动作迅速的学员,已经开始进行一些深入的CKB 技术讨论,甚至有人已经在想有什么样的应用能够在 CKB 上实现(期待地搓手手~)。例如有小伙伴提出把内容通证化或结合时事的应用,有的提出如何将 Coinbase 的预言机导入 Nervos CKB 中,这些都是在对 CKB 的编程有了基础之后产生的脑洞,搞不好还真的有机会被实现。
除此之外,在课程期间陆续产生了许多有趣的关于 CKB 的 idea,或者关于 CKB 的教程文章。比如:利用 cell 去实现独一无二的 CKB 矿机:
过去大家往往都是在想,如何利用 CKB 实现 Dapp ,这个 idea 也不例外。但这个想法特别的是,他把 CKB 编程特性结合了一个在 Nervos 生态上极为重要的硬件—— 矿机 。
因为在 cell 的脚本编程中,type script 的特性能够让我们生成在独一无二的 cell,而这个 cell 如果能与矿机的生产结合,那么可能矿机就能够不受层层的中间商赚取差价,甚至还可以避免因为资讯不透明而买到假矿机。虽然这个想法一定离实际的生产还有一大段路,但确实是一个非常有意思的原创想法,因为他利用了 CKB 的特性提出了一个能解决棘手问题的方法,而且这个帖子也收到了很多社区的回响,包括 Nervos 的首席架构师 Jan 以及 Nervos 的 Grants 项目 ckb.pw 发起人知县,在这篇文章中都有非常深度的交流和对话。欢迎大家一起来参与讨论。
另外,还有许多的教程文章在此诞生。例如空乱木学员的文章《CKB Transaction交易数据分析》 ,告诉大家怎么去阅读和分析 CKB 的交易数据,这篇文章在搭配了 CKB Studio 的图形化界面后,就可以让大家更了解 CKB 的交易里面什么样的字段代表什么意思;另外,在 talk 上还有一篇文章 ,告诉大家如何利用cell deps 的功能,调用别人已经写好的合约,如此一来自己就不需要再从头构造合约,因此链上所有既成的合约都是大家可以调用的 Common Knowledge。
另外,在此期间来自以色列的社区小伙伴 Jonathon 在听了 Phil 的课程后,也写了一篇怎么发行自定义资产 sUDT 的教学文章,Jonathan 表示这篇文章他尽量写的让十岁的小孩都可以轻松的按照这篇教程来发行 sUDT,或许你也可以按照他的步骤来试试。
课程结束后我们一直在想,为什么这段期间内能产生这么多的内容和讨论?其实关键的原因,是因为 CKB Studio 提供了一个可视化的界面,来作为大家想象 CKB 应用的重要载体,透过这个工具,不仅可以很具象地理解 CKB,并且便于了解 cell 的架构,并在此基础上构建自己的想法。目前本编程课程已经在 B 站、YouTube 等视频平台开源,方便对于在 CKB 上开发有兴趣的小伙伴们学习和参考。
- B 站:【CKB 编程体验课】第一讲:CKB Studio 基本功能介绍_哔哩哔哩_bilibili
- YouTube:https://www.youtube.com/watch?v=Y5JqpqwQtiA
相信随着开发者工具的逐渐增多,关于 CKB 的应用或文章也会持续地涌现。同时在 Nervos Grants 和 CK Labs 两大计划的加持之下,Nervos 的开发者社区也一定会越来越壮大,真诚召唤每一位对 Nervos 有兴趣的开发伙伴!