# 如何学习区块链

By [whisperd](https://paragraph.com/@whisperd) · 2021-11-11

---

学习区块链技术和任何其它任何技术一样，**没有捷径**。

我会从两个角度来阐述，

*   一个是**_从我个人的经历出发_**，让大家了解一个普通的开发者怎么融入到区块链的技术领域中；
    
*   另一个是我自己的**_学习方法分享_**。
    

角度一：经历
------

首先要意识到，在学习过程中，**你会产生无数次想否定区块链的想法**，这很正常，先把学习这个技术的想法放下，做一些你觉得更有意义的工作，在日常工作中再不断来感受区块链的意义。

我个人12年通过Hacker News第一次听到了比特币的名字，由于网络原因，只是下载了客户端软件，无法同步网络，这是我第一次放下。

16年被朋友说服去研究以太坊，我下载了Mist 客户端（它是以太坊智能合约的开发环境和工具），我根据官网的教程写了一些代码，**说实话体验非常差**，要知道那时候我正在使用Rails这样优秀的开发框架。这是我第二次放下。

然而我却发现了去中心技术这样一个新大陆，**没有区块链，没有币，只有“干净”的技术**，这些技术包括但不局限于存储相关的IPFS、DAT，社交领域的ScuttleButt、Solid。说实话，这是我第一次感觉到技术的魅力，我几乎每晚都保持着高压的学习，因为白天有日常的工作，只能靠晚上挤出来时间，熬了数不清的夜，辗转反侧，来思考某个技术的特点和意义。

17年底老婆怀孕了，我很开心，但是由于孕吐比较严重，我只能肩负起做饭的重任（做的不好吃，到后面只能买孕妇餐）。我晚上的时间也没有了。这是第三次放下，前面说的各种去中心技术也都放下了。但是我不后悔，因为第二年我有了可爱的孩子。

说了这么多放下，\*\*但是我真的能放下吗？\*\*你一旦了解了去中心的技术，就很难完全的放下，它会充斥在你生活和工作的方面，每一天都在感受它。

19年，宝宝一岁了，我决定做出改变，去追求我认为当前最有意义的事情，毫无疑问就是我们说的以区块链为代表去中心技术。机缘巧合，了解到了[Parity](https://www.parity.io/) 这个区块链领域的技术先行者，获取了一个兼职的机会，到20年又变为全职，这中间遇到很多挑战，这里不再啰嗦。

你可以看到，**对于热爱某项技术的人，放弃它其实是非常难的**，区块链也是一样。可能有的人会好奇，为什么有那么多人热爱它？我无法完全地了解别人的想法，但从我的经历来看，区块链带给我的不只是技术边界的拓展，更多的是一种或者多种不同的思维方式，让我接触到不同的人，了解了不同地区的文化，更清楚的知道了自己的方向和责任。就和看同一本书，每个人都有自己的体会，我建议大家开始去读，去看别人的体会，自己也多总结。

角度二：方法
------

每个人的学习方法不同，这里分享我对区块链技术的学习方法，希望能给大家带来帮助。对我个人比较有效的学习方法，是**由应用层到底层**。我不会一开始就去读比特币或者以太坊的白皮书，或者《Master Bitcoin》这类的书。其实我在学习过程中都有下载，但真的读进去、看明白也是最近一两年才发生的。那对于技术人员或者有一定学习能力的非技术人员，我建议的学习路径是：

1.  **浏览不同的区块链项目的网站，产生一个基本的认识。**
    

这么多不同的项目我应该浏览哪一个呢？从比特币、以太坊开始，然后发现不同的其它项目，和相关的查找方法，由于区块链领域良莠不齐，这里不再放过多的细节。个人建议你应该最少看10个不同的**国外顶尖项目**。如果还需要讨论更细节的内容，可以去添加我的公众号。

1.  对不同的项目有了初步的认识之后，有些爱动手的人应该就要开始折腾了。折腾什么东西呢？
    

*   **搭建区块链应用的节点**，它会让你对去中心的网络有更深入的了解，也会让你对项目背后的代码产生最基本的认识。
    
*   **使用钱包工具**，它可以让你对去中心的身份系统、密码学产生基本的了解。
    
*   **使用区块浏览应用**，通过它你可以查询账户或者交易的状态。
    

1.  折腾了上面这些工具之后，我相信你已经了解了某个项目最基本的运行环境和相关的生态，这个时候我相信你已经加入了对应的开发者社区，他们通常活跃在各个聊天工具和论坛上。你会开始和不同的人聊天，聊各自对技术的理解，有哪些还可以完善的地方，你可以提供哪方面的技术，比如UI，前端，服务器端等等。接着，你就可以进行一些比较深入的开发，比如：
    

*   **学习项目提供的API文档，和区块链节点进行交互**，比如创建账户、发送交易等等。
    
*   **编写自定义的应用，比如钱包、区块浏览应用**。可能不存在这样一个需求，即写一个完善的与区块链交互的应用，但最好还是能通过动手，进而对这些工具的代码有大致的理解。
    

1.  如果仅仅是钱包和区块浏览这样简单的去中心应用，其实给人们带来不了多少改变。将现实生活的问题深入理解，并转化成技术解决方案，需要非常多的领域知识，也只有这样的人才能将区块链技术带入寻常百姓家。已经有很多的区块链应用通过引入**智能合约和应用链开发框架**，来帮助开发者实现更加复杂的应用场景，满足各种灵活的需求。我建议的两个值得学习的相关技术为，
    
    *   以太坊Solidity智能合约编程
        
    *   Substrate区块链开发框架
        
    
    这里我们不去过多地介绍两者的区别，如果感兴趣，可以订阅下面的知乎专栏了解更多的技术内容。
    
    [Substrate区块链开发](https://zhuanlan.zhihu.com/substrate)
    
2.  如果你不满足于解决生活中的问题，还想要探索代码背后的奥秘，我想你已经迫不及待地想了解这个**区块链应用的底层协议和实现**。下载源代码，打开项目的白皮书，比特币白皮书（迄今为止应该是最精简的区块链技术教程），然后就开始和代码硬钢吧。这个时候组成一个兴趣小队，**互相交流分享，会事半功倍**。别忘了你还可以向官方的技术大牛请教，这些人通常都很乐于讨论技术问题。这个过程可能会花费比较多的时间，如果想深入底层技术，这个过程是跳不过去的。同时还要积极地去找bug、提issue、提PR，将学习结果进一步的展现出来。当你对协议和代码有了一定的理解后，你通常会想做这么几件事：
    

*   用自己最擅长的语言重写这个区块链应用的协议。
    
*   选择某一个功能模块，长期贡献代码。
    
*   引入新的技术，充实原有的区块链应用，甚至开发一个新的区块链应用。这些技术包括但不局限于：新的共识算法、零知识证明、形式化验证、分片和跨链等等。
    
*   更多我没有触及过的领域...
    

总结
--

以上仅是我个人的学习经历和方法，不作为标准，也不一定正确，只希望对大家能有一点帮助。

写在最后，我相信很多人都了解这个领域有很多的噪音，区块链这个词一度也被认为是只有投机者和骗子才会使用。我想说的是，**技术解决不了人性的黑暗面，但是我们可以选择以什么样的角度来看待这个世界**。

欢迎订阅公众号：**守护进程**

---

*Originally published on [whisperd](https://paragraph.com/@whisperd/iHUnXGLakOoUXCkPPh8e)*
