文章阅读页通栏

区块链开发技术综述

来源: CSDN 作者:
作者:孟岩,IBM大中华区高级经理,曾负责IBM智慧地球、智慧城市、认知计算等重大技术战略在中国的推广和落地。一年前开始关注区块链技术及其行业应......
作者:孟岩,IBM大中华区高级经理,曾负责IBM智慧地球、智慧城市、认知计算等重大技术战略在中国的推广和落地。一年前开始关注区块链技术及其行业应用前景,对比特币、以太坊、超级总账和BigchainDB四个主要区块链技术流派都进行过考察和研究,形成了在中国应用区块链技术的观点和思路。 
如果你关注区块链技术长达几个月,可能也会跟我一样,对没完没了的原理介绍、前景描绘、行业探讨和链圈新闻产生了审美疲劳。没错,区块链必须与行?#21040;?#23494;结合,它也有颠覆人类协作方式之洪荒巨力,但是说到底它还是一个技术活,是要?#21019;?#30721;的,在咖啡厅里整天坐而论道是造?#24576;?#37329;链子来的。技术人员的逻辑简单直接,这个事情有没有前(钱)途?有,那怎么干?

本文试?#32423;?#21306;块链有关技术流派和主流平台进行一个概览,作为学习区块链技术体系的导览,意在抛砖引玉,促进区块链开发社区的讨论与共识。

区块链技术的流派

未战先?#26412;郑?#20320;想投入区块链开发这个领域,至少先要搞清楚现在有?#30007;?#29609;家,各自的主张和实力如何。

划分区块链技术流派并无一定之规,据我所见,或可有以下四种方式:

第一?#21069;湊战?#28857;准入规则,划分为公有链、私有链和联盟链。公有链的代表自然是比特币和以太坊,私有链则以R3 Corda声名最盛,联盟链的代表作品是Hyperledger名下的Fabric。公有链注重匿名性与去中心化,而私有链及联盟链注重高效率,而?#19968;?#24448;往设置了准入门槛。公有链、私有链与联盟链之间的这些不同都在技术中有所体现,?#28909;?#31169;有链和联盟链假设节点数目不大,可以采用PBFT算法来形成共识。而公有链假设有大量?#20063;?#26029;动态变化的节点网络,用PBFT效率太低,只能采用类似抽彩票的算法来确定意见领袖。这就意味着,私有链与联盟链很难变成公有链,而用公有链来作联盟链或私有链虽然容易,却也并非即插即用。此种差异,学者不可不察。

第二?#21069;?#29031;共享目标,划分为共享账本和共享状态机两派。比特币是典型的共享账本,而Chain和BigchainDB也应属此类,这几个区块链系统在各个节点之间共享一本总账,因此对接金融应用比?#25103;?#20415;。另一大类区块链系统中,各个节点所共享的是可完成图灵完备计算的状态机,如以太坊、Fabric,它们都通过执行智能合?#32423;谋?#20849;享状态机状态,进而达成种种复杂功能。

第三?#21069;?#29031;梅兰妮 · 斯旺所描述的代际演进,将区块链系统分为1.0、2.0和3.0三代。其中1.0支撑去中心化交易和支付系统,2.0通过智能合约支撑行业应用,3.0支撑去中心化的社会体系。比特币和Chain应属于区块链1.0系统,而以太坊和Fabric是区块链2.0系统,目前?#24418;?#25104;功的区块链3.0系统出现,?#24576;?#21151;的尝试倒是有那么一个,就是著名的The DAO。

第四?#21069;?#29031;核心数据结构,分为区块链?#22836;?#24067;式总账两派。区块链这一派在系统中真的实现了一个区块的链作为核心数据结构,而分布式总账这一派,只是吸取了区块链的精神,并没有真用一条区块链作为核心数据结构,或者虽然暂时用了,但声明说吾项庄舞区块链,意在分布式总账耳,若假以?#27604;眨?#22240;?#23548;?#20250;,未尝不可取而代之也。

主流区块链技术平台

了解流派划分,仍是只能用来指点江山,吹牛论道,要动手,总要有个切入点。区块链货币据说已经有上千个了,但值得关注的技术平台大概只有数十个,而如果要进入区块链开发领域,打下一个?#27809;?#30784;,练出一身好功夫,捞到几个好offer,则值得深入研究学习的平台,屈指可数。

首先?#27604;?#26159;比特币。比特币作为区块链的第一个也是目前为止最成功、最重要的样板工程,已经上线运行了八年多,本身没有发生任何严重的安全和运维事故,其稳定与强悍堪称当代软件系统典范。比特币Bitcoin Core是一个代码质量高、文档?#24049;?#30340;开源软件,从学习区块链原理、掌握核心技术的角度来说,Bitcoin Core是最佳切入点,能够学到原汁原味的区块链技术。?#27604;唬珺itcoin Core是用C++写的,而且用了一些C++11和Boost库的机?#30130;?#23545;学习者的C++水平提出了较高的要求。

学习比特币平台开发还有一个优?#30130;?#23601;是可以对接?#27604;?#30340;比特币技术社区。目前围绕比特币进行改进和提升的人很多,人多力量就大,诸如隔离验证、闪电网络、侧链等比较新的想法和技术,都率先在比特币社区里落地。?#28909;?#20391;链技术的主要领导者Blockstream是由密码学货币元老Adam Back领衔的,而Blockstream是Bitcoin Core最大的贡献者之一,所以一些有关侧链的技术在比特币社区里讨论最充分。

但比特币作为一个典型的区块链1.0系统,是不是支撑其他类型区块链应用的最佳技术平台,存在很大的争议。另外,也不是所有人都有能力和必要精通区块链底层技术。所以?#38405;?#20123;急于冲到区块链领域里做(quān)事(qián)的人来说,可能更直截了当的学习目标是以太坊和Hyperledger Fabric。

在以太坊上面用Solidity进行的智能合约开发是切入区块链开发最简单的方式,没有之一。以太坊的理想非常宏大,由于配备了强大的图灵完备的智能合约虚拟机,因此可以成为一切区块链项目的母平台,是驮住整个区块链世界的大乌龟。在以太坊上开发一个类似比特币的?#29992;?#36135;币,是一个不折不扣的小目标。一般有经验的开发者在文档指导下,半天到一天即可入门。问题在于,入门以后又如何?#38752;?#20889;Solidity是否就可以包打天下?#31354;?#26159;大大存疑的。我?#19988;部?#20197;反过来说,如果以太坊+Solidity是区块链的终极解决方案,那么怎么还会出现那么多区块链技术门派呢?特别是,以太坊似乎并没有给现实世界中巨型的中心化组织们留下一条活路,这种彻底不妥协的革命态度有可能也成为以太坊推广的?#20064;?/span>

当前以太坊项目的开发进?#20849;?#19981;顺利。一个比较?#24576;?#30340;问题是项目过多,力量分散,导致项目质量参差不齐。但尽管如此,跟其他区块链2.0平台相比,以太坊提供的开发环境是最简单最完善的。初学区块链的人绝对有必要学习以太坊,从而对区块链和智能合约建立起一个最“正宗”的认识。

主流区块链技术平台的第三支就是Fabric,它是Hyperledger的第一个也是最知名的孵化项目。 Fabric最早来自IBM的Open Blockchain项目,到2015年11月,IBM将当?#24065;?#32463;开发完成的44,000行Go语?#28304;?#30721;交给Linux基金会,并入Hyperledger项目之中。在2016年3月一次黑客马拉松中,Blockstream和DAH两家公司将各自的代码并入Open Blockchain,随后改名为Fabric。到目前为止,Fabric与Intel提供的Sawtooth Lake并?#24418;狧yperledger的一级孵化项目,但前者得到的关注远超后者。

从技术角度来说,Fabric思路不错,重点是满足企业商用的需求,?#28909;?#35299;决交易量问题。众所周知,比特币最大的短板是它每秒钟7个交易的上限,完全无法满足现实需要。而Fabric目标是实现每秒钟10万交易,这个量接近刚刚过去的双十一交易量?#24425;?#23792;值,完全可以满足正常条件下的行?#23548;?#24212;用。Fabric用Go语言开发,也提供多种语言的API。特别值得一提的是,Fabric比较充分地运用了容器技术,?#28909;?#20854;智能合约就运行在容器当中。这也是Go语?#28304;?#32473;Fabric的一项福利,因为Go语言静态编译部署的特征很适合开发容器中的程序。

Fabric还有一些特点,?#28909;?#20854;membership服务可以设置节点准入审查,这是典型的联盟链特征。再?#28909;?#20854;共识算法是可定制的。Fabric自带PBFT共识算法实现,但是PBFT的算法效率是O(n2),其中n是节点数量。因此PBFT用在节点数量受限的联盟链里是没有问题的,但用在公有链里效率过低。

Fabric的短板是体?#21040;?#20026;复杂,虽有文档,但缺少经验的开发者学习起来?#20064;?#27604;较大。然而由于其定位清楚,迎合了不少企业的心态,所以已经有多?#19968;?#26500;在基于Fabric秘密研发行?#30340;?#30340;联盟链项目。

小众门派

上述区块链开发的三大主流平台,从活跃?#21462;?#21463;关注和参与人数来说,?#23545;?#36229;过其他平台。但俗?#20843;的?#27450;少年穷,一些眼下还默默无闻的平台也不容忽视。

Hyperledger的另一个一级孵化项目Sawtooth Lake是Intel开发的区块链平台,是一个很少被关注的项目,大概是因为被同在Hyperledger旗下的Fabric给掩盖了,再加上名字拗口,所以很少看到有人讨论它,项目活跃度也不高。但其实Sawtooth Lake是一个挺有想法的区块链项目,设计十分精心。它以数字金融资产管理为目标,整体架构清晰,模块化程度高,因此可定制能力也强。概念上独创了“交易族(transaction family)”概念,而?#19968;?#25903;持PoET和Quorum两种共识机制。当节点数量很多(公有链环?#24120;?#26102;,使用第6代Intel Core CPU所提供的SGX扩展功能提供一种称为时间流逝证明(PoET)的机制来形成共识,这种机制与比特币所采用的PoW同属“抽彩票”式的共识算法,但杜绝了通过ASIC专用硬件“作?#20303;?#30340;可能性,排除了比特?#39029;?#29616;的算力过于集中的隐患,可靠性由Intel CPU硬件来保障,是公有链系统里很有价值的一个共识机制。另一方面,当节点数?#21487;?#19988;受控时,Sawtooth Lake可以采用Quorum共识机?#30130;?#36825;是由Ripple提出并验证的共识机?#30130;?#38750;常适合于联盟链场景,这样Sawtooth Lake就摇身一变成为很好用的联盟链了。

Sawtooth Lake采用Python开发,并提供了Java SDK。由于这两种语言的流行度,?#23548;?#19978;它应该有很大的潜在开发者人群。事实上,R3 CEV曾经测试过Sawtooth Lake并进行了成功的证券交?#36164;?#39564;。当前它主要的问题是受关注度不足,不知Intel是否有足够的耐心和毅力坚持到底。如果Intel战略更明确一些,支持力度更大一些,我建议大家可以对它投以更多的关注。

R3 Corda是一个备受关注的分布式账本项目。 R3是由数十家银行和金融机构支持的区块链企业,融资上亿美元,号称汇集了一票高手,潜心研究符合金融行业需求的分布式账本系统。Corda是R3分布式账本系统中的核心,在千呼万唤之后,于11月30?#29031;?#24335;开源。

Corda采用JetBrain原创的小众语言Kotlin开发,对Java世界敞开大门,这是令人点赞的。此外,Corda更重要的特色是其与现有世界里大银行、大型中心机构的全面妥协、全面合作的姿态,这与以太坊革命无罪、造反有理的形象形?#19978;?#26126;对比。Corda在设计中有多项独特考虑,就是为了对接现有的业务规则。?#28909;?#22312;其他?#36127;?#25152;有区块链平台里,每一个交易对于各节点来说都是可见的,可见才能验证,能验证才谈得上共识,所以交易的全网可见性是顺理成章的。但是现实世界里金融机构之间的交易,只有交易相关方才能看到交易详情,工行与建行的一笔交易,绝无必要让?#34892;?#30475;到。为了对接这个现实,Corda设计了与众不同的机?#30130;?#29306;牲了交易验证的全局可见性,确保只有交易相关方才能看到和验证交易本身。可是另一方面,银行业务是被重度监管的业务,不能因为你用了区块链系统,就把洋洋洒洒的巴塞尔协议晾在一边,监管机构的职能如何体现?#31354;?#26159;其他区块链系统里考虑不多的。而Corda设计了独特的Notary和Oracle节点,为监管体?#21040;?#20837;留下了空间。仔细品味,这些都是给现实世界当中的大机构预留的美差。这些设计上的考虑,无疑大大增强了Corda被现有大型金融机?#20849;?#32435;的机会。不过这一切看上去很美好,但目前Corda的实现基本上是个花架子,设想的种种,不少处于TODO状态。

另外两个值得点名的区块链门派分别是Chain和BigchainDB。前者跟Visa有合作,后者是一个基于RethinkDB开发的分布式账本,两者各有各的思路和特色,也拿到了为数可观的投资,不排除未来能有大的发展。限于篇幅,在这里不展开介绍了。

区块链开发所需具备的技术基础

可以预见,未?#21019;?#20107;区块链开发的主要有三类开发者,一类是开发基于区块链的Web或移动App,这种开发者所需要的技能与今天的Web和移动开发者并无二致,这里就不赘述了。

第二类开发者是开发智能合约的。这类开发者使用类似Solidity这样的智能合约语言,或者直接用Go、Java、Python等语言开发。开发智能合约所要求的语言和算法技术水平不高,什么并发、多线?#35752;?#31867;的东西一般用不到,普通开发者均可胜任。但是智能合约的难点在于业务与安全。本质上智能合约就是?#28304;?#30721;写成的商业合同,必须对于业务有非常清晰的认识,对于安全有?#27966;?#21051;的理解,才能够写出正确的智能合约。因此,我认为未来智能合约的开发者,可能反而是具体应用领域的行业专?#39029;?#36523;居多,因为?#30431;?#20204;掌握Python语言,远?#28909;?#31243;序?#27604;?#29702;解进出口贸易规则或者商业?#26412;?#19994;务要容易得多。

第三类开发者,就是区块链核心应用系统和核心平台的开发者。这部分人?#27604;?#24517;须是技术高手,?#32874;?#22312;通俗的说法,得是后端专家。从语言上讲,C++、Java、Python、Go、JavaScript都有可能要触及。从基础知识来说,要求对密码学、分布式系统、网络编程、系统架构和部署都有相当程度的理解和?#23548;?#32463;验。这种开发者显然将是区块链技术浪潮当中的弄潮儿,也将是最大的受益者之一。

特别要点一下密码学。密码学是大多数开发人员的短板,但若要在区块链核心技术领域搞出能?#33618;?#21387;竞品的创新点,密码学是最有可能出成果的地方。不用说搞出什么密码学突?#30130;?#23601;是将密码学现有成果充分运用在区块链里,都可能会搞出一些逆天的创新来。?#28909;?#29992;零知识证明协议(zero-knowledge proof)构造高度匿名化的区块链系统,?#28909;?#29992;私有计算外包(private computing outsourcing)技术让别的节点既能够验证交易,又对交易本身的内容一无所知,这都是能够激发大?#21487;桃的?#24335;创新的技术,等待密码学黑客们发掘和实现。因此,我相信密码学成为显学的时代即将到来。

区块链是一项前景无限、极具颠覆性和想象空间的技术,它有潜力带来一个完全不同的商业时代,塑造新一代的互联网,也有可能被传统势力合?#24065;?#21270;。无论如何,区块链为创业者和程序员提供了又一?#38395;?#28526;的机会,在这片蓝海上将演出一场怎样的大戏,我们且拭目?#28304;?/span>
关键词: 区块链开发  区块链技术  
0/300
? 拳皇命运官方实力排名
发大财走势图 门兴vs沃尔夫斯堡 15选5走势图彩经网 寻仙手游如何提升战力 奇兵电竞比分app 河南22选5走势图201 龙之谷手游兑换码 女王至上电子 mgs电子游艺幸运锦鲤 部落冲突所有版本