区块链开发进阶路线

过去的2016年,是比特币和区块链技术快速发展的一年。比特币价格持续上涨,不可谓不疯狂。随着有意无意的炒作,区块链这个概念(技术)也越来越被熟知,越来越多的程序员也在关注这个新兴技术领域,但苦于资料太少,不知如何下手,只能在岸边观望。小弟不才,在区块链技术领域也摸爬滚打了大半年时间,在这里我把我认为需要了解的知识总结出来供大家参考,不足之处请多包涵。

党派之争

别以为区块链背后是一片和谐大繁荣,猿世界的鄙视链依旧存在:比特币开发者看不起其他非比特币开发者,做公有链的看不起做私有链的,大家共同鄙视山寨币程序猿。要我说,大家都是出来混口饭吃的,和谐才是王道!

既然有门户之争,外来者入坑的时候肯定选择艰难。我大致把方向分为了三个:比特币、公有链、私有链(联盟链)。至于为何没有山寨币?(嗯?你说什么?我没听见!)

学习资料不在于多,够用就行

比特币

比特币从本质来说,是区块链的一个应用而已。但由于是区块链的第一个应用,并且区块链是依托于比特币才步入我们的视野,所以说有相当多的用户群体。到目前为止,也是区块链最成功的应用。

学习比特币,不一定要拥有比特币,不一定要成为比特币网络中的一个全节点。这是大部分初学者容易犯的毛病。想当初,入坑同步区块耗费了大量激情,所以才有此忠告。虽然不建议这么做,但是如果想去尝试也是可以的,只要你有money、有带宽、有磁盘、有时间。

现阶段学习比特币,并不是让大家学习比特币的源代码,然后去做出一个跟比特币一样的数字货币。如果你的目的是这样的,请出门左转,山寨币团队需要你这样的烈士。

比特币的学习主要分为 交易、钱包、合约、挖矿 等方面,了解了这四方面,我相信基本上你就已经入门了,就知道怎么继续去学习了。

参考:Bitcoin Developer Documentation

公有链

其实,比特币也是公有链的一种,但由于他太特殊了,我们单独把它归为一类。

公有链是对所有人开放的,任何人都可以参与的一种区块链平台。目前公有链的代表就是以太坊。以太坊是一个去中心化的智能合约运行平台,运行在其上的应用完全不用担心宕机,审查,欺骗或第三方干预。这是官方的介绍,但是有句古话:不作死就不会死,在过去的大半年时间里,以太坊不仅作死,而且连续作死。最近ETH价格也持续下跌,以太坊最终能走向哪里,我无力去猜测。但是基于以太坊开发智能合约应用还应该是未来一段时间内的唯一广泛的选择。

基于以太坊开发智能合约应用并不是使用现有的任何一种编程语言,以太坊团队自己开发了一种图灵完备的编程语言Solidity,用于编写智能合约。这无疑增加了学习难度,但是只要你有编程基础,只要你有意愿使用以太坊,学习Solidity应该不是很大的问题。

参考:
以太坊官网
Solidity编程指南

私有链(联盟链)

私有链是指在团体内部或共同利益团体之间为了特定需求而建立的区块链网络,因为不对外公开,所以被很多公有链拥护者鄙视,认为私有链不是区块链,只不过是一个分布式的账本。孰对孰错不追究,各人有各人的看法。

现在最有潜力的私有链开源平台无疑是由Linux基金会发起,由IBM带领孵化的超级账本项目。小弟的本职工作就是基于Hyperledger进行区块链项目开发,因此对于Hyperledger Fabric的了解要相对多一些。不同于比特币和以太坊,超级账本现在还是个非常早期,非常不成熟的开源项目,现阶段的稳定版本V0.6离能用于商业活动还有相当遥远的距离,但是第一个正式版本正在稳定持续的开发中,马上就会发布,并且拥有了很多令人欣喜的特性,值得期待。

现阶段学习Hyperledger Fabric有两个方向,一是学习chaincode,Hyperledger区块链上的智能合约。相较于以太坊的Solidity,chaincode相当简单,只有三个接口方法,基于这三个方法,根据业务逻辑可以千变万化。而且,可喜的是我们不用学习新的编程语言,chaincode拥有Go、Java等版本,只要你会这几门语言,编写chaincode就是信手拈来。

参考
智能合约-chaincode

另一方向当然是钻研Fabric的源码了,从最开始看一个开源项目从零到成熟不是一件令人欣喜的事情么?现在项目处于孵化期,模块还不是很多,只要你会go语言(不会也不用担心,愿意学,一下午时间就足够入门了),就可以去感受区块链的魅力了。看懂了源代码,对你认识区块链,认识超级账本有着相当大的帮助。

参考
Hyperledger – Blockchain Technologies For Business
Hyperledger Fabric

总结

现在区块链创业公司如雨后春笋般出现,各种开源项目也层出不穷。我们不能对每个项目都了解,但是想要入门,了解上面我提到的三个平台就可以了。欢迎有更多的开发人员入坑!

在区块链的世界里,有一些其他工程领域不经常使用的数据结构,算法,协议。理解这些知识对理解区块链有着积极性(或者说决定性)的作用:

1. 默克尔树(Merkel Tree),是一种二叉树,由一个根节点、一组中间节点和一组叶节点组成。最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。默克尔树的特点是,底层数据的任何变动,都会传递到其父亲节点,一直到树根。一般应用于快速比较大量数据,快速定位修改,和零知识证明。

参考:Merkel Tree

    原文作者:自游
    原文地址: https://zhuanlan.zhihu.com/p/25713839
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞