如何学习区块链技术
April 30, 2020
Blockchain
学习区块链技术和任何其它任何技术一样,没有捷径。
我会从两个角度来阐述,
一个是从我个人的经历出发,让大家了解一个普通的开发者怎么融入到区块链的技术领域中;
另一个是我自己的学习方法分享。
角度一:经历
首先要意识到,在学习过程中,你会产生无数次想否定区块链的想法,这很正常,先把学习这个技术的想法放下,做一些你觉得更有意义的工作,在日常工作中再不断来感受区块链的意义。
我个人12年通过Hacker News第一次听到了比特币的名字,由于网络原因,只是下载了客户端软件,无法同步网络,这是我第一次放下。
16年被朋友说服去研究以太坊,我下载了Mist 客户端(它是以太坊智能合约的开发环境和工具),我根据官网的教程写了一些代码,说实话体验非常差,要知道那时候我正在使用Rails这样优秀的开发框架。这是我第二次放下。
然而我却发现了去中心技术这样一个新大陆,没有区块链,没有币,只有“干净”的技术,这些技术包括但不局限于存储相关的IPFS、DAT,社交领域的ScuttleButt、Solid。说实话,这是我第一次感觉到技术的魅力,我几乎每晚都保持着高压的学习,因为白天有日常的工作,只能靠晚上挤出来时间,熬了数不清的夜,辗转反侧,来思考某个技术的特点和意义。
17年底老婆怀孕了,我很开心,但是由于孕吐比较严重,我只能肩负起做饭的重任(做的不好吃,到后面只能买孕妇餐)。我晚上的时间也没有了。这是第三次放下,前面说的各种去中心技术也都放下了。但是我不后悔,因为第二年我有了可爱的孩子。
说了这么多放下,**但是我真的能放下吗?**你一旦了解了去中心的技术,就很难完全的放下,它会充斥在你生活和工作的方面,每一天都在感受它。
19年,宝宝一岁了,我决定做出改变,去追求我认为当前最有意义的事情,毫无疑问就是我们说的以区块链为代表去中心技术。机缘巧合,了解到了Parity 这个区块链领域的技术先行者,获取了一个兼职的机会,到20年又变为全职,这中间遇到很多挑战,这里不再啰嗦。
你可以看到,对于热爱某项技术的人,放弃它其实是非常难的,区块链也是一样。可能有的人会好奇,为什么有那么多人热爱它?我无法完全地了解别人的想法,但从我的经历来看,区块链带给我的不只是技术边界的拓展,更多的是一种或者多种不同的思维方式,让我接触到不同的人,了解了不同地区的文化,更清楚的知道了自己的方向和责任。就和看同一本书,每个人都有自己的体会,我建议大家开始去读,去看别人的体会,自己也多总结。
角度二:方法
每个人的学习方法不同,这里分享我对区块链技术的学习方法,希望能给大家带来帮助。对我个人比较有效的学习方法,是由应用层到底层。我不会一开始就去读比特币或者以太坊的白皮书,或者《Master Bitcoin》这类的书。其实我在学习过程中都有下载,但真的读进去、看明白也是最近一两年才发生的。那对于技术人员或者有一定学习能力的非技术人员,我建议的学习路径是:
- 浏览不同的区块链项目的网站,产生一个基本的认识。
这么多不同的项目我应该浏览哪一个呢?从比特币、以太坊开始,然后发现不同的其它项目,和相关的查找方法,由于区块链领域良莠不齐,这里不再放过多的细节。个人建议你应该最少看10个不同的国外顶尖项目。如果还需要讨论更细节的内容,可以去添加我的公众号。
- 对不同的项目有了初步的认识之后,有些爱动手的人应该就要开始折腾了。折腾什么东西呢?
搭建区块链应用的节点,它会让你对去中心的网络有更深入的了解,也会让你对项目背后的代码产生最基本的认识。
使用钱包工具,它可以让你对去中心的身份系统、密码学产生基本的了解。
使用区块浏览应用,通过它你可以查询账户或者交易的状态。
- 折腾了上面这些工具之后,我相信你已经了解了某个项目最基本的运行环境和相关的生态,这个时候我相信你已经加入了对应的开发者社区,他们通常活跃在各个聊天工具和论坛上。你会开始和不同的人聊天,聊各自对技术的理解,有哪些还可以完善的地方,你可以提供哪方面的技术,比如UI,前端,服务器端等等。接着,你就可以进行一些比较深入的开发,比如:
学习项目提供的API文档,和区块链节点进行交互,比如创建账户、发送交易等等。
编写自定义的应用,比如钱包、区块浏览应用。可能不存在这样一个需求,即写一个完善的与区块链交互的应用,但最好还是能通过动手,进而对这些工具的代码有大致的理解。
如果仅仅是钱包和区块浏览这样简单的去中心应用,其实给人们带来不了多少改变。将现实生活的问题深入理解,并转化成技术解决方案,需要非常多的领域知识,也只有这样的人才能将区块链技术带入寻常百姓家。已经有很多的区块链应用通过引入智能合约和应用链开发框架,来帮助开发者实现更加复杂的应用场景,满足各种灵活的需求。我建议的两个值得学习的相关技术为,
以太坊Solidity智能合约编程
Substrate区块链开发框架
这里我们不去过多地介绍两者的区别,如果感兴趣,可以订阅下面的知乎专栏了解更多的技术内容。
如果你不满足于解决生活中的问题,还想要探索代码背后的奥秘,我想你已经迫不及待地想了解这个区块链应用的底层协议和实现。下载源代码,打开项目的白皮书,比特币白皮书(迄今为止应该是最精简的区块链技术教程),然后就开始和代码硬钢吧。这个时候组成一个兴趣小队,互相交流分享,会事半功倍。别忘了你还可以向官方的技术大牛请教,这些人通常都很乐于讨论技术问题。这个过程可能会花费比较多的时间,如果想深入底层技术,这个过程是跳不过去的。同时还要积极地去找bug、提issue、提PR,将学习结果进一步的展现出来。当你对协议和代码有了一定的理解后,你通常会想做这么几件事:
用自己最擅长的语言重写这个区块链应用的协议。
选择某一个功能模块,长期贡献代码。
引入新的技术,充实原有的区块链应用,甚至开发一个新的区块链应用。这些技术包括但不局限于:新的共识算法、零知识证明、形式化验证、分片和跨链等等。
更多我没有触及过的领域…
总结
以上仅是我个人的学习经历和方法,不作为标准,也不一定正确,只希望对大家能有一点帮助。
写在最后,我相信很多人都了解这个领域有很多的噪音,区块链这个词一度也被认为是只有投机者和骗子才会使用。我想说的是,技术解决不了人性的黑暗面,但是我们可以选择以什么样的角度来看待这个世界。
欢迎订阅公众号:守护进程