区块链技术开发路线
2019-11-30

〇、背景陈述:  

  已经对区块链领域的学习研究了一段时间。总体来说,前期主要是围绕bitcoin架构及其源码学习的,但对这个领域的技术开发还是不太熟悉。为了使自己对区块链领域有一个系统的学习和技术锤炼,特此总结了如下技术开发路线,来逐渐充实自己的区块链开发知识体系。

  这篇博文主要是对之后的技术开发路线做一个清晰的规划。

  对于一个古典互联网人如何进入区块链呢?我觉得比较现实的有两种姿势。  

  

  一种是信仰,说实话,当前阶段不炒币来做区块链特别是公链的人,那真的需要信仰啊,公链要技术上能投入实用,要把生态建立起来需要很长的过程,能耐住性子,经历创业九死一生,那不是信仰又是什么呢?这样的人值得尊敬,因为他们推动了真正的技术进步。

  另一种是实用,深圳前不久开出了第一张基于区块链的发票,现在要想做联盟链相关 的项目,其实真的机会很多,技术也相对的成熟,做做项目养家糊口很实际啊,这里区块链跟其它技术没什么两样。

  作为一名比较务实的技术开发人员,为了谋生而将主要精力放在Hyperledger Fabric(联盟链)的开发上,是一个比较稳健的选择。但是对于区块链的鼻祖——比特币的学习,我认为又是不可或缺的。比特币相当于公链,相对于以太坊来说,比特币是属于比较早期的区块链。我们学习比特币主要在于对区块链的经典技术原理有一个较全面的认识和积累。

  而之所以不选择以太坊,主要是我认为以太坊作为一个系统比较复杂的公链系统,其技术仍旧不太稳定、仍处于不断完善之中。Solidity编写智能合约,其底层也存在很多漏洞,所以学习该技术还是存在一些风险的。不过感兴趣的开发人员,可以学习下以太坊技术的原理及相关架构,也会受益良多。

  所以下边,我针对公链-比特币联盟链-Hyperledger Fabric提出自己的技术学习路线。

一、公链-比特币的学习:

学习目标:主要针对比特币的相关技术进行学习研究,对其原理及实现方法全面掌握

1. 深入学习比特币的白皮书。对其技术及原理有全面的了解,并针对其中提到的技术进行深入学习。

2. 搭建测试网络,对比特币系统进行测试。

3. 比特币源码学习。比特币源码有多个版本,开始自己看了一部分的C版,但是后来的Hyperledger Fabric要用到GO语言写链码(智能合约)。所以准备之后学习GO版本源码。对其技术架构及技术实现,进行深入学习,并完全掌握!

  完成以上目标,我觉得对于经典的区块链系统学习已经够了。

二、联盟链-Hyperledger Fabric学习:

学习目标:掌握其技术架构和对核心模块的理解;掌握智能合约编写;对官方提供的学习实例进行深入学习并掌握;掌握应用的技术开发;其中用到的工具语言最好能够做到精通!

1.工具语言的学习:

  1)go语言,Fabric、docker等多是基于go语言开发。Bitcoin现在也有了go语言版源码。所以掌握该语言,能够帮助我们阅读这些技术的源码,还可以帮助我们进行智能合约开发。GO语言有简洁,快速,安全,并行,有趣,开源,支持泛型编程,内存管理,数组安全,编译速等特点。有点语言基础,很容易掌握。

  我用了一天时间对该语言的基本语言进行了快速学习,基本上就对这门语言有了了解。之后肯定是需要深入学习的,我们可以借助Github上一些技术文档进行学习。争取精通这门语言。

  2)Java、Node.js、Python等。这些语言主要是在开发应用程序时,对chaincode(链码/智能合约)进行调用,而且都有与之匹配的SDK。所以语言可以自己选择。因为很多应用是基于Web端的,所以Node.js用得较多。当然如果仅仅做测试及学习,并不是完全为了商业项目,已掌握的Python与Java也是不错的选择。

2.Hyperledger架构及核心模块学习:

  1)仔细阅读白皮书。了解其技术原理;其中的关键术语也要深入理解掌握。

  2)对Fabric核心模块进行学习。

  3)核心源码学习。这是我们技术实现提升、能够深入理解其技术实现的关键。

3.技术开发学习:

  1)chaincode学习。学习编写智能合约。多读源码、多练习。

  2)应用开发。主要是通过自己其他语言工具调用智能合约进行技术开发。Fabric模块的Grpc接口可以被任何语言调用。但是如果一切从底层开始实现的话,这样的开发效率是非常低的。目前 Hyperledger项目组已提供的基于Nodejs、Java、Go、Python这四种语言的SDK,这些SDK对Fabric常用操作进行了封装,已大大简化了开发工作。

4.相关项目源码学习:

  已经学会了上述开发流程,我们最好在Github上寻找些开源项目进行学习并提升。

三、公链-以太坊的学习:

学习目标:这部分的学习,我认为对于我们想从事联盟链开发的技术人员来说,主要是为了了解其技术架构、对其核心模块有一个大概了解,以助于我们对于整个区块链技术的了解。我觉得做到这个地步就够了。

 


【时间仓促,如有错误,欢迎指正! ||   欢迎一起学习交流, 请在评论区留言!

【本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。】

【转载请联系博主,同意后务必注明出处:http://www.cnblogs.com/X-knight/