第3节
基于共识规则的应用创新:区块链主要理念和技术原理解盘
区块链是一种解决拜占庭将军问题、保证最终一致性的分布式数据库。从数据结构看,区块链是基于时间序列的链式数据块结构;从节点拓扑看,链上节点互为数据备份;从操作上看,区块链提供了非对称加密的公钥、私钥验证和时间戳不可篡改等技术手段来管理分布式账户,全网只有一个实时最终确定状态。
例如,假定有1万台联网计算机分布在世界各地,计算机拥有者互不认识、互不信任,我们需要采用什么技术手段来建设一个可信任环境,实现基于分布式、去中心、自组织的价值交互功能?在这种情况下,区块链可提供解决方案的底层技术。
①基于共同利益的节点构成点对点交互网络,需要遵循共同规则和拥有各自分布式账本,节点间数据交换相当于记账过程;
②节点之间的数据交换过程不可篡改,每次数据交换均有时间戳记录,并且已生成的历史记录不可篡改;
③在规则体系内,每个节点发生的最新数据会同步到每个节点账本,并且会验证最新数据有效性;
④基于少数服从多数原则,网络维护和账本数据可以客观真实地反映数据交互的历史。
区块链发展历程如图1-8所示。
图1-8 区块链发展历程
一、数字世界的“信用”解读
“信用”是现代社会耳熟能详的核心词,指为履行诺言而能够取得的信任,也是通过长时间积累而拥有的信任和诚信度。信用无处不在,难得易失,费十年工夫积累的信用往往由于一时一事不当而失掉言行。
中国历来有重信守诺的传统,例如,《左传·宣公十二年》提到“王曰:‘其君能下人,必能信用其民矣,庸可几乎?’”;《史记·季布栾布列传》提到“得黄金百,不如得季布一诺”。
西方国家同样重视信用。例如,经济学家约翰·劳、麦克劳德、熊彼特等人提出了信用创造论,认为信用创造资本,信用就是货币,通过这种资本扩张即信用量增加与扩展来创造社会财富,繁荣商业,使国民经济具有更大活力。英国哲学家约翰·穆勒认为,相互信任可以弥合人类每一个裂痕。
1.信用与货币
市场经济的本质是信用经济,随着社会分工的深化和细化,以及市场全球化和精细化,信用频繁出现在借贷活动(促进资本增长)和其他市场经济活动中,成为市场经济的基础。
信用经济一词由德国经济学家B.希尔德布兰德(Bruno Hildebrand)提出,他把社会经济发展划分为物物交换为主的自然经济时期、货币媒介交换的货币经济时期和信用为媒介的信用经济时期,而信用经济是社会经济的高级形式。
20世纪30年代初,世界经济危机爆发,西方发达国家先后被迫脱离金本位和银本位制度,纸币不能再兑换金属货币,信用货币(credit money)应运而生,如今世界各国几乎都采用这一货币形态。近90年来,信用货币制度在全球的推行经历了“布雷顿森林体系”[1]和“牙买加体系”[2]两个国际货币制度。
2.信用可计量性
信用是一种行为策略,多年来已有大量评估、评级工具对信用进行计量,主要集中在围绕违约风险建模(如Creditmetrics模型)和围绕公司价值建模(如KMV模型)两个领域。
这里补充说明一下,Creditmetrics模型与KMV模型是国际金融界最流行的两个信用风险管理模型。两者都为金融机构在进行贷款等授信业务时,衡量授信对象的信用状况,分析潜在信用风险,防止集中授信,进而为实现投资分散化和具体授信决策提供量化的科学依据。
尽管信用计量工具林林总总,但失信问题依然层出不穷。人是感性动物,不同社会环境下的行为差异较大,单一基于计算的信用计量工具可操性不强,准确度不高。以征信为例,拥有强大用户行为数据的中国人民银行征信系统、芝麻信用也因缺乏对欠债不还客户的精准评估、识别、预警和风控而无法杜绝此类现象。究其原因,主要是缺乏可以精确计量信用、将信用价值与日常生产生活融合的技术解决方案和生态系统。
3.区块链为信用生态系统提供技术路径
信息论之父克劳德·艾尔伍德·香农(Claude Elwood Shannon)1948年提出比特(bit)这个新单词,将比特作为衡量信息多少的基本单位,用二进制存储信息,解决了“如何使用数学方法定义和测度信息”这一关键问题,引领了后来的计算机、互联网等信息产业的爆发。
既然无处不在的信息可以成功量化,那么同样无处不在的信用也可以用新模型、工具和系统来量化。在具体经济行为中,信用量化价值并非是对参与主体(如某个人、某个企业、某个组织)的存量或者历史信用资产进行评价,而是测度经济行为中的信用行为、可信程度,预测参与主体在经济行为及未来的违约、欺诈概率。违约概率越高,信用水平越低。
从公开透明、时间戳不可篡改、共识规则等技术特点看,区块链是一台信任机器,是在完全不信任节点之间建立信任机制的技术。简单来说,在区块链系统中,成员(节点)的欺诈行为所付出的成本要高于违约潜在收益,成本和收益均可事先精确计算和公开发布,很显然,理性参与者都不会有违约、欺诈的动力。
基于区块链系统,我们可以构建一个简单直接的信用计量模型:
二、区块链共识机制
共识机制是区块链的核心基石以及去中心化、效率、安全的保障,它通过数学算法等相对公平的方式,让分散各处的节点就区块创建、应用、激励和区块链运作等规则达成一致,是节点之间建立信任的基础。
共识是区块链节点达成一致的过程,区块链运作的一致性体现在以下三个方面。
一是最终性(Termination),每个操作进程最终会在有限的步骤内结束,并得出一个全网共识认可的数据值,算法不会无休止地执行。
二是统一性(Agreement),既然是算法得出的数据值,链上所有节点必须同意这个数据值,记录到分布式账本。
三是合法性(Validity),输出的数据值是输入数据按照系统规则生成,那么只要输出的数据值合法,就能够被链上成员记账。
1.拜占庭将军问题[3]
拜占庭将军问题(Byzantine Generals Problem)是莱斯利·兰波特(2013年图灵奖得主)提出的分布式对等网络通信容错的问题。在分布式计算中,不同计算机通过信息交换达成共识,并按照同一套协作策略行动。但有时候系统的成员计算机可能出错而发送错误信息,用于传递信息的通信网络也可能导致信息损坏,使得不同成员基于全体协作策略得出不同结论,从而破坏系统的一致性。拜占庭将军问题被认为是容错性问题中最棘手的问题类型之一。
拜占庭位于今土耳其伊斯坦布尔,是当时东罗马帝国首都。当时的东罗马帝国国土辽阔,为了防御外敌入侵,每支军队比较分散,将军(军队首脑)与将军之间只能靠传令兵传递消息。在战争时期,拜占庭军队所有将军必须达成一致共识,决定是否攻打敌人阵营。但是由于军队中可能存在叛徒和敌军间谍误导将军们的决定,扰乱军队秩序,导致共识结果实际上并不能代表大多数人的意见。在已知有成员谋反的情况下,其余忠诚将军面临在不受叛徒影响下如何达成一致协议的挑战,拜占庭将军问题就此形成。对于忠诚将军来说,并不知道谁是背叛者,所以不能完全相信接收到的命令,必须对命令做出判断。
在比特币出现前,解决分布式系统一致性问题主要是靠莱斯利·兰伯特(Leslie Lamport)提出的Paxos算法及其衍生算法,证明了在将军总数大于3 f,背叛者为f或者更少时,忠诚将军可以达成命令上的一致,即3 f +1≤n false,算法复杂度为0。Paxos类算法仅适用于中心化分布式系统,这种系统没有不诚实节点(不会发送虚假错误消息,但允许出现网络拥堵或宕机出现的消息延迟)。
2.超级账本PBFT算法
1999年,数学家卡斯特罗(Miguel Castro)和利斯科夫(Barbara Liskov)提出了超级账本PBFT算法(Practical Byzantine Fault Tolerance,也称实用拜占庭容错算法),某核心思想是:对于每个收到命令的将军,都要去询问其他人,他们收到的命令是什么,以此来确认命令的真实性。该算法解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降到多项式级,使得拜占庭容错算法在信息系统的应用变得可行。
PBFT共识机制是少数服从多数,根据信息在分布式网络完成所有节点的传播和交换,而后各节点列出所有得到的信息,一个节点代表一票,选择大多数节点的投票结果作为共识方案。PBFT将容错量控制在全部节点数的1/3,即只要有超过2/3正常节点传播接收正确信息,整个系统便可正常运作。PBFT算法的基本流程如图1-9所示。
图1-9 超级账本PBFT算法基本流程
PBFT算法基本流程分为预准备(pre-prepare)、准备(prepare)、提交(commit)三个阶段。图中的C代表客户端,0、1、2、3代表节点编号,打叉的3代表可能的故障节点或者问题节点,图中表现的行为就是对其他节点的请求无响应。0是主节点。
整个过程大致是:
首先,客户端(C)向主节点(0)发起请求,主节点收到客户端请求,会向其他节点(1、2、3)发送pre-prepare消息。其他节点收到了pre-prepare消息,就开始上述三个阶段形成共识的过程。
pre-prepare阶段:其他节点收到pre-prepare消息后,会有接受或者不接受两种选择。不接受情况是收到曾出现过、但内容和之前不一致的信息。
prepare阶段:某个节点同意请求后会向其他节点发送prepare消息。同一时刻不是只有一个节点在进行这个过程,可能有n个节点在进行,因此某个节点可能同时收到多个节点发送的prepare消息。在一定时间内,如果收到超过2/3不同节点的prepare消息,代表prepare阶段已经完成。
commit阶段:prepare阶段完成后,某个节点向其他节点广播commit消息,同理,这个过程中可能有n个节点在进行,因此某个节点可能收到多个节点发来的commit消息,当收到2f+1(f=3)个commit消息后(包括自己),代表大多数节点进入commit阶段,达成共识,于是每个节点就会执行请求,在各自账本写入数据。
上述流程处理完毕后,每个节点会返回消息给客户端。
3.中本聪的解决方案:PoW共识算法
中本聪在比特币中创造性引入“工作量证明机制(Proof of Work,PoW)”,通过增加发送信息成本和降低节点发送消息速率,保证在某个时间内只有一个节点或者较少节点在广播,并在同时附上自己的数字签名,以确保真实性。这个过程就像将军A向其他将军(B、C、D…)发起一个进攻提议,将军B、C、D…看到将军A签名的进攻提议书,如果是诚实将军就会立刻同意进攻提议,而不会发起自己其他意见。这就是比特币网络使单个数据区块(账本)达成共识、取得一致性的方法。
PoW共识算法的核心是解决拜占庭将军问题(分布式网络一致性问题)。工作量证明相当于提高了做叛徒(发布虚假区块)的成本,只有第一个完成证明的节点才能广播区块,竞争难度非常大,需要很高算力,如果广播不成功,前面花费的算力就白白耗费了(算力需要成本)。如果有这样的算力作为诚实节点支撑,诚实节点可以获得很大收益(这是比特币矿工做的工作),降低了做叛徒的动机(造假代价太大),整个系统也因此更稳定。
比特币网络还构筑了“最长链机制”,要求所有节点都遵循一个共识协议,也就是所有保存到本地(矿机、服务器)的区块链必须是本地节点验证通过的最长链。只有最长链的区块才能获得系统承认并得到挖矿奖励。打包区块获得的奖励在该区块上增加99个新区块之后才能使用,也是保证区块链不发生分裂的重要机制。
PoW共识算法具有如下优点。
一是规则较为简单,参与门槛较低,去中心化程度高。哈希函数是散列函数,只能通过穷举法获得计算结果,随机性好,参与者能够公平执行规则,难以存在超级节点不劳而获“挖矿”得到比特币的情况。加之梅克尔树根的设置,哈希函数的解(计算结果)的验证过程也能在全网自动实现。理论上讲,只要具备联网挖矿设备和基本计算机处理能力,人人都可以参与比特币公有链挖矿,无须中心化机构许可和身份审核。
二是可靠性较高。PoW共识算法破解了低门槛分布式P2P网络经常遭遇的“女巫攻击问题”[4],对比特币实施网络攻击需要掌握超过51%的算力,破坏系统的投入极大,所以网络的安全性得到提高。
三是共识达成自动化。节点通过求解哈希函数,区块的产生、验证、共识、广播、记账全过程都是由算力控制,节点之间无须交换其他信息也能达成共识。
4.新共识算法
比特币等加密数字货币并没有和实际的生产生活价值对标,由于工作量证明机制(挖矿)会造成巨大的电力消耗,引发人们对能源大量消耗的担忧,促使研究人员探索解决一致性(共识)问题新机制,陆续推出了权益证明机制(Proof of Stake,PoS)、股份授权证明机制(Delegated Proof-of-Stake,DPOS)、Pool验证池等新共识算法。
三、区块链涉及密码学
密码学是研究如何隐秘传递信息的学科,它在编码与破译的斗争实践中逐步发展起来,并随着先进科学技术的应用,成为一门综合性尖端技术的科学,与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛密切的联系。著名密码学者Ron Rivest(2002年图灵奖获得者)解释道:“密码学是关于如何在敌人存在的环境中通信的科学技术。”
密码学的首要目的是隐藏信息含义,而并非隐藏信息的存在。密码是通信双方按约定法则进行信息特殊变换的一种重要保密手段。20世纪70年代以前,密码学主要应用在政府、军事等领域。随着数据加密标准、公钥加密算法等技术的创新,密码学应用成本降低,并广泛应用于公众日常生活。
公钥密码学出现之前,几乎所有密码体制都是基于替换和置换这些初等方法。公钥密码学与之前的密码学完全不同。其一,公钥算法基于数学函数,而不是基于替换和置换;其二,公钥密码是非对称的,使用两个独立密钥,对消息的保密性、密钥分配和认证领域有着重要意义,一系列非对称加密算法陆续出现(算法流程如图1-10所示)。公钥密码体制根据所依据的数学难题一般分为三类:大整数分解问题类、椭圆曲线类、离散对数问题类。
公钥算法依赖于一个加密密钥和一个与之相关的解密密钥,并具有如下特点:一是仅根据密码算法和加密密钥来确定解密密钥,在计算上不可行;二是RSA等算法可以实现两个密钥的任何一个用来加密,另一个用来解密,通信双方无须交换密钥,也能建立保密通信。
图1-10 非对称加密算法流程图
1.哈希函数
哈希函数(Hash Algorithm)又称哈希算法、散列算法、杂凑算法,是一种以较短的信息来保证文件唯一性的标志,这种标志与文件每一个字节都相关,而且难以找到逆向规律。当原有文件发生改变,其标志值也会发生改变,从而告诉文件使用者当前文件已经不是之前文件。目前,哈希函数已成为密码学的基础知识和基础算法,在加密数字货币、供应链金融、支付结算、数字票据、征信等区块链金融领域应用广泛。
哈希函数具有如下特性。
①输入可为任意大小的字符串;
②产生固定大小输出;
③能进行有效计算,对于特定输入字符串,在合理时间内,可以算出哈希函数输出。对应n位字符串,其哈希值计算复杂度为O(n)。
另外,要使得哈希函数达到密码级高安全性,还要具备三个附加特性:碰撞阻力(collision-resistance)、隐秘性(hiding)、谜题友好(puzzle-friendliness)。
(1)碰撞阻力
加密哈希函数要求具有碰撞阻力(免碰撞),即不会出现输入x≠y,但是H(x)=H(y)的情况,也就是强抗冲突性。哈希值的碰撞阻力特性使其值可以作为数据区块信息摘要(message digest)。即使整个文件非常大,信息摘要(哈希值)也是长度固定的,这极大降低了对分布式账本的存储要求,降低了该项技术的应用门槛。
(2)隐秘性
哈希函数具有隐秘性,对于一个给定输出结果H(x),想要逆向推出输入x,在计算上不可能。如果哈希函数具有碰撞阻力和隐秘性,从安全性上讲,承诺任务(commitment)则是有效的。
(3)谜题友好
对于任意n位输出值y,假定k选自高阶最小熵分布,如果无法找到一个可行方法,在比2n小很多时间内找到x,保证H(k‖x)=y成立,那么我们称哈希函数为谜题友好。
最小熵是用于测试结果可预测性的手段,高阶最小熵描述了分布数据(如随机变量)的分散程度。在这样的分布中取样时,很难判定取样倾向,降低了非算法干扰。例如,如果r是从长度为256位的字符串随意选出的,那么任意特定字符串被选中的概率为1/2256,这是一个小到几乎可以忽略的取值。
2.SHA-256哈希算法
安全散列算法(Secure Hash Algorithm,SHA)是由美国国家安全局(NSA)设计、美国国家标准与技术研究院(NIST)发布的多密码散列函数,包括SHA-1、SHA-224、SHA-256、SHA-384、SHA-512,主要适用于数字签名。后4个哈希散列函数又并称为SHA-2。
SHA-256是比特币等加密数字货币应用较多、输出值为256位的哈希函数。SHA-256利用MD(Merkle-Damgard)变换,把一个固定输入、防止碰撞的压缩函数变换成一个接受任意长度输入的哈希函数。通过初始化向量(初始变量)补位,可以把输入编译成512比特的整数倍。
3.数字签名
数字签名(digital signatures,也称公钥数字签名、电子签章)是一种使用公钥加密等技术手段、用于鉴别数字信息的方法,从技术上保证信息传输的完整性、发送者身份认证,防止交易抵赖发生。一套数字签名通常定义两种互补运算,一个用于签名,另一个用于验证。只有信息发送者才能产生别人无法伪造的一段数字串,这段数字串同时也是对发送者发送信息真实性的有效证明。数字签名基本流程如图1-11所示。
图1-11 数字签名基本流程
4.椭圆曲线数字签名算法
椭圆曲线加密算法(Elliptic Curve Cryptography,ECC)于1985年由Neal Koblitz和Victor Miller提出,是一种基于椭圆曲线数学理论的非对称加密算法。相比RSA非对称加密算法(第一个能同时用于加密和数字签名的算法),ECC的优势是可以使用更短的密钥,并实现与RSA相当或更高的安全性。据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密。
椭圆曲线可用如下二元三阶方程表示:y2=x3+ax+b,其中a、b为系数。形状如图1-12所示。
图1-12 椭圆曲线示意图
椭圆曲线数字签名算法因高安全性而广泛应用在比特币、以太坊、超级账本等区块链项目,基本流程如下。
设私钥、公钥分别为k、K,即K=kG,G为椭圆曲线上某个点。
私钥签名:
①选择随机数r,计算点rG(x,y)。
②根据随机数r、消息M的哈希值h、私钥k,计算s=(h+kx)/r。
③将消息M和签名{rG,s}发送给接收方。
公钥验证签名:
①接收方收到消息M和签名{rG=(x,y),s}。
②根据消息求哈希值h。
③使用发送方公钥K计算hG/s+xK/s,并与rG比较,如相等则验证签名成功,即hG/s+xK/s=hG/s+x(KG)/s=(h+xk)G/s=r(h+xk)G/(h+kx)=rG
另外,比特币使用了基于参数为secp256k1的椭圆曲线数字签名算法,包含私钥和公钥,交易发出方用私钥进行签名,并将签名与原始数据发送到整个比特币网络,网络所有节点则用公钥对交易有效性进行验证。该算法保证了交易是由拥有对应私钥的人所发出。
5.对称加密算法
对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法,加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。在大多数对称加密算法中,加密密钥和解密密钥相同,所以也称这种加密算法为单密钥算法,要求信息发送方和接收方在安全通信之前,商定一个密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高,不足之处是交易双方都使用同样的钥匙,安全性得不到保证。
值得关注的是,对称加密算法(Advanced Encryption Standard,AES)成为美国数据加密标准,从而被广泛应用。比特币客户端使用AES算法中的AES-256-CBC来加密钱包文件。用户设置密码后,采用用户设置密码通过AES算法对钱包私钥加密来确保客户端私钥安全,从而保证用户数字资产的安全,因此AES也被称为分组密码、块密码。其算法流程如图1-13所示。
图1-13 AES算法流程
四、区块链的结构和组成
1.哈希指针
哈希指针也可以被形象地描述为指向数据存储位置的指针,是一种数据结构,同时也是位置数据的哈希值。跟普通指针相比,哈希指针不但可以告诉用户数据的存储位置,还可以验证数据是否被篡改过。
通过哈希指针建一个链表,这个数据结构就还被称为区块链。普通链表有一系列区块,每个区块既有数据也有一个指向上一个区块的指针。而在区块链中,指向上一个区块的指针是哈希指针。所以每个区块不仅能告诉我们上一个区块的值在哪里,还包含了其哈希值。如图1-14所示。
图1-14 哈希指针
通过哈希指针H(),不但可以定位到对应数据块位置,而且还可以知道对该数据块进行哈希操作之后的哈希值是什么,所以一旦数据块的数据发生改变,对其做哈希操作之后的哈希值必然和之前不同,于是通过哈希指针也就可以得知数据是否被篡改。基于哈希指针的区块链结构如图1-15所示。
图1-15 基于哈希指针的区块链结构
通过后一个区块哈希指针,不仅能找到前一个区块,而且能够防止有人篡改数据。如果有人试图修改某个区块的数据,那么它后面那个区块的哈希指针是不能够和篡改数据后的区块生成的哈希指针相匹配的。因此,只要我们保存好链表中最后那个哈希指针,就一定能发现是否有人篡改了区块数据。基于哈希指针的区块链防篡改性能如图1-16所示。
图1-16 基于哈希指针的区块链防篡改性能
2.梅克尔树
梅克尔树(Merkle trees)能够构成区块链的基本组成部分,通常包含区块体的底层(交易)数据库、区块头的根哈希值(即Merkle根)以及所有沿底层区块数据到根哈希的分支。梅克尔树的运算过程一般是将区块体数据进行分组哈希,并将生成的新哈希值插入梅克尔树,如此递归直到只剩最后一个根哈希值作为区块头的Merkle根。最常见的梅克尔树型区块链是比特币采用的二叉梅克尔树,每个哈希节点总是包含两个相邻数据块或其哈希值。
梅克尔树的特点如下。
①梅克尔树是一种树,大多数是二叉树,也可以是多叉树,无论是几叉树,都具有树结构的所有特点;
②梅克尔树叶子节点value是数据集合的单元数据或者单元数据Hash。非叶子节点value是根据下面所有叶子的节点值,然后按照Hash算法计算得出。
梅克尔树有诸多优点,其一,极大提高了区块链的运行效率和可扩展性,使得区块头只需包含根哈希值而不必封装所有底层数据,使哈希运算能够高效运行在计算机、笔记本、智能手机、物联网等设备上;其二,梅克尔树支持“简化支付验证”协议,在不运行完整区块链网络节点的情况下,能够对交易数据进行验证。梅克尔树结构如图1-17所示。
图1-17 梅克尔树结构(二叉树)
3.数据区块
《2018—2023年中国大数据行业发展与投资机会分析报告》数据显示,2017年中国大数据行业市场规模为3615亿元,2018年将近6000亿元。普通人作为数据生产者,随着互联网的普及,几乎无时无刻不在贡献自身数据,但这些数据散落在互联网各个角落,个人无法直接了解和获得自身数据,也难以支配使用数据并产生数据的价值收益。
区块链可以对数据进行加密存储以保证其安全性,让每个人看到自己在各个场景产生的数据,并且在未经本人授权以情况下,第三方无法随意查看、处置和使用。通过这种技术手段,数据所有权回归数据生产者,既可以保护用户隐私,又解决了“信息孤岛”问题。
以比特币网络为例,每个“挖矿”节点都基于最新区块生成下一个区块,同时将网络未确认的合法交易包含进去。在完成工作量证明后,将最新区块广播到全网,同时获得区块奖励(Token)。由于只有最长链上的区块才能够获得奖励,所有节点在利益驱使下共同记账形成唯一的最长链结果,从而达成分布式账本系统共识一致性,同时也保证了整个系统的可靠安全。
比特币网络的合法交易都会被打包成一个区块,包含到比特币公开账本里。区块由包含元数据的区块头和紧跟其后的交易列表构成。区块头大小为80字节,由4字节的版本、32字节的上一个区块的哈希值、32字节的梅克尔树哈希值、4字节的时间戳(当前时间)、4字节的当前难度值、4字节的随机数等组成。区块所包含的交易列表则附加到区块头后面。比特币网络约定每个区块的第一笔交易是“创币”(Coinbase)交易,这是一笔为了让矿工获得奖励和手续费的特殊交易。区块数据结构见表1-2。
表1-2 区块数据结构
案例 网易星球:利用区块链技术让数据产生价值[5]
网易星球是网易旗下首款区块链产品,它通过区块链加密存储技术帮助个人构建专属数字身份,生成数据护照。数据护照记录用户在电商、金融、游戏、娱乐、健康五大生活场景产生的行为数据,并实时上链,每个系统各自形成闭环。用户在五大数据系统内进行购物、游戏、阅读、听音乐、看资讯等相应行为即会产生行为数据,数据维度越丰富,获得的数字权益也越丰富。用户还可以自主选择将数据授权给数据场景方(网易等商业机构)从而获得价值,实现让数据产生者成为数据所有者、支配者和收益者。
网易星球还开启了数字钱包功能。在生态内的交易行为、黑钻[6]数量等信息都会存储在数字钱包(DAPP)中。数字钱包提供用户区块链地址,持有人可以通过区块链浏览器查询其他用户,以及网易星球所有上链交易信息,比如用户黑钻增减情况、全网交易总量、正在处理的交易笔数等。
2018年9月,网易区块链服务平台NBaaS上线,为企业提供区块链商业场景应用技术服务。以网络游戏《逆水寒》为例,游戏中增加了挖矿功能,当玩家等级达到60级,并且拿到采矿许可证后,就可在游戏中的自家庄园挖矿,获取数字资产(伏羲通宝),并永久收藏在个人账户,以便未来在网易其他游戏通兑通用。
这种机制改变了传统网络游戏彼此割裂、抢用户、同质化等恶意竞争,实现了网络游戏之间的用户共享和导流,扩大了用户持有游戏数字资产的应用场景,增加了用户黏度。对于网易这类游戏运营商而言,也可以利用区块链技术将独立开发、合作开发、自营、联营、加盟的各种网络游戏整合起来,实现用户、服务、运营、资金、数字资产等要素资源和消费场景、应用场景的融通共享,来扩大业务和营收规模。
4.时间戳
时间戳的作用在于证实特定数据于某个特定时间确实存在,从而证明区块链的数据和交易的真实性。如同记录在区块链的其他数据一样,时间戳一旦记录上链,也就无法篡改。例如,比特币网络的时间戳服务器对以区块形式存在的一组数据实施随机哈希处理,加上时间戳(代码),并将该随机哈希值进行全网广播。每个时间戳将前一个时间戳纳入其随机哈希值,每个随后的时间戳都对之前时间戳进行增强(Reinforcing),以此类推,就可以形成一个链条(Chain)。时间戳系统如图1-18所示。
图1-18 时间戳系统
5.P2P网络
P2P(Peer to Peer)网络主要应用于文件共享、点对点通信、点对点交易等领域。例如,比特币被设计为点对点加密数字货币交易系统,运行在每台计算机的比特币程序可以认为是比特币P2P网络的一个节点。每个节点彼此公平、对等,互联互通,共同组成比特币网络,并且不存在特殊(中心)节点。
我们以比特币网络为例分析P2P网络的主要功能。
①新交易广播到全网节点,每个节点都会收到交易信息。
②每个(挖矿)节点将新交易收集到节点内存,自编程并组装区块数据。
③每个(挖矿)节点按照规则尝试在自己的区块找到一个具有足够难度的工作量证明。
④(挖矿)节点找到工作量证明,把有效区块数据向全网广播。
⑤只有所有节点对包含在该区块中的交易及工作量证明验证有效时,其他节点才会认可该区块的有效性。
⑥其他(挖矿)节点表示接受该区块,并在该区块末尾制造新区块,以延长整个区块的链条。
在比特币网络中,交易和区块信息传播通过洪水填充算法[7](Flood Fill Algorithm)进行。每个节点在收到信息后,向与它相连的所有节点推送该信息。下一个收到信息的节点继续这个过程,信息很快会像洪水一样覆盖全网络,传播速度呈指数增长。
需要注意的是,新交易广播往往不需要抵达P2P网络全部节点,只要交易信息能够抵达规则要求的最低限数量节点,就会被P2P网络认为交易合法和交易确认,并很快会将新交易信息整合到新区块。同时,P2P网络对部分节点丢弃信息进行容错处理,如果某个节点没有收到加入新交易信息的区块,该节点很快会发现自己缺失了该区块,就会向区块链发出下载该缺失区块的请求并补齐。
6.智能合约
智能合约(Smart contract)最早由尼克·萨博(Nick Szabo)在1995年提出,是一种以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方参与的情况下进行互联网可信交易,这些交易可追溯且不可篡改。智能合约的目的是提供优于传统合约的线上签约、履约的安全方法,减少与合约相关的交易成本。
智能合约负责将区块链系统的业务逻辑、商业逻辑以代码形式实现、编译和部署,完成既定规则条件的触发和自动执行,以最大限度减少人工干预。当然,正是由于签约、执行的自动化,同时缺乏区块链以外的第三方监管和强公信力第三方机构的参与保证,加之网络黑客的攻击,智能合约也是区块链安全风险高发的领域。举例说明,图1-19所示为信和云智能合约平台架构。
图1-19 信和云智能合约平台[8]架构
五、侧链技术[9]
为方便数字资产在不同区块链间相互转移,实现区块链的扩展,侧链技术(Sidechain)应运而生。2014年10月,计算机专家Adam Back开发团队发布了侧链白皮书,提出了一种新技术——楔入式侧链,以实现不同区块链间数字资产的互相转移。
在主链基础上,通过对侧链添加交易隐私保护、智能合约等新功能,用户能够访问侧链新型服务,并且对现有主链工作并不造成影响。另外,侧链也提供了一种安全协议升级机制,在侧链发生网络攻击等灾难性问题时保证主链安全。
侧链通过双向锚定技术(Two-way Peg,也是侧链的技术基础),可以实现将数字资产在主链暂时锁定,同时将等值数字资产在侧链释放。同样,当等值数字资产在侧链被锁定时,主链数字资产也可以被释放。双向锚定实现的最大难点是主链和侧链要相互兼容,侧链不能对主链的工作造成影响。
侧链的实现方式分为以下几类。
1.单一托管模式
在这种模式下,将数字资产发送到某个主链的单一托管方(类似于交易所),当单一托管方收到相关信息后,就会在侧链激活相应数字资产,不过该解决方案的最大问题是需要高公信力的中心化第三方机构参与。如果主链是去中心化机制,与侧链的中心化机构沟通协调的难度会较大。
2.联盟模式
利用公证人联盟的多重签名对侧链数字资产的流动进行确认。在这种模式下,如果要想盗窃主链冻结的数字资产就需要突破更多机构(公证人联盟)构筑的防火墙,但是侧链的安全仍然取决于公证人的联盟诚信度。
3.SPV模式
SPV(Simplified Payment Verification)模式是一种用于证明交易存在的方法,通过少量数据就可验证某个特定区块中交易是否存在,主要问题是需要对主链软分叉。在这种模式下,用户在主链将数字资产发送到主链的一个特殊地址,锁定在主链拥有的数字资产,随后创建一个SPV证明并发送到侧链。此时,一个对应带有SPV证明的交易会出现在侧链,同时验证主链上的数字资产已经被锁住,然后就可以在侧链打开等值的另一种数字资产,其使用和变化会在稍后会被送回主链。当该数字资产返回主链时,整个过程会再次重复。SPV模式的主链、侧链技术框架如图1-20所示。
图1-20 SPV模式的主链、侧链技术框架
4.驱动链模式
驱动链将被锁定数字资产的监管权发放到矿工手上,允许矿工们投票何时解锁数字资产和将解锁的数字资产发送到何处。矿工观察侧链状态,当他们收到来自侧链的要求时,会执行协调协议以确保他们对要求的真实性达成一致。诚实矿工在驱动链参与的程度越高,整体系统安全性也就越大。同样,驱动链也需要对主链进行软分叉。
5.混合模式
混合模式是在主链和侧链使用不同解锁方法,例如在侧链使用SPV模式,在主链则使用驱动链模式。同样,混合模式也需要对主链进行软分叉。
六、区块链的主要类型
区块链目前分为以下三类:公有链(Public Blockchain)、私有链(Private Blockchain)、联盟链(Consortium Blockchain)。三者的主要区别在于,公有链对所有人开放,任何人都可以参与;联盟链只对特定组织团体开放;私有链仅对单独的个人或实体开放。
1.公有链
公有链(Public Blockchain)是指任何人都可以随时进入系统读取数据、发送可确认交易、竞争记账的区块链,通常被认为完全去中心化,因为理论上没有任何个人或者机构能够控制或篡改链上数据读写。公有链一般会通过代币(Token)机制鼓励参与者竞争记账、完成能够量化和产生价值的工作任务,来确保数据安全性和网络活跃度。比特币、以太坊都是典型的公有链。
公有链特点如下。
一是保护用户免受开发者不良影响。通过权限、规则设置,公有链的程序开发者无权干涉用户在链上的正常活动。
二是访问门槛低。任何拥有足够技术能力的人都可以访问公有链,甚至一台联网计算机就能满足访问条件。
三是所有数据默认公开。不过,很多公有链参与者都隐藏真实身份,不愿意将自己完全曝光。
公有链存在如下主要问题。
一是激励问题。为促使全网节点提供资源,自发维护整个网络,公有链需设计激励机制,来保证全网持续健康运行。但一些公有链(如比特币)的激励机制存在“验证者困境”,即没有获得记账权的节点付出算力验证交易,但没有获得任何激励回报。
二是效率问题。比特币目前平均每10分钟产生1个区块,其工作量证明机制很难缩短出块时间。以太坊等权益证明机制相对可缩短出块时间,但更易产生分叉,所以交易需要等更多节点确认后才被认为安全,无法满足大多数企业级的应用需求。
三是安全问题。包括来自外部机构的攻击、来自内部参与者的攻击、组件失效、算力攻击等。
四是隐私问题。公有链传输和存储的数据公开可见,一般只是通过“伪匿名”方式对交易双方进行一定隐私保护。对于某些涉及大量商业机密和利益的业务场景来说,数据暴露不符合业务规则和监管要求。
五是最终确定性(Finality)问题。公有链共识算法无法提供最终确定性,只能保证一定概率近似。例如,一笔比特币交易在经过2小时后可达到最终确定性为99.9999%,对一些高标准商业场景和法律环境的可用性仍然较差。
案例 公信链:建设数据经济生态系统的探索和挑战
公信链(GXChain)是提供企业间、个人间、企业与个人之间的数据管理、共享、交易和交换服务的公有链,它使用DPoS和PoCS实现区块链记账和数据交换共识机制。
DPoS(Delegated Proof of Stake,股份授权证明机制、受托人机制):每一个持有代币(Token)的用户进行投票,由此产生101个超级节点,超级节点的权利完全相等。如果超级节点不能履行职责(如没能产出数据区块),则会被除名,网络会选出新的超级节点来取代之。
PoCS(Proof of Credit Share,信用贡献证明机制、共享交换平衡机制):用来解决数据体量悬殊企业之间共享交换数据不平衡的问题。联盟成员每完成一笔数据交易就计算一次PoCS,贡献值根据交易次数计算。PoCS低的联盟成员要付出比基准手续费更高的费用进行数据交换。
公信链技术架构如图1-21所示。
图1-21 公信链技术架构
据公信链白皮书描述,布洛克城是公信链第一个移动端应用DAPP,用于解决个人数据的管理和共享,实现用户数据价值化。布洛克城允许用户创建区块链身份和授权、管理个人数据,激励机制鼓励用户多维度、更全面地上传基础数据和行为数据。以保护用户的隐私安全,解决用户间的信任问题,布洛克城开发团队不会缓存用户数据。在用户授权的情况下,这些数据可被应用到消费、投资、支付等场景来产生实际价值。
公信链还开发了面向企业用户的去中心化数据交易所,具有不缓存用户数据、保护用户隐私和数据产权、遏制造假、支持双向匿名交易等特点,可被应用于网络贷款、消费金融等领域,以及政府、银行、保险、医疗、物流等有数据交换需求的机构。
根据我们调研,在布洛克城DAPP应用中,用户通过授权公信宝(运营团队)获取个人信息而获得“挖矿”算力和Token奖励(公信币),这些Token奖励能换成现金,相当于公信宝运营团队付费购买了用户信息。由于用户难以直接提供多维度数据,公信宝可能利用爬虫软件在网上爬取用户数据,需要第三方平台授权和允许,否则爬取操作就涉嫌违规。另外,公信宝利用区块链技术收集用户信用数据,而公信宝官网展示的合作方有现金巴士、拍拍贷、轻易贷等现金贷平台、P2P网贷平台,二者之间的关联交易如何确保“技术不作恶”和用书数据得到价值体现也值得关注。
2.私有链
私有链(Private Blockchain)是指链上数据写入权限由某个机构控制的区块链,参与节点的资格会被严格限制。由于参与节点有限和可控,相比公有链,私有链往往可实现更快的交易速度、更好的隐私保护、更低的交易成本、不容易被恶意攻击,并且能做到身份认证等监管部门的要求。相比中心化数据库,私有链能够防止机构内单节点(如财会人员)故意隐瞒或者篡改数据,即使发生错误,也能够迅速溯源,并在同时尊重私有链持有机构的隐私。
很多企业倾向于在试水阶段使用私有链技术,它们先将区块链技术、理念、模式推广到企业上下游生态体系。在得到区块链赋能的实惠后,根据业务延展需要再拓展公有链、联盟链。例如,Linux基金会、Gem Health网络等机构的超级账本(Hyperledger project)就是典型私有链。
私有链创建代码举例:
案例 世界银行:利用区块链技术提升债券发行效率[10]
2018年8月,世界银行和澳大利亚联邦银行合作发行第一例区块链债券(Blockchain Offered New Debt Instrument,BONDI),它们使用一条以太坊私有链,将价值1.1亿澳元(7900万美元)的债券(为期两年)卖给7个机构投资者。
澳大利亚联邦银行在其中扮演了承销商角色,该行创新实验室研发的私有链可以实现债券所有权的交易、流转、流通自动化,免除了协调不同债券发行人、投资者的IT系统账本需要,该链通过同步分布式账本实时显示债券所有权信息,投资者可以实时见证和确认购买行为,从而消除了传统模式费时的核对需求,提升了交易效率,降低了发行成本。世界银行的试验表明,基于区块链的债券交易可以将结算时间从数天缩减至几秒。
世界银行的债券评级为AAA级,它每年发行500亿~600亿美元债券支持发展中国家经济。通过应用区块链技术,世界银行降低了承保成本、结算成本及交易对手风险,对于世界银行和发展中国家而言都是多赢的。
澳大利亚是区块链技术应用开发的先行者,拥有完善的金融基础设施,加之国际投资者对澳元普遍熟悉,澳元已成为世界交易量最大的法定货币之一。此前,澳大利亚证交所就宣称将使用美国数字资产控股公司的区块链技术替换原有股票结算清算系统。
3.联盟链
联盟链(Consortium Blockchain)指只针对某个特定群体成员和有限第三方共同参与、管理的区块链。[11]一般情况下,联盟链内部指定多个预选节点为记账人,每个区块的生成由所有预选节点共同决定。联盟链和私有链也被统称为许可链,公有链被称为非许可链。
根据中心化程度不同,联盟链可以按应用场景不同分为三种:一是全网公开、无用户授权机制的区块链,严格意义上属于公有链;二是允许授权节点加入网络,根据权限查看链上信息,多用于机构间组建的区块链,也有行业链之称;三是所有网络节点都掌握在一家机构,严格意义上属于私有链。
联盟链的维护治理一般由联盟成员进行,通常采用选举投票制度,机制上相对容易进行权限控制,代码一般部分开源或定向开源,主要由链上成员开发,或采用某些系统厂家的定制产品(如IBM的企业级区块链超级账本系统)。联盟链的有效治理需要解决联盟成员联合欺诈、竞争性联盟成员利益均衡、部分节点收获收益和投入维护不对称、数据资产权属等问题。
相比公有链,联盟链的优势在于以下几个方面。
一是交易成本更低。交易只需被几个授权节点验证就可以,无须全网所有节点确认,交易效率大大提升。
二是节点之间连接保障性更强,故障可以迅速通过授权节点追溯、人工参与修复,并允许使用共识算法减少数据出块时间,完成交易更快。
三是联盟成员数据读取权限受到限制,并非所有节点分布式账本存储全部数据,因而能更好地保护联盟成员个人隐私。
四是运作机制更灵活,根据实际需要,进行修改规则、追溯还原某笔交易等操作相对容易。
2017年区块链项目全球分布情况如图1-22所示。
图1-22 2017年区块链项目全球分布情况
案例 中国农业银行:以联盟链推动三农普惠金融应用创新[12]
小微企业、“三农”客户融资难、融资贵问题的根源在于抵押不足、信用数据匮乏,银行难以对这类客户建立有效的信用模型和风险防控措施。中国农业银行依托产业链上下游经营、交易、财务等数据,推动传统信贷产品的互联网改造,以及区块链、大数据等金融科技赋能网络融资产品的创新。
1.利用区块链技术积累大数据和挖掘数据价值
“农银e管家”电商金融服务平台是中国农业银行为生产企业、分销商、县域批发商、农家店、农户打造的“ERP+金融”在线综合服务平台。平台以传统供销关系价值链的快速互联网化为突破口,融入小微企业、“三农”客户的生产生活场景,为工业品下乡、农产品进城搭建互联网金融服务渠道,并将历史交易数据映射到中国农业银行为核心企业、上述各方参与的联盟链,将每天产生数据(交易记录)实时上链登记(链上成员对数据不可篡改),以形成企业和农户可信交易环境,反映链上成员真实、实时的信用状况。
2.利用区块链技术解决多参与方信任问题
中国农业银行推动将三农金融各环节涉及机构的数据实时上链,不断充实联盟链参与节点,将多参与方的信息系统通过联盟链技术性刚性约束,打造为相互信任、风险可控、依据信用价值流转的三农金融和三农经济生态体系。
3.以智能合约实现客户授信
中国农业银行通过挖掘用户使用农银e管家的交易和经营数据,经授权获得链上企业订单、物流、农户信用等多维度数据,并将数据提供方作为节点上链,能够实时掌握完整的用户行为大数据、长数据,进而提供针对性普惠金融服务。中国农业银行三农普惠金融联盟链如图1-13所示。
图1-23 中国农业银行三农普惠金融联盟链
中国农业银行还以智能合约约定统一数据共享标准,尝试将授信模型内嵌进智能合约代码,实现银行征信、审批、授信、增信等环节智能化处理,以减少人工处理负担和人工干预。中国农业银行智能合约提高了验证贷款真实性的准确率,以受托支付方式将资金直接划拨到贷款应用场景,而不是将贷款直接转入借款人账户,从而降低了信贷的不良率。
[1] 布雷顿森林体系:“二战”后为建立统一的世界货币体系,1944年在美国新罕布什尔州布雷顿森林举行的有美、英、中、法等44国代表参加的世界货币金融会议上,创建了国际货币基金组织,形成了以美元为中心的国际货币体系,切断了黄金与纸币在国内的自由兑换关系。
[2] 牙买加体系:1976年1月,国际货币基金组织(IMF)理事会“国际货币制度临时委员会”在牙买加首都金斯敦举行会议,签订达成了“牙买加协议”,同年4月,国际货币基金组织理事会通过了《IMF协定第二修正案》,从而形成新的国际货币体系——实行浮动汇率制度改革,推行黄金非货币化,增强特别提款权作用,增加成员国基金份额,扩大信贷额度,增加对发展中国家的融资。
[3] 刘肖飞.基于动态授权的拜占庭容错共识算法的区块链性能改进研究[D].杭州:浙江大学,2017.
[4] 女巫攻击问题:假设P2P网络每个节点拥有一个确定身份,但是一个恶意节点宣称拥有多个身份,通过欺骗系统获得认可,从而获得网络中更大的影响力,这就是在发起女巫攻击。如何在P2P网络识别女巫攻击,对保证系统安全十分重要。
[5] 网易星球上线数据护照 区块链让数据产生价值[EB/OL].[2018-09-07].http://finance.ifeng.com/a/20180907/16491352_0.shtml.
[6] 黑钻:用户在网易星球参与相关项目和活动,可以获取“原力”。获取“原力”越多,获得的黑钻也就越多。黑钻可以用于网易星球设定的场景内的消费和兑换。
[7] 洪水填充算法:以图像填充为例,就是把一个点x的所有相邻的点都涂上x点的颜色,一直填充下去,直到这个区域内所有的点都被填充完为止。
[8] 信和云智能合约平台:是一个公链体系,提供可视化开发、编译、运行环境,为开发者提供不直接涉及底层的区块链应用开发环境和工具。
[9] Adam Back,Matt Corallo,etc.侧链白皮书:用楔入式侧链实现区块链的创新[D].2014.
[10] 音希(编译).世界银行开始探索世界首个区块链债券项目[EB/OL].[2018-08-10].http://tech.qq.com/a/20180810/058635.htm.
[11] 高志豪.公有链和联盟链的道法术器[J].金卡工程,2017(3).
[12] 姚琥.应用区块链技术推进普惠金融发展[J].金融电子化,2017(12).