区块链和比特币初体验
区块链(Blockchain)是近年来最具革命性的新兴技术之一。区块链技术发源于比特币(Bitcoin),其以去中心化方式建立信任等突出特点,对金融等诸多行业来说极具颠覆性,具有非常广阔的应用前景,受到各国政府、金融机构、科技企业、爱好者和媒体的高度关注。
在本章中,我们首先介绍区块链的定义和特点,然后通过介绍购买、存储和交易比特币等实际使用场景来体验区块链,最后再探讨一些关于区块链的常见问题。
1.1 区块链简介
2016年1月20日,中国人民银行官方网站上发表了一条题为《中国人民银行数字货币研讨会在京召开》的新闻[1],这一消息迅速在各大主流新闻媒体和比特币、区块链爱好者社区中传播,成为推动区块链技术在国内迅速升温的“导火线”。这是自从2013年12月5日中国人民银行、工信部、银监会、证监会和保监会五部委联合发布《关于防范比特币风险的通知》[2]以来,相关首次公开对比特币底层技术——区块链技术给予了高度评价。
在我们开始区块链体验之旅之前,让我们简要介绍区块链的定义和其发展历程。
1.1.1 区块链起源——比特币
区块链的英文是Blockchain,字面意思就是(交易数据)块(Block)的链(Chain)。区块链技术首先被应用于比特币,如图1-1所示。比特币本身就是第一个,也是规模最大、应用范围最广的区块链。
图1-1 简化的比特币区块链示意图
1.1.2 区块链和区块链技术的涵义
目前,关于区块链没有统一的定义,综合来看,区块链就是基于区块链技术形成的公共数据库(或称公共账本)。其中区块链技术是指多个参与方之间基于现代密码学、分布式一致性协议、点对点网络通信技术和智能合约编程语言等形成的数据交换、处理和存储的技术组合。同时,区块链技术本身仍在不断发展和演化中。
1.1.3 区块链分类
以参与方分类,区块链可以分为:公开链(Public Blockchain)、联盟链(Consortium Blockchain)和私有链(Private Blockchain)。从链与链的关系来分,可以分为主链和侧链。而且,不同区块链还可以形成网络,网络中链与链的互联互通,产生互联链(Interchain)的概念。
1.?公共链
公共链对外公开,用户不用注册就能匿名参与,无需授权即可访问网络和区块链。节点可选择自由出入网络。公共链上的区块可以被任何人查看,任何人也可以在公共链上发送交易,还可以随时参与网络上形成共识的过程,即决定哪个区块可以加入区块链并记录当前的网络状态。公共链是真正意义上的完全去中心化的区块链,它通过密码学保证交易不可篡改,同时也利用密码学验证以及经济上的激励,在互为陌生的网络环境中建立共识,从而形成去中心化的信用机制。在公共链中的共识机制一般是工作量证明(PoW)或权益证明(PoS),用户对共识形成的影响力直接取决于他们在网络中拥有资源的占比。
公共链通常也称为非许可链(Permissionless Blockchain)。如比特币和以太坊等都是公共链。公共链一般适合于虚拟货币、面向大众的电子商务、互联网金融等B2C、C2C或C2B等应用场景。
2.?联盟链
联盟链(Consortium Blockchain)仅限于联盟成员参与,区块链上的读写权限、参与记账权限按联盟规则来制定。由40多家银行参与的区块链联盟R3[3]和Linux基金会支持的超级账本(Hyperleder)[4]项目都属于联盟链架构。联盟链是一种需要注册许可的区块链,这种区块链也称为许可链(Permissioned Blockchain)。
联盟链的共识过程由预先选好的节点控制。一般来说,它适合于机构间的交易、结算或清算等B2B场景。例如在银行间进行支付、结算、清算的系统就可以采用联盟链的形式,将各家银行的网关节点作为记账节点,当网络上有超过2/3的节点确认一个区块,该区块记录的交易将得到全网确认。联盟链可以根据应用场景来决定对公众的开放程度。由于参与共识的节点比较少,联盟链一般不采用工作量证明的挖矿机制,而是多采用权益证明或PBFT(Practical Byzantine Fault Tolerant)、RAFT等共识算法。联盟链对交易的确认时间、每秒交易数都与公共链有较大的区别,对安全和性能的要求也比公共链高。
联盟链网络由成员机构共同维护,网络接入一般通过成员机构的网关节点接入。联盟链平台应提供成员管理、认证、授权、监控、审计等安全管理功能。
2015年成立的R3联盟,旨在建立银行同业的一个联盟链,目前已经吸引了40多个成员,包括世界著名的银行(如摩根大通、高盛、瑞信、伯克莱、汇丰银行等),IT巨头(如IBM、微软)。
银行间结算是非常碎片化的流程,每个银行各自有一套账本,对账困难,有些交易有时要花几天才能校验和确认。同时,其流动性风险很高,在监管报送方面非常繁琐,也容易出现人为错误,结算成本很高。
针对这种情况,R3联盟构建了一个银行同业的联盟链以解决这些问题。利用区块链技术,银行同业间可以共享一个统一的账本,省掉对账的繁琐工作,交易可以做到接近实时的校验和确认、自动结算,同时监管者可以利用密码学的安全保证来审计不可篡改的日志记录。
R3联盟将开发Corda分布式账本来实现未来愿景。Corda的名字来源有两个,该名字前半部分听起来像accord(协议),后半部分来自于chord(弦,即圆上两点间最短的直线)的定义。这个圆就代表R3联盟中的银行机构。从目前公开的资料来看,Corda具有以下特点:
数据不一定要全局共享,只有满足合法需求的一方才能在一个协议里访问数据;
Corda不用一个中心化的控制就可以编排联盟成员的工作流;
Corda对联盟成员之间的每笔交易形成共识,而不是在联盟机构的系统层面形成共识;
Corda的设计直接支持监管者监督和合规性监控;
交易由参与交易的机构进行验证,而不会报告与交易无关的机构;
支持不同的共识机制;
明确记录智能合约与用书面语言撰写的法律文件之间的关联;
采用工业标准的工具来构建Corda平台;
不设虚拟货币。
Corda平台注重互操作性和渐进部署,不会将保密信息发布给第三方。一个机构可以和对手机构看到一组协议,并可以保证对手机构看到的是同样内容,同时报送给监管机构。Corda包括共识、校验、独一性、永恒性和认证等功能。
3.?私有链
私有链则仅在私有组织使用,区块链上的读写权限、参与记账权限按私有组织规则来制定。私有链的应用场景一般是企业内部的应用,如数据库管理、审计等。也有一些比较特殊的组织情况,比如在政府行业的一些应用:政府的预算和执行,或者政府的行业统计数据,这个一般来说由政府登记,但公众有权力监督。私有链的价值主要是提供安全、可追溯、不可篡改、自动执行的运算平台,可以同时防范来自内部和外部对数据的安全攻击,这个在传统的系统是很难做到的。根据资料[1]的解读,央行发行数字货币可能就是一种私有链。和联盟链类似,私有链也是一种许可链。
币科学(Coin Science)公司推出供企业建立私链的多链(Multichain)平台。它提供保护隐私和权限控制的区块链平台,来克服在金融行业里碰到的推广区块链技术的障碍。多链的目标有以下3个:
1)保证区块链上的活动只能由选择的参与者看到;
2)引入机制来控制哪些交易是被允许的交易;
3)提供安全的挖矿机制,同时不需要工作量证明以及与其相关的成本。
多链把挖矿权限制在一组实名的矿工范围,解决了一直困扰私有链解决方案中的一方垄断挖矿过程的问题。它的解决办法是限制在同一个时间窗口同一矿工能产生的区块链数。不像比特币那样只支持一条区块链,多链可以方便地配置多条区块链,并让用户同时用多条链。这样的话,机构用户可以让管理员配置区块链而不需要由区块链专业开发者来做。
多链让用户在一个配置文件中配置区块链的所有参数,这些参数包括:
区块链的协议,例如是私有链还是像比特币那样的公共链;
目标区块产生时间,例如1分钟;
权限,例如所有人能连接,只有一些人能发送或接收交易;
挖矿的不同形式(只适合于私有链);
建立、移除管理员和矿工所需要的共识的程度,以及在建立期不需要强制执行的期限(只适合于私有链);
矿工的报酬,例如每区块50个币,然后每210?000个区块减半付酬;
邻节点连接和JSON RPC API的IP端口,例如8571、8570;
允许的交易类型,例如paytoaddress、paytomultisig、paytoscripthash等;
最大的区块大小,例如1MB;
每个交易的最大元数据(OP_RETURN),例如4KB。
多链在节点的“握手”连接过程如下:
1)每个节点提供它的公共地址,使其他节点能将它的地址包括在允许连接的清
单中;
2)每个节点验证邻节点的地址是在它的授权连接的节点清单里;
3)每个节点发一个盘问(Challenge)消息给其他节点;
4)每个节点发回一个回复盘问信息的签名,证明拥有他们的对应公共地址的私钥;
5)如果双方对对方回复不满意,可随时中断连接。
在多链里,所有的权限的授予和回收都是通过包含特殊元数据的网络交易来实现的。找到创世区块的矿工被自动授予所有的权限,包括管理其他用户的管理员权限。管理员通过发交易给其他用户,并在交易的输出中包含授权用户的地址以及授权信息的元数据来给其他用户授予相应的权限。当要改变其他用户的管理和挖矿权限的时候,一个额外的限制条件是要由现有的管理员投票来决定。这些管理员的投票需要登记在不同的交易中,只有当足够的共识形成之后才能通过改变。
多链在很多方面的设计是为了使得用户在私链和比特币区块链能够进行双向迁移。多链是基于比特币核心的一个分叉。所有的对比特币的代码改变都是本地化的改变。未来比特币的升级功能可以并入多链的本地代码。它基于比特币的协议、交易和区块链架构,只是在握手协议上有所改变。其他的功能是通过元数据,同时改变交易和区块的验证规则来实现的。在接口方面与比特币完全兼容,所有的新功能通过新的命令来提供。它可以做成普通比特币网络的一个节点。
多链提供一个在企业内快速部署私链的解决方案。可以用于如去中心化交易所、数据库同步、货币结算、债券发行和P2P交易、消费行业积分奖励机制等场景。
4.?侧链
比特币主要是按其设计者中本聪的思想设计的一个虚拟货币系统,虽然很成功,但是其规则已经相对固定,很难在比特币上做大的修改,因为这些修改会引起分叉,影响现有的比特币用户。因此,要在比特币平台上做创新或扩展是比较困难的。一般来说,大部分代币系统是通过用比特币平台做基础,重构一条区块链,然后在上面使用新的规则发新的虚拟货币。这就是目前大部分代币的做法。然而这些代币系统要从无到有得到人们的价值认可是非常困难的,通常的办法是与比特币挂钩,相当于用比特币作为储备来发行代币,这样就可以完成代币的货币价值认可的过程。但随之而来的问题是,如何自动保障代币和比特币的挂钩呢?因为虚拟货币的一个特点就是价格波动非常大,一般人都不愿意持有波动大、流动性差的代币。一个直接的想法就是通过比特币平台和代币平台的整合来做到实时的挂钩。
2014年,亚当·贝克(Adam Back)等作者发表了一篇论文,题目是《Enabling Blockchain Innovations with Pegged Sidechains》,中文意思是“用与比特币挂钩的侧链来提供区块链创新”。其核心观点是“比特币”的区块链在概念上独立于作为资产的比特币。他希望通过技术能支持在不同的区块链上转移资产,这样新的系统可以重用原先的比特币。他提出一个侧链(Side Chains)的概念。所谓侧链,就是能和比特币区块链交互,并与比特币挂钩的区块链。贝克列出了侧链的一些属性:
一个用户在一条链上的资产被转移到另一条链上后,还应该可以转移回到原先链上的同一用户名下。
资产转移应该没有对手卷款逃跑的风险,也就是不诚实的用户没能力阻碍资产转移的发生。
资产的转移必须是原子操作,也就是要么全发生,要么不发生。不应该出现丢失资产或欺诈性增加资产的情况。
侧链间应该有防火墙。一条侧链上的软件错误造成链上资产的丢失或增加不会影响另一条链上的资产的丢失或增加。
即使在资产的转移过程中发生区块链的重组,也不应出现问题。任何因区块链重组造成的中断,应该局限在本条侧链上而不应影响其他区块链。通常侧链之间最好能相互独立,用户可以从其他链条提供数据。只有当存在明确的侧链的共识规则时才需要去检查另一条侧链来对其验证。
用户不应需要跟踪不经常使用的侧链。
比特币是大家公认的公共链,是很多代币的基础。但比特币的设计规则决定了比特币有一定的局限,例如平均每10分钟出一个区块,每个区块1MB大小限制,这使得大概每秒才能确认7笔交易,这种交易速度而在很多场景下不能满足业务需求。因此,通过侧链来提升效率,扩展比特币功能是一个非常有效的做法。比如,闪电网络把很多交易放在侧链,只有在做清算时才用上主链,这样一来可以极大地提升交易速率,又不会增加主链的存储负担。
5.?互联链
如图1-2所示,针对特定领域的应用可能会形成各自垂直领域的区块链,这些区块链会有互联互通的需求,这样这些区块链也会通过某种互联互通协议连接起来。与互联网一样,这种区块链上的互联互通就构成互联链,形成区块链全球网络。
图1-2 区块链网络示意图
1.1.4 区块链价值与应用
根据各个区块链采取的技术组合不同,形成的区块链特点也大不相同。但是需要指出的是,区块链技术是一揽子技术,可以根据业务的需要进行有针对性的组合和创新。
总体来说,去中心化信用机制是区块链技术的核心价值之一,因此区块链本身又被称为“分布式账本技术”“去中心化价值网络”等。自古以来,信用和信任机制就是金融和大部分经济活动的基础,随着移动互联网、大数据、物联网等信息技术的广泛应用,以及工业4.0等新一代工业革命的开启,网络空间的信用作为数字化社会的基石的作用显得更加重要。传统上,信用机制是中心化的,而中心化的信任和信用机制必然导致中心化机构成为价值链的核心,也容易引发问题。而区块链技术则首先在人类历史上实现了去中心化的大规模信用机制,在消除中心机构“超级信用”的同时,保证信用机制安全、高效地运行。
具体来看,区块链的颠覆性价值至少包括以下5个方面。
1)简化流程,提升效率。由于区块链技术是参与方之间通过共享共识的方式建立的公共账本,形成对网络状态的共识,因此区块链中的信息天然就是参与方认可的、唯一的、可溯源、不可篡改的信息源,因此原来许多重复验证的流程和操作就可以简化,甚至消除,例如银行间的对账、结算、清算等,从而大幅提升操作效率。
2)降低交易对手的信用风险。与传统交易需要信任交易对手不同,区块链技术可以使用智能合约等方式,保证交易多方自动完成相应义务,确保交易安全,从而降低对手的信用风险。
3)减少结算或清算时间。由于参与方的去中心化信任机制,区块链技术可以实现实时的交易结算和清算,实现金融“脱媒”,从而大幅降低结算和清算成本,减少结算和清算时间,提高效率。
4)增加资金流动性,提升资产利用效率。区块链的高效性,以及更短的交易结算和清算时间,使交易中的资金和资产需要锁定的时间减少,从而可以加速资金和资产的流动,提升价值的流动性。
5)提升透明度和监管效率,避免欺诈行为。由于区块链技术可以更好地将所有交易和智能合约进行实时监控,并且以不可撤销、不可抵赖、不可篡改方式留存,方便监管机构实现实时监控和监管,也方便参与方实现自动化合规处理,从而提升透明度,避免欺诈行为,更高效地实现监管。
区块链的创新性最大的特点不在于单点技术,而在于一揽子技术的组合,在于系统化的创新,在于思维的创新。而正是由于区块链是非常底层的、系统性的创新,区块链技术和云计算、大数据、人工智能、量子计算等新兴技术一起,被认为是最具变革性的新兴技术之一。其中,金融服务领域是即将被颠覆的关键领域之一,除此之外,区块链还可以被广泛应用于物联网、移动边缘计算等去中心化控制领域,以及智能化资产和共享经济(如自动驾驶汽车、智能门锁+租赁)等一系列潜在可应用的领域。下面我们重点介绍几类区块链变革金融服务的场景。
(1)金融领域的结算和清算
以金融领域的结算和清算为例,全球每年涉及各种类型的金融交易高达18万亿美元。如图1-3所示,由于交易双方互不信任,因此金融机构需要通过处于中心位置的清算结构来完成资产清算和账本的确认。这类涉及多个交易主体且互不信任的应用场景就非常适合使用区块链技术。原则上,可以直接在金融之间构建联盟链,那么机构之间只需要共同维护同一个联盟区块链,即可实现资产的转移和交易。
图1-3 区块链去中心化金融服务示意图
(2)数字货币
货币是一种价值存储和交换的载体,过去都是由中央法定机构集中发行的。以比特币为例,正是由于其非中心化的信任机制,虽然先后经历多次交易所倒闭、“虚拟货币”非法使用被查抄、多个政府禁止使用等危机,但比特币经受住了所有这些考验,目前仍能稳定运行。比特币的出现和稳定运行,可以说完全颠覆了人们对于货币的认识。相信区块链技术或者说分布式账本技术会在数字货币技术体系中占据重要地位。
(3)跨境支付
另一个区块链可颠覆的金融服务就是跨境支付。通常跨境支付到账时间长达几天甚至一个星期。除此之外,跨境支付需要双边的用户都向当地银行提供大量开户资料和证明,以配合银行的合规性要求,参与交易的银行和中间金融机构还需要定期报告,以实现反洗钱等其他合规性要求。这是一个典型的涉及多方主题的交易场景,区块链技术可以应用在多个环节。区块链技术,一方面可以减少用户重复提交证明材料,提升效率,另一方面可以更好地实现合规、实时性等,大幅提升金融机构的运行效率,提升监管效率。此外,由于区块链技术可以在银行等金融机构之间直接通过区块链实现资金和资产的转移,因此可以去掉高昂的中间费用。此外,还可以结合智能合约等技术,在合约中规定好实施支付的条件,在支付的同时保证义务的实施,提升交易的安
全性。
(4)财产保险
财险是除寿险之外最大的保险。传统上,财险理赔是用户的痛点和成本瓶颈,估计理赔成本的占比至少高达保险公司收入的11%。而且由于理赔过程中用户需要提供大量的资料,客户体验往往非常不友好。由于每个理赔可能会涉及大量的手工操作,因此需要占用大量的人力、物力来进行理赔处理。此外,由于保险公司各自为政,财险理赔还需要对抗保险欺诈。而区块链技术则可以很好地缓解财险理赔的用户痛点,降低理赔成本。首先区块链可以减少客户提供理赔资料和证明的负担,如果资产可以智能化地嵌入智能合约,则资产可具备自动启动理赔流程的能力,甚至可以实现自动化理赔,大幅加速理赔过程,改善客户体验,甚至可以在联盟成员之间进行合理的数据共享,有效地发现和排除保险欺诈。此外,区块链技术的应用可以大幅度减少保险公司对中介代理服务人员的需求,从而大幅度降低运营成本。
此外,区块链还可以广泛应用在物联网、边缘计算、存在性证明等许多领域,读者可以参考《Blockchain:Blueprint for a new economy》一书。此处,特别强调的是关于区块链的应用可能层出不穷,关键还是要理解区块链技术的内涵和变革原理,深刻体会区块链去中心化的系统化思维,从而可以结合自身对相关行业的理解和需求,创造出新的解决方案、新的价值。