区块链开发指南
上QQ阅读APP看书,第一时间看更新

推荐序一

区块链的价值实现

区块链和分布式账本技术是全球十大战略技术趋势之一,也是我国金融界、科技界过去一年高度关注的热点之一。毫无疑问,2017年我国金融界、科技界将会加大在区块链和分布式账本技术领域的投入,同时市场上将会出现几个实际的应用。

深圳市金融科技协会(原深圳市金融信息服务协会)在研究推动区块链和分布式账本技术及应用的过程中,遇到了一批积极探索、深入钻研、大胆应用这门技术的志同道合者,并与微众银行、国信证券、博时基金、富德保险、深证通、银链科技、招银网络、致远速联、中证信用等25家金融机构和金融科技企业共同发起并成立了金融区块链合作联盟(深圳)。在这个过程中,我也加深了对申屠青春、姚辉亚、宿旭升等区块链积极推动者的认识,与他们建立了友谊,其中申屠青春就是本书的作者之一。

申屠青春近几年专注于研究区块链技术和应用,技术能力得到了业内的高度认可。他对区块链的热爱程度近乎痴迷,凡是区块链圈内的交流,几乎都有他的身影。对于区块链技术和标准,他都热心地和业内人士进行分享。他为金链盟的筹建和运作做了不少有益的工作,也是成立金链盟的倡议者之一。

自从2015年,人们发现了区块链巨大的潜在价值后,区块链技术已经飞速发展了两年多。这两年之中,区块链成为主流金融圈所推崇和研究的创新技术。全球众多大型金融机构都投入了人力财力进行区块链研究,R3、HyperLedger等大大小小的组织也纷纷成立。我国的反应也很迅速,金链盟、ChinaLedger、工信部区块链联盟快速发展起来。从行业巨头参与的积极性和政府的重视程度来看,我国显然不想在区块链领域落后。

2008年年底,中本聪在他的论文中提出一个点对点电子支付系统的构想,并且于2009年实现了比特币的原型。这个系统可以使地球上的任何人通过互联网以极致的效率进行货币交换和价值传递,无需任何第三方机构。比特币没有发明任何新技术或算法,其中涉及的技术工作量证明、时间戳、公钥体系等早已成熟。神奇的是,中本聪通过对这几项技术的组合解决了无需可信第三方的数字资产所有权问题。从广义上讲,这些技术和思想的集合正是如今谈论的区块链。

从技术上看,区块链算是一个自由开放、没有固定形式的开源社区。众所周知,Linux开源社区中,Linus具有绝对权威来定制发展路线。有趣的是,区块链社区不存在这样一个角色,中本聪在2010年就在互联网上消失了,至今也没能确认其真实身份。也就是说,没有任何官方定义区块链该怎么实现,以及未来该怎么样发展。没有方向也许正好说明“一切皆有可能”。

去权威的社区呈现出一种百花齐放的状态,并且涌现出了大量的优秀项目和先进理念。纵览区块链的发展历史,大多创新点可归纳为共识机制、智能合约、隐私安全、可扩展性这几个方面,由于技术实现的灵活性相当大,因此更多的争论和共鸣在于设计理念和哲学上。

共识机制

中本聪在提出以工作量证明(PoW)机制作为共识算法之后,部分人认为耗能过大,于是就有了Sunny King设计的“环保”的股权证明(PoS)机制,后续又发展到Bitshares改进的股份授权证明(DPoS),并衍生出了更多的类PoS机制。从公有链的角度来看,共识算法就是公平和效率孰重孰轻的决策,技术实现不是难点,难点在于如何从社会学、从人性出发去设计激励机制。各种共识算法的支持者都有其合理的理由,不同共识的争论即使到现在也还一直存在。

另一个领域,金融机构的关注点在于效率、不可篡改及对应用的支持,由于不需要链上的代币激励,因而改进的拜占庭容错(PBFT)、PAXOS、RAFT等传统分布式一致性算法就成为首选。

由此也就形成了两种区块链生态:公有链和联盟链。公有链可以任意加入,联盟链是许可加入,联盟链的用户大多是机构或公司,需要区块链契合自身的业务模式。从共识机制开始,区块链就走向了两条不同的道路,最终双方是竞争还是融合,有待后续观察。

智能合约

对智能合约的探索是出于对比特币区块链低效的脚本系统的不满,该脚本使用的是非图灵完备的堆栈语言,只能实现有限的功能。

一些智能合约研究者一直追求在区块链上运行强大的机器语言,让每个用户都能见证其运行的过程和结果,实现“程序即规则”(Code is Law)的智能环境。从图灵完备的以太坊EVM、超级账本ChainCode到Chain平台的ChainCore,研究者的目标是在有限的存储空间中设计一个完备合约语言和高效的底层虚拟机,甚至将传统开发语言(如C/C++、Java)移植到区块链上。效率和安全性的改进依然任重道远,这也是区块链领域最有技术含量的发展方向之一。

隐私安全

区块链中的个人隐私保护是强需求,特别是金融机构要使用的区块链,保护客户隐私是基本的合规条件;但同时还不能产生绝对隐私,必须要让监管者知道交易内容。

隐私安全的研究者大多需要深入掌握密码学知识,这不是一件轻松简单的工作。ZCash使用了零知识证明算法来隐藏交易双方在区块链的信息;比特币使用多输入多输出交易、隐身地址(Stealth address)和其他更多古老的混币方案来保护用户隐私。联盟链将采用数字证书认证用户,隔离一切非相关用户的数据访问。隐私安全是一把双刃剑,技术上满足隐私保护的需要,同时也增加了系统实现的复杂度;在降低透明性的同时,也要让监管更方便。

可扩展性

用户交易数的增多不可避免地会带来区块链数据膨胀的问题,可扩展性解决的是如何尽可能高效地存储不可篡改的区块链数据。业界讨论的焦点放在如下两种方向的解决方案上:

1)从交易层把部分交易迁移到子区块链上运行,即侧链、闪电网络;

2)从减少存储上着手解决,对原始数据进行裁剪分片,研究更安全的瘦客户端,只存储非全量验证数据就可正常工作。

也许从交易层进行分解可以让问题一劳永逸,但这种方法的可靠实现没有理论上那么简单。侧链技术现在正处于原型验证期,到真正实用的程度还需要一段时间。

从上述维度来看,区块链开发是一种综合能力的体现,其开发模式与互联网应用大有不同。传统互联网应用要求快速迭代,不断试错,区块链应用反而在发布前需要细致测试,对未来规划要有清晰的认识,因为一旦上线了就不是开发者能控制的:没有灰度发布、没有回滚下线、试错的成本极高。区块链是一台永不停止的信任机器,任何一次改变都需要通过共识,要明白共识的达成是极其困难的,所以在开发时一定要十分谨慎。

区块链技术的发展还面临着很多的挑战,需要更多的人才加入到探索者的队伍中。区块链开发更是需要复合型人才,分布式网络、分布式计算、密码学、编译原理、经济学等方面的内容都需要涉及,国内缺乏区块链综合技术的教程,这本书来的正当其时。本书各个主题的作者都是相关领域的专家或创业者,他们是对区块链理解最深入的一批人,具有较强的实战经验。书中各章节内容深入浅出,按时间顺序介绍区块链的技术发展,并且加入了大量的代码示例,鼓励读者动手实践,以帮助读者快速掌握区块链的开发技能,是一本值得一读的实战型好书!

希望大家在阅读本书后有所收获。

邹胜

2017年4月

邹胜,深圳证券交易所前副总经理、深圳证券通信公司前董事长,拥有24年证券金融行业经验,曾领导深交所IT和深证通打造了第五代核心交易系统、中国证券期货业南方中心、金融云等业内领先的金融科技基础设施。现任深圳市金融科技协会联席会长,并致力于分布式交易技术在中国证券金融行业的应用推广。