第1章 区块链概述
1.1 区块链的前世今生
区块链的发展历史比较短暂,最初仅仅作为支持数字货币比特币交易的技术。目前,区块链技术已经脱离比特币,在金融、贸易、征信、物联网、共享经济等诸多领域得到初步应用。由于区块链技术可以防止数据篡改,所以不仅可以用安全而透明的方式追踪比特币的活动,还能在区块链网络中追踪其他类别的数据,因此可以帮助私人公司或政府部门建立更值得信赖的网络。用户可在这个网络中分享信息和价值,未来它还将得到更广泛的应用。
1.1.1 区块链的历史起源——比特币
比特币起源于2008年全球金融危机期间中本聪(Satoshi Nakamoto)撰写的论文《Bitcoin: A peer-to-peer electroniccash system》(《比特币:一种点对点的电子现金系统》)[1]。在这篇著名的论文中,重点讨论了比特币系统,区块链被描述为用于记录比特币交易的账目历史。事实上,中本聪关于比特币的白皮书虽然整体思想是开创性的,但其中使用的技术工具,如P2P(Peer-to-Peer)、分布式存储、非对称性加密等早已存在,他提出的是一个集成性的、系统性的、可供实践的解决方案。
实际上在这篇论文中并没有明确提出区块链的定义和概念,甚至还没有“区块链”(Blockchain)这个词,只有“区块”(Block)和“链”(Chain)。但在论文中涉及了几个对区块链技术影响深远的观点:
□点对点、去中心化的可靠交易;
□反欺诈;
□基于密码学原理的电子交易凭证管理;
□分布式的时间戳服务器;
□足够的安全能力支持系统。
在2009年他公开了最初的实现代码,第一个比特币于2009年1月3日18:15:05生成,但真正流行起来是2010年后的事情。设计和实现一种数字货币绝非易事,但是由于比特币设计精妙,诞生还不到十年,就在世界各地迅猛发展,从小众成功走向主流。
在日本和韩国比特币的交易特别火爆,比特币价格在震荡中不断刷新纪录。2009年10月最早有纪录的比特币价格仅为0.00076美元。不到8年时间,2017年上半年比特币这个全球最热门的加密货币的价格创历史新高,首次超过2000美元。收益远远超过黄金、地产,甚至有人预测其价格还将大幅攀升。此外,2017年5月勒索病毒WannaCry席卷全球,全球150个国家及地区的数十万台计算机遭到攻击,事件并没有给比特币市场造成直接的损失,反倒让比特币也跟着火了一把。
据报道,多国政府开始给予比特币合法身份。2017年4月,日本正式生效新规,比特币成为一种合法的支付方式;2017年7月,澳大利亚政府承认比特币为货币,并废除比特币的商品与服务税。
1.1.2 欢迎来到区块链的世界
在比特币系统成功运行多年后,2014年前后,部分金融机构开始意识到,作为比特币运行的底层支撑技术——区块链,实际上是一种极其巧妙的分布式共享账本技术,对金融乃至各行各业带来的潜在影响甚至可能不亚于复式记账法的发明。对区块链的初步认识来自2014年10月大英图书馆的一次技术讨论会。在这次会议中,人们对比特币的现状和未来以及区块链在金融等领域的应用前景进行了深入的探讨。
自此,区块链技术开始在全球崭露头角。可以把2015年称为世界区块链元年,因为在这一年经济领域关注到了它。划时代的标志是《华尔街日报》刊文称区块链是最近500年以来在金融领域最重要的突破,而《经济学人》杂志在封面《信任的机器》一文中介绍区块链为创造信任的机器。文章指出,区块链并非仅仅是一项加密技术或者数字货币,在信息不对称、不确定的环境下,它还可以建立满足经济活动赖以发生、发展的“信任”生态体系。作为比特币底层技术的“链”,其价值远大于比特币本身。区块链可以让人们在没有中央权威机构监督的情况下,对彼此协作建立起信心。区块链是一种共享账本技术,实现了在分布式商业网络里多方参与的双边交易中的去中介化。简单来说,它是一台创造信任的机器。
进入2016年,业界开始大规模认识到区块链技术的重要价值,并通过智能合约技术将其用于数字货币以外的分布式应用领域。世界经济论坛甚至预测,到2025年,世界GDP的10%都将存储在区块链上或者应用区块链技术。
政府部门也行动起来关注区块链。2016年1月,英国首席科学家建议英国政府把区块链技术列为英国国家战略,随后包括中国人民银行在内的多国政府和央行对区块链进行了研究。2017年,欧洲议会发布了一份新的报告——《区块链如何改变我们的生活》,总结了区块链技术的能力和挑战以及对社会价值可能带来的影响,其中特别指出智能合约的重要作用。
虽然直到今天,我们还不知道中本聪究竟是谁,但毫无疑问他开启了一个新的时代。许多商业组织和行业机构投入了大量资源来研究区块链。全球领先的信息技术研究和顾问公司Gartner公布了2016年新兴科技技术成熟度曲线(Hype Cycle for Emerging Technologies, 2016)[2],如图1-1所示。2016年区块链正处于期望膨胀期,距离成熟期需要5~10年。在未来,全球区块链技术仍然会保持比较高的发展趋势。
图1-1 2016年新兴科技技术成熟度曲线
1.1.3 区块链演进趋势
本质上,因为区块链的链与链之间具有隐私、安全、共识、自治、价值共享的特性,所以在技术层面上解决了互联网上的价值传递问题。同时,区块链又具有底层开源和改变业务规则、创新业务多方共识等逻辑,因此区块链是未来整个IT架构和互联网转型的重要支撑。
Melanie Swan所著的《区块链:新经济蓝图及导读》[3]一书在业界引起了巨大的反响。她在书中提出了对区块链版本划分的方法,即按照区块链已经完成的以及将要完成的功能划分成区块链1.0、2.0和3.0三个阶段。这种版本划分方式基本上反映了区块链技术成熟发展的大脉络,目前也得到了业界广泛的认可。
1)我们可以把比特币理解为区块链技术的一个应用场景,也就是区块链1.0阶段。但是如果仅有比特币,区块链也只是一种数字货币,并不能达到今天的火爆程度,可以说比特币是当今区块链的“杀手级”应用,但是区块链可以做的事情远远超过比特币,很有可能产生其他“杀手级”应用。
2)区块链2.0的重要标志就是被金融领域所接受并得到广泛应用形成的金融互联网,让价值交换变得便捷、直接,节省时间、节省成本。目前区块链2.0在实际场景中的应用,有两个重要因素:资产数字化(上链过程)与智能合约。
区块链2.0更关注智能合约(Smart Contract)所体现的业务价值。在区块链的背景下,智能合约当作是一种运行在区块链之上的通用计算模式,这样智能合约的内涵就不一定必须要和传统的合同概念相关联,反而可以是任何的计算机程序。智能合约实际上是通过高级编程语言把现实世界的业务逻辑在区块链上加以实现。智能合约通过在区块链上增加应用功能拓展了其适用范围和生存空间,如此就可以通过区块链来描述众多实现当中的业务场景。
当前,技术和产业处于区块链2.0阶段。在摩根士丹利公司的一份报告中提到了他们对区块链技术在金融行业被采用的路线图展望,对区块链2.0,其展望大致持续到2025年:
□2014年—2016年是评估阶段。银行和其他金融基础设施中介机构对许可制的共享账本技术的效率、机会等进行评估;
□2016年—2018年对区块链进行概念原型验证测试。主要的测试目标是验证技术的可行性,将区块链技术和传统方式在性能、成本、速度、规模等方面进行对比;
□2017年—2020年预计基于区块链的共享架构开始出现;
□2021年—2025年在区块链技术证明有效的基础上,会有更多的金融资产转向区块链技术。
3)区块链3.0要把区块链的应用范围拓展到各行各业,支持广义的资产交互和登记,进入万物互联,设备民主的“区块链+”时代。
互联网使得全球之间的互动越来越紧密,伴随而来的是巨大的信任鸿沟,未来将进入到需要真正的强信任背书的大数据时代。通过使用区块链技术,任何人都没有能力也没有必要去质疑数据的质量和真实性。区块链技术具有全新的理念和逻辑结构,并且它每天还在发展变化过程中,因此,随着区块链能够为信任提供价值的场景改变,它自身也将进入不同的阶段。或许未来的某一天,区块链可能还将迈进更新的阶段。
1.2 区块链概念
区块链(Blockchain)技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准。Wikipedia给出的定义为:
A blockchain, originally block chain, is a distributed database that maintains acontinuously-growing list of data records hardened against tampering andrevision. It consists of data structure blocks—which hold exclusively data ininitial blockchain implementations, and both data and programs in some of themore recent implementations—with each block holding batches of individualtransactions and the results of any blockchain executables. Each block containsa timestamp and information linking it to a previous block.
简而言之,区块链技术让参与的系统中任意多个节点,通过密码学算法把一段时间系统内的全部信息交流数据计算和记录到一个数据块(Block)中,并且生成该数据块的指纹用于链接(Chain)下个数据块和校验,系统中所有的参与节点共同认定记录是否为真。
1.2.1 区块链本质
区块链,实质是由多方参与共同维护的一个持续增长的分布式数据库,也称为分布式共享账本(Distributed Shared Ledger),其核心在于通过分布式网络、时序不可篡改的密码学账本及分布式共识机制建立彼此之间的信任关系,利用由自动化脚本组成的智能合约来编程和操作数据,最终实现由信息互联向价值互联的进化,如图1-2所示。
图1-2 从传统集中记账方式(左)到分布式总账(右)
区块链是一种与传统集中记账方式不同的记录技术。参与到区块链系统上的节点,可能不属于同一组织、彼此无须信任;区块链数据由所有节点共同维护,每个参与维护的节点都能获得一份完整记录的拷贝。与传统的记账技术相比,其特点包括:维护一条不断增长的链,只可能添加记录,而发生过的记录不可篡改;无须集中控制而能达成共识,实现上尽量采用分布式;通过密码学的机制来确保交易无法抵赖和破坏,并尽量保护用户信息和记录的隐私性。
1.2.2 区块链工作原理
所谓区块链,正是由多个区块组成的链状数据结构及存储方式。每个区块分为区块头和区块体,区块头主要用来实现区块链接的前一区块哈希值(Hash Value),而区块体主要包括交易账本,如图1-3所示。
图1-3 区块链的账本
以交易场景为例,区块链的工作原理如下:
1)客户端将发起一笔交易,经数字签名后广播给网络上的其他节点并等待确认;
2)网络中的节点对收到的数据记录信息进行校验,通过校验后,数据记录被记录到一个区块中;
3)全网所有接收节点对区块执行共识算法,区块通过共识算法过程后正式纳入区块链中存储,全网节点均表示接受该区块。表示接受的方法,是将该区块的随机哈希值视为最新的区块哈希值,新区块将提供永久和透明的交易记录并以该区块链为基础进行延长,实现资金转移。
1.2.3 区块链技术特点
具体来说,区块链技术作为创造信任的机器,主要有以下特点。
□分布式结构。区块链构建在分布式网络基础之上,账本并不是集中存放在某个服务器或数据中心,也不是由第三方权威机构来负责记录和管理,而是分散在网络中的每一个节点上,每一个节点都有一个该账本的副本,所有副本同步更新。
□信任机制。区块链技术通过数学原理和程序算法,使系统运作规则公开透明,实现交易双方在不需要借助第三方权威机构信用背书下通过达成共识,建立信任关系。
□公开透明。区块链对其上的节点可以做到开放、透明。任何人都可以加入区块链,也能查询区块链上的区块记录;同时所有用户看到的是同一个账本,能看到这个账本所发生和记录的每一笔交易。
□时序不可篡改。区块链采用带有时间戳的链式区块结构存储数据,具有极强的可追溯性和可验证性;同时由密码学算法和共识机制保证了区块链的不可篡改性。
1.2.4 区块链层次模型
区块链技术的模型包括由自下而上的数据层、网络层、共识层、激励层、合约层和应用层,共有6层。
数据层、网络层、共识层是区块链的必要元素。
1)数据层:最下层是“数据层”,它封装了底层数据区块的链式结构,以及相关的非对称公私钥数据加密技术和时间戳等技术,这是整个区块链技术中最底层的数据结构。
2)网络层:中间是网络层,包括P2P组网机制、数据传播机制和数据验证机制等。
3)共识层:第三层是共识层,封装了网络节点的各类共识机制算法。
而激励层、合约层和应用层不是区块链的必要元素,一些区块链应用并不完全包含上面3层结构。
第四层是激励层,它将经济因素集成到区块链技术体系中来,包括经济激励的发行机制和分配机制等,主要出现在公有链当中。
第五层是合约层,它封装各类脚本、算法和智能合约。
第六层是应用层,它封装了区块链的各种应用场景和案例,未来的可编程金融和可编程社会也将搭建在应用层中。
1.2.5 区块链共识算法
区块链并不是某种特定技术,而是一种类似于NoSQL(非关系型数据库)这样的技术解决方案的统称。共识机制算法是区块链的核心技术,因为这决定了到底由谁来记账,而记账方式将会影响整个系统的安全性和可靠性。目前已经出现了十余种共识机制算法,其中较为知名的有PoW(Proof of Work,工作量证明), PoS(Proof of Stake,权益证明), DPoS(Delegate Proof of Stake,股份授权证明)机制以及拜占庭将军容错共识等。当然,没有一种共识机制是完美无缺的,同时这也意味着没有一种共识机制是适合所有应用场景的。
1)PoW(工作量证明):就是挖矿,主要应用包括比特币和以太坊前三个阶段等。依赖机器进行数学运算来获取记账权,即通过与或运算,计算出一个满足规则的随机数,获得本次记账权,发出本轮需要记录的数据,全网其他节点验证后一起存储。优点是完全去中心化,节点自由进出;缺点是资源消耗相比其他共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,达成共识的周期较长,因此不适合商业应用。
2)PoS(权益证明):由Quantum Mechanic 2011年在bitcointalk首先提出,它是PoW的一种升级共识机制,在Peercoin、NXT和以太坊第四个阶段等应用。根据每个节点所占代币的比例和时间,等比例地降低挖矿难度,从而加快寻找随机数的速度,因此节点记账权的获得难度与节点持有的权益成反比,但它依然是基于哈希运算竞争获取记账权的方式。其优点是相对于PoW在一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升;缺点是还需要挖矿,本质上没有解决商业应用的痛点,可监管性也比较弱。
3)DPoS(股份授权证明):与PoW和PoS不同,DPoS不需要再挖矿了,而是类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账,持股人拥有所持股份对应的表决权。优点是大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证,降低运行网络的成本和维护网络安全的费用,增强网络效能;缺点是整个共识机制还是依赖于代币的,然而很多商业应用是不需要代币存在的。
在区块链加密技术出现之前,互联网上的信息拷贝是零成本的,数字资产具有无限可复制性,如果没有可信赖的第三方监督,我们根本无法确认一笔数字现金是否被花掉,因此可能出现重复支付的问题。
为了解决这个问题,区块链参照了“拜占庭将军问题”(Byzantine failures)[5]的算法。该问题是一个协议问题,指拜占庭帝国军队的将军们必须全体一致决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒,而将军们只能依靠信使来传递信息。如何才能防止受到叛徒欺骗而做出错误决策呢?数学家设计的算法是让将军在接到上一位将军标有进攻时间的信件之后,写上同意或反对并盖上自己的图章,然后把信转发给其他所有的将军,在这样的信息周转之后,最后会出现一个盖有超过半数将军图章的信息链,以保证将军们在互不信任的情况下达成共识。
莱斯利·兰伯特把拜占庭将军问题引入到点对点通信中。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决问题要求的规范。
区块链的技术原理参考了拜占庭将军问题的算法,通过盖戳的形式来进行公证。网络上的每一个参与者的计算机里都会有一份总账的备份,也都能在这本总帐里记上一笔,并且所有的备份都是在实时地、持续地进行更新、对账,以及同步着拷贝,即全网记账。每个节点都可以竞争盖戳,互相认证。这使得一个不可信网络变成了一个可信的网络,使得所有参与者可以在某些事情上达成一致。
1.2.6 区块链并不一定去中心化
理想化的区块链系统,是由许许多多节点组成的点与点的网络结构,似乎既不需要中心化的硬件设备,也不需要任何管理它的机构。在很多文献中都提出区块链是去中心化的(Decentralized),即整个网络没有中心化的硬件或者管理机构,任意节点之间的权利和义务都是均等的,且任一节点的损坏或者失去都会不影响整个系统的运作。
需要指出的是,区块链并不一定是去中心化的。实际上,软件系统的网络架构一般有3种模式:单中心、多中心、分布式,Decentralized只表明不是单中心模式的,它可能是多中心或弱中心,也可能是分布式的。把Decentralized翻译成“去中心化的”可能与最早由中国大陆“币圈”所做出的翻译偏差有关,实际上在中国台湾地区大多译为“分散式的”而不是“去中心化的”。因此,把Decentralized翻译成“分布式”或者“多中心化”,可能更切合今天技术和金融场景应用的实际。
在人类历史上,信息传播的延迟和谬误会导致信息不对称,这形成了各种中心化的强权组织和阶级分化。虽然信息社会特别是社交媒体的出现已经减弱了这种情况,但是目前仍无法达到绝对的信息对称。我们期待在区块链搭建的机器社会中进行深刻且迅速的社会关系变革,形成绝对信息对称,但是至少目前在机器社会还难以实现,即不能完全去中心化。
2016年The DAO受攻击事件也表明,完全去中心化至少在现阶段是不可行的。The DAO是一个基于以太坊公有链的众筹项目,成为史上最大的众筹项目。然而由于其智能合约的漏洞,导致The DAO被黑客攻击并转移走价值6000万美元的数字货币,最后不得不黯然落幕。这给以太坊生态系统带来了很多负面影响。此次事件之后,很多人对区块链的“去中心化”进行了反思:在挽回这个损失的过程中,原有的去中心化机制未能解决问题,最后还是通过“集中式”的方式,强制以太坊进行“硬分叉”完成交易回滚。
如果我们仔细研究中本聪的论文,就会发现其中只有Peer-to-Peer(P2P),而没有Decentralized一词。业界也正在逐渐对区块链并不一定去中心化形成共识。在2016年6月召开的W3C区块链标准会议上,以太坊的核心开发团队EthCore明确表示,不再使用Decentralized这个词,而是用P2P、Secure、Serverless这类纯技术性词语。
但是如果简单地宣称去中心化,会被误读成是在某种程度上存在着一种既想从事金融活动,又不愿意接受金融监管的倾向。
1.3 区块链技术平台
目前,全球有数个区块链技术平台,其中比特币(Bitcoin)、以太坊(Ethereum)、瑞波(Ripple)和Linux基金会的开源项目超级账本(Hyperledger Fabric)比较有代表性。
此外,还有比特股(Bitshare)、恒星(Stellar)、R3 Corda等国外区块链技术以及国内一些公司研发的区块链应用平台。
1.3.1 比特币
比特币(Bitcoin)是最早、全球使用最广泛的区块链技术,具有最去中心化、最多分布节点、最公平等特点。
比特币提出了一个不需要信用中介的数字货币系统,通过数字签名(Digital Signatures)使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。同时为了防止双重支付(Double-Spending),它提出了一种采用工作量证明机制的点对点网络来记录交易的公开信息,该网络通过随机散列(Hashing)对全部交易加上时间戳(Time),将它们合并入一个不断延伸的基于随机散列的工作量证明(Proof of Work)的链条作为交易记录,形成的交易记录将不可更改。只要诚实的节点能够控制绝大多数CPU的计算能力,就能使攻击者难以改变交易记录。节点之间的工作,大部分是彼此独立的,只需要很少的协同。每个节点都不需要明确自己的身份,可以随时离开网络,若想重新加入网络也非常容易。节点通过自己的计算力进行投票,表决它们对有效区块的确认,它们不断延长有效的区块链来表达自己的确认,并拒绝在无效区块之后延长区块以表示拒绝。可以说,比特币包含了一个点对点数字货币系统所需要的全部规则和激励措施。
在比特币这种去中心化的公有区块链系统中,在相互间没有信任基础的前提下需要有一种完成点对点交易的共识机制。比特币发行的共识机制基于工作量证明算法(挖矿),使用过程基于点对点支付和全局记账,货币有效性基于追溯验证算法。“挖矿”过程就是把系统中没有记录的现有交易打包到区块里,通过系统提供的计算“挖矿”难度的随机数不断遍历,最先达到条件的会获得记录区块的权利。随后节点将该区块记录通过网络发布广播,全网其他节点在验证该区块满足条件,同时区块记录的交易符合规定后,分别把该区块记录的信息更新到自己节点的区块链上,从而形成全网账本的共识。
比特币区块链核心技术的框架采用C++语言开发,共识算法采用PoW算法,工作量(挖矿)证明获得记账权,容错50%,实现全网记账,公网性能TPS小于7,开源地址为:https://github.com/bitcoin/bitcoin。比特币发行并运行到现在,说明了区块链技术在数字货币领域的可行性,但其并不能完全代表区块链技术,它只有唯一的数字资产(比特币),而且没有图灵完备的编程语言平台,允许开发人员建立更广泛的分布式账本系统应用。
比特币区块链推出的时间比较早也不够强大(如不支持智能合约)。现在当人们提到“区块链”时,往往已经与比特币网络没有直接联系了,除非特别指出是承载比特币交易系统的“比特币区块链”。但比特币仍是区块链最早也是截至目前数字货币方面最大并且在全球各地经常提及的应用。
在比特币源代码基础上,照搬或进行较小改动之后,还出现了一些区块链技术体系,其中包括一些山寨币,例如彩色币(染色币)等,还有以锚定比特币为基础的比特币侧链等。
1.3.2 以太坊
以太坊是一个通用的数字代币平台 [3],它通过一套图灵完备的脚本语言(Ethereum Virtual MachineCode, EVM语言)建立应用,采用多种编程语言实现协议(编程并不需要直接使用EVM语言,而是使用类似C语言、Python、Lisp等高级语言,再通过编译器转成EVM语言),采用Go语言编写的客户端作为默认客户端(即与以太坊网络交互的方法,支持其他多种语言的客户端)。以太坊ETH的开源地址:https://github.com/ethereum。
以太坊的核心目标是智能合约,它可以看作是一个以太坊系统里的自动代理人。它有一个自己的以太币地址,当用户向合约地址发送一笔交易后,该合约就会被激活,然后根据交易中的额外信息,合约运行自身的代码,最后返回一个结果,这个结果可能是从合约地址发出的另外一笔交易。需要指出的是,以太坊中的交易不只是发送以太币而已,它还可以嵌入相当多的额外信息。如果一笔交易是发送给合约的,那么这些信息就非常重要,因为合约将根据这些信息来完成自身的业务逻辑。智能合约的引入对区块链2.0有着极大的推动作用,而作为早期推动智能合约的区块链平台,以太坊一度为广大区块链社区所看好。智能合约配合友好的界面和一些额外的小支持,可以让用户基于合约搭建各种千变万化的DApp应用,这样使得开发人员开发区块链应用的门槛大大降低。以太坊架构图如图1-4所示。
图1-4 以太坊架构图
以太坊合并了很多对比特币用户来说十分熟悉的特征和技术,同时自己也进行了很多修正和创新。比特币区块链纯粹是一个关于交易的列表,而以太坊的基础单元是账户。以太坊区块链跟踪每个账户的状态,所有以太坊区块链上的状态转换都是账户之间价值和信息的转移。账户分为两类:
□外部账户,由私人密码控制;
□合约账户,由它们的合约编码控制,只能由外部账户“激活”。
对于大部分用户来说,两者的基本区别在于外部账户是由人类用户掌控——因为他们能够控制私钥,进而控制外部账户。而合约账户则是由内部编码管控。如果它们是被人类用户“控制”的,那也是因为程序设定了它们被具有特定地址的外部账户所控制,进而被持有私钥控制外部账户的人控制着。“智能合约”这个流行的术语指的是在合约账户中编码——交易发送给该账户时所运行的程序。用户可以在区块链中部署编码来创建新的合约。
以太坊迭代周期比较快,使得依赖于以太坊特别是以太坊公网的商业应用比较容易受到攻击。The DAO(The DistributedAutonomous Organization,去中心化自治组织)是区块链业界最大的众筹项目,它在短时间内就募集了价值1.3亿美元的数字货币。2016年6月17日,由于其编写的智能合约存在重大缺陷,运行在以太坊公有链上的The DAO智能合约遭遇攻击。导致300多万以太币资产被分离出The DAO资产池。The DAO官方交流社区DAOhub称,在黑客风波结束及所有的以太币被解锁后,返还所有的以太币,并关闭The DAO。
1.3.3 瑞波
瑞波(Ripple)是开放源码的点到点支付网络,它可以轻松、廉价、安全、跨国界地进行转账。转账对象可以是互联网上的任何一个人,无论他在世界的哪个地方;被转账的可以是清算货币、虚拟货币、数字资产或任意一种有价值的资产。
瑞波使用的共识机制是RPCA,可以通过特殊节点的投票,在很短的时间内对交易进行验证和确认。瑞波客户端不需要下载区块链,它在普通节点上舍弃掉已经验证过的总账本链,只保留最近已验证的总账本和一个指向历史总账本的链接,因而同步和下载总账本的工作量很小。
作为世界上第一个开放的支付网络,瑞波于2015年下半年对外公布了其InterLedger协议项目,该项目的目标就是打造全球统一的支付标准,创建统一的网络金融传输协议。通过瑞波支付网络可以转账任意一种货币,包括美元、欧元、人民币、日元或者比特币,简便、易行、快捷,交易确认在几秒内完成,交易费用几乎是零,没有所谓的跨行异地以及跨国支付费用。而且由于是P2P软件,所以没有任何个人、公司或政府操控瑞波,任何人都可以创建一个账户。
目前,瑞波币和以太坊之间正在争夺世界第二大加密货币的地位,胜负尚未决出。2017年早些时候,瑞波网络已实现在3.7s内能够完成7万笔交易。瑞波公司为其瑞波共识账本(RCL)和互联账本协议(ILP)引入了新的功能(托管和支付通道),这提高了瑞波币(XRP)的交易吞吐量,这些改进使得瑞波网络的可扩展性达到了Visa的级别,也就是其交易吞吐量将可与Visa抗衡。
1.3.4 区块链商用平台:超级账本
超级账本(Hyperledger)是Linux基金会的区块链项目,致力于发展跨行业的商用区块链平台技术 [4]。超级账本项目自创立伊始便吸引了众多行业的领头羊,包括金融业、银行、互联网行业、运输业、制作业等。目前,超级账本项目在全球拥有超过100个成员,包括Cisco、IBM、Intel、J.P.Morgan、荷兰银行、SWIFT等。基于区块链技术、智能合约及其他相关技术,超级账本项目致力于建立新一代的分布式账本交易应用平台,从而在简化商业流程和法律事务的同时,建立起商业信任、透明、审查能力。旗下的Hyperledger Fabric子项目是以IBM早期捐献出的Open Blockchain为主体搭建而成,当时共向HyperLedger贡献了44000行开源代码。
HyperLedger Fabric是一个带有可插入各种功能模块架构的区块链实施方案,目标是打造成一个由全社会共同维护的开源超级账本。开源地址:https://github.com/hyperledger/fabric。Fabric的主要框架核心开发语言是Go语言,其更适合于联盟链。早在2016年IBM宣布,计划提供开源代码并持续向超级账本项目(Hyperledger Project)贡献区块链代码。IBM将提供经过IBM测试与认证的超级账本区块链代码,以及在多种技术平台上进行安装的方法,以便开发者可以在容器(Container)内执行超级账本的代码,并开始快速构建商品溯源、贸易融资、信用证、供应链以及企业贷款等区块链网络。
可以说,Hyperledger是对传统区块链模型的革新,在某种程度上是允许创建授权和非授权的区块链。Hyperledger还通过提供一个针对身份识别、可审计、隐私安全和健壮的模型,使得缩短计算周期、提高规模效率和响应各个行业的应用需求成为可能。
利用超级账本平台,用户可以轻松地搭建起企业级的区块链网络。在这个网络中,每名成员都可以访问实时更新、加密过的账本,并能查询及发起交易。一旦交易经过共识流程的验证,它就会立即加入到网络中所有的账本中,并且不能更改。交易结果迅速、私有、保密且易于审计。另外,早期的超级账本还定义了协议规范:Open Blockchain Protocol Specification,并以此建立了区块链平台Hyperledger Fabric,并可以用于一系列B2B和B2C交易相关的行业案例中。为了满足这些功能及要求,Hyperledger Fabric的实现利用了下述概念:
□智能合约(smart contracts)
□数字资产(digital assets)
□记录存储系统(system of record repositories/stores)
□基于共识的去中心化网络(decentralized consensus-based network)
□可插拔的共识算法及共识模型(pluggable consensus algorithms/models)
□加密安全机制(cryptographic security)
这些概念和功能让Hyperledger Fabric架构结合了3个范畴:成员管理、区块链和智能合约(Chaincode)。这3个范畴是按逻辑划分的,而不是在物理上对独立过程、地址空间或(虚拟)机器的组件分割。
(1)成员管理服务
成员管理提供了诸多服务,包括身份管理、网络隐私、保密及审查。对于非准入型区块链,参与者不需要提供认证许可,所有的节点都平等地发起交易、验证交易及累积账本。也就是说,在非准入型区块链中没有身份的区别。成员管理服务结合PKI技术和去中心化/共识,将非准入型区块链转变为准入型区块链。在准入型区块链中,参与者通过注册获取身份认证许可(注册证书),并且通过参与类型区分类别。通过使用身份认证许可,用户可以向交易认证中心(TCA)申请伪匿名认证许可。只有使用这样的许可信息(即交易证书)用户才可以发起交易。此外,交易证书在区块链上永久存在,审查人员可以以此追溯交易。
(2)区块链服务
通过建立在HTTP/2上的P2P协议,区块链服务管理分布式账本。账本上的数据结构被高度优化,从而支持对世界状态复制的高效哈希算法。此外,在部署智能合约时,还可以指定不同的共识算法,如PBFT、RAFT、PoW和PoS等。
(3)智能合约
智能合约在Fabric中称为“链码”。链码服务为链码在验证节点上的执行提供了安全轻量级的沙箱。执行环境是一个“锁定”且安全的容器及一组签名镜像,包含安全操作系统和链码语言、运行时、SDK层。链码语言包括Go、Java和Node.js。此外,可以根据需求来启用其他语言。在网络中,验证节点与链码可以发出事件,应用程序可以监控并响应这些事件。目前已经预置了一些事件类型,链码还可以发出用户自定义事件。
1.3.5 区块链技术平台比较
各个区块链技术平台各有千秋,前面提到的共识机制、是否有智能合约功能、适用场景等都是进行比较的主要内容。
1)智能合约:1995年,跨领域法律学者和密码学家尼克·萨博(Nick Szabo)首次提出了“智能合约”(Smart contract)这一术语。当一个预先编好的条件被触发时,智能合约执行相应的合同条款。从本质上讲,这些智能合约的工作原理类似于其他计算机程序的if-then语句,智能合约只是以这种方式与真实世界的资产进行交互。以太坊和HyperLedger Fabric等以智能合约为核心的区块链越来越受到重视。
2)适用场景:通常把区块链分为“公有链”(Public blockchain)、“私有链”(Private blockchain)和“联盟链”(Consortium blockchain)3种。公有链对所有人开放,任何人都可以参与比特币,这是最典型的公有链;联盟链仅对特定的组织团体开放;私有链仅对单独的个人或实体开放。现在业内普遍认为联盟链介于公有链和私有链之间,可视为“部分去中心化”,公众可以查阅和交易,对于验证交易或发布智能合约等功能需要获得联盟许可。在非数字货币之外的场景中引入区块链技术时,使用哪种区块链,需要对诸多因素进行权衡决策。短期内,主流金融机构仍难以接纳公有链。共识算法的对比如表1-1所示。
表1-1 共识算法比对
1.4 区块链的商用之道
区块链之所以称为一种“颠覆性”的新兴技术,因为尽管其成名于比特币,但未来区块链的用武之地将远远超过加密货币。区块链的分布式共享账本这一技术本质能够在商业网络中使更多的参与方得到更加广泛的参与,并为商业网络或行业业务带来更低的沟通或整合成本,以及更高的业务效率。可以预见,区块链作为一个独立的技术板块,会在商业领域中得到广泛应用。
1.4.1 区块链的2.0时代:商用区块链
自2009年比特币在交易领域迅速崛起以来,这种加密币受到了广泛关注,但也颇受争议。不过比特币的底层技术——区块链,由于能够快速改进银行、供应链以及其他交易网络,在降低与业务运营相关的成本和风险的同时,带来创新和增长机会,所以是比较无争议的新兴技术模式,得到了商业界的鼎力支持。
传统的商业业务模式存在的问题是很难在一个互信的网络中监视跨机构的交易执行:每个参与方都有自己的账本,在交易发生时各自更改;协同各方会导致额外的工作及中介等附加成本;由于业务条件的不同,“合同”重复分散在各个参与方,造成整体业务流程的低有效性;整个业务网络依赖于一个或几个中心系统,整个商业网络十分脆弱。
而区块链提供了共享、复制、授权的账本这样一个解决方案。区块链架构带来了以下改变:
1)区块链架构使每一个商业网络的参与方都具有一个共享账本,当交易发生时,通过点对点的复制更改所有账本;
2)使用密码算法确保网络上的参与者仅仅可以看到和他们相关的账本内容,交易是安全的、授权的和验证的;
3)区块链也将与资产转移交易相关的合同条款嵌入交易数据库中以做到在满足商务条件下交易才发生;
4)网络参与者基于共识机制或类似的机制来保证交易是共同验证的,商业网络满足政府监管、合规及审计。
总体而言,区块链在提高业务效率和简化流程上确实具有优势。
当前国内外区块链产业生态发展迅猛,产业链层次逐渐清晰,无论是底层基础架构和平台,还是细分产业板块的区块链应用,以及风险资本投资都已初具规模。综合来看,全球区块链在商业行业发展具有三大趋势。
1)从比特币向更丰富的应用场景发展。区块链2.0把之前“区块链就是比特币”的意义向前推进了一大步,区块链也不再是比特币的专有技术和代名词,而是在更加广泛的应用场景中,成为资产流转的价值表述。区块链当下不再依赖数字货币或资产这一类单一场景,而是发展到支付汇兑、电子商务、移动社交、众筹、慈善、互助保险等面向终端用户的应用,以及数字资产、IP版权和交易、金融清算和结算、商品溯源等企业级应用领域。
2)全球区块链生态日益丰富,参与方开始出现明显的产业分工。从全球视角来看,随着参与者越来越多,区块链形成了不同的技术平台、行业以及发展路径的产业生态。对全球的区块链从业者来说,更看重区块链作为未来金融科技(FinTech)的一个领域从而提前布局,大胆尝试实践区块链在金融及其他行业中的各类业务场景。同时,高科技龙头企业也希望在区块链技术框架的建立上尽早发力,通过支持全球开源社区建立更扎实的底层区块链平台和更广泛的应用场景。区块链的热潮带动了更多创业者的热情,众多初创公司如雨后春笋般应运而生。从行业角度来看,区块链初创公司覆盖了银行和保险服务、供应链、医疗、物联网、外贸等众多行业,可谓是百花齐放。
3)全球投资正在快速注入,重点关注企业级应用落地。区块链项目融资正呈现井喷式增长,从2012年到2015年,区块链领域吸引的风险投资从200万美元增长到4.69亿美元,增长超过了200倍,累计投资已达10亿美元左右。2016年仅在金融领域,区块链技术投资额就占整体投资的七成以上。从全球的投资情况来看,由于越来越多的行业已经开始实践区块链,所以使得更多投资人开始关注行业内的区块链应用场景,投资趋于理性,但更注重利用投资者自身资源帮助投资标的进行深度的行业孵化。
总之,市场、行业、投资等多方对于商用区块链的发展诉求十分强烈,作为“颠覆性创新”技术的区块链前景光明。
1.4.2 超级账本:商用区块链的“第五元素”
企业级区块链四大平台要素包括:共享账本,共识、隐私和保密、智能合约。此外,还有第五要素,即商业网络。企业级的区块链一定是围绕业务场景展开的,因此在第五元素商业网络当中需要包含市场参与者的对等架构以及伙伴间的一个共识协议。
目前,以比特币为代表的公有链有一些加密货币之外的新型应用,但是却无法克服自身固有的一些问题,例如交易效率低,区块没有最终确定性(finality)等,而且是由极客主导的,不符合商业主流趋势。为了克服上述不足,满足大多数商业应用的要求,设计开发适合商用的区块链平台迫在眉睫。
企业级商用区块链网络比较适合使用联盟链和许可制。这样在一个限定的范围内,只有授权的节点和用户才能参与到交易和智能合约的执行中来,而任何匿名节点或非授权用户均被拒绝服务。从团体联盟的角度来看,这增加了区块链网络的安全可靠。当前,在欧美主流的区块链应用大部分是行业链或者是联盟链,也就是某一个行业的上下游,或者核心企业联合起来,一起构建的半公开化的区块链。从这个角度讲,超级账本具备成为未来最主要商用区块链技术平台的潜力,值得技术开发人员花时间和精力进行学习和研究。
由于超级账本有个重要的设计原则是按照“用例驱动”(use case driven)的方式来实现的,所有功能都应该有对应的用例需求,因此学习研究的过程并不一定十分辛苦。此外,鉴于超级账本是个通用型框架,无法预先确定将来所有的应用场景,因此,定义出部分典型的用例,可使超级账本先满足这部分有代表性的区块链应用需求,然后再用可替换模块满足其他需求。
1.4.3 区块链的商业应用场景
区块链的商业应用才刚刚起步,一般都将金融业应用作为切入口,很多其他领域的应用还在探索或试水阶段。最重要的是,不能为了技术而技术,为了区块链而区块链。商用区块链技术要解决企业的痛点,为客户创造新的价值。可喜的是,在金融和金融以外的各个细分领域,区块链都在加速落地。以下为一些应用实例和构想。
1)金融领域。21世纪是金融的“大航海时代”,对银行、保险、清算、股权登记交易、信用评级、公证等领域,既需要绝对的可信任,也需要隐私保密,所以特别适合区块链应用。举例来说,金融行业关心的资产分布式管存,可以把资产(如证券等)数据存放在区块链网络中,资产利益相关人可以直接访问资产数据,而无须经过传统的中间人,可大幅提高效率和节约成本。区块链股权登记和交易平台脱胎于加密币交易所,也是比较合适及容易实现的应用。
2)产业互联网领域。供应链溯源和共享经济可以应用区块链。在供应链中,所有的参与者都通过区块链记录、追踪和共享各种数据,这些数据记录存储在区块链里面并贯穿货物的生产、运输和销售等环节,从而提供深度回溯、查询等核心功能,实现信息公开透明,出了问题可以依此来追责。附加值较高的食品、药品和疫苗、零部件生产检测结果等都可以使用区块链。
例如,现在市场上号称是北大荒地区生产的大米,特别是五常大米,是当地实际产量的很多倍,造成良莠不齐。消费者希望花比较高的价钱购买真正的北大荒大米,却苦于无法分辨哪些大米是真的。此处可以体现区块链在供应链溯源上的价值,就是利用区块链中数据记录的真实性或者有效性。如果在原产地和各个流通环节中设置的传感设备在区块链上签名盖戳,一旦进入到区块链里面,每个人的签名就不能抵赖了。含有被区块链标记的时间戳、地理戳、品质戳的放心粮从源头上杜绝了各个环节作弊的动机,这样市场上才能销售与当地产量相匹配的大米。
3)传统行业的转型创新。区块链的应用绝不仅局限于金融和互联网等前沿领域,还可以与能源、零售、电商、房地产等传统领域接轨,因此区块链不是个摆设。例如,高盛公司就提出,对于资产所有权需经过谨慎识别的房地产交易,如果能够利用区块链技术建立安全、共享的所有权数据库,那么房产交易纠纷和交易成本将大大缩小。
4)FinTech2.0的三驾马车:区块链、认知物联网和人工智能。未来,世界将进入人工智能、认知物联网和区块链三足鼎立的时期,如果能将三者有机结合将创造巨大的价值。例如,如果将闲置或未充分利用的资产(如汽车、仓库、医疗设备等)接入物联网,那么区块链技术可以帮助互不相识的这些资产的所有者进行资产使用的交易谈判。在共享经济的模式下,最需要解决的就是陌生人之间的信任问题,即资源的提供方和资源的租用者,如何在缺乏信任的基础上安全地完成交易。分布式区块链将是一种全新的去信任方式,不使用任何中间平台,达到各方参与者可靠交易的目的。这有点类似于分时用车和分时用房,这将引爆以前隐藏在深处的过剩资产容量。
1.5 本章小结
区块链作为当下最流行的技术之一,从提出概念原型到造就价格惊人的比特币只用了不到十年的时间,而且它的用途还可以扩展到商业的多个领域。本章介绍了区块链的概念,包括其本质、工作原理、技术特点、层次模型、共识算法等,还特别纠正了“区块链一定是去中心化的”错误观念。我们还对比特币、以太坊、瑞波、超级账本等技术进行了简要介绍和比较。现在我们大致了解了区块链的世界,下面可以具体学习超级账本了。