2017-05-15 天德信链 区块链技术 注:本文原载于 中国计算机学会通讯 COMMUNICAtIONS OF THE CCF 第13卷 第5期,转载请注明来源,未注明来源转载将视为侵权。 作者:郁莲/北京大学,邓恩艳/北京天德科技有限公司
区块链(Blockchain, BC)是分布式数据库系统 [1],也可理解为由多个节点共同维护的分布式账簿技术(Distributed Ledger Technology, DLT),其特点是不易篡改、很难伪造、可追溯。区块链记录发生交易的所有信息,一旦数据进入了区块链,即使是内部工作人员在区块链中也无法做任何更改。这种不可更改的特点不是来自使用某种操作,而是由于区块链系统和机制本身。这使得运用区块链技术较之其他安全技术而言更为简便和有效。凡是需要公正、公平、诚实的地方,都可以使用区块链技术。
区块链把数据分成不同的区块,每个区块通过特定的信息链接到上一区块的后面,前后顺连,呈现一套完整的数据。每个区块的块头(block header) 包含一个前块哈希(previous block hash)值,即将前一个区块的块头进行哈希函数(hash function)计算而得到的值;每个区块之间都会由这样的哈希值与先前的区块环环相扣,形成一个链条。区块链的交易信息被随机散列构建成一种称为默克尔树(Merkle tree)的散列二叉树形态,其根(root)被纳入了区块的随机散列值 [2]。
从技术层面上讲,区块链的核心特征包含以下三个方面 :
这三个特征,逐步递进:
依据这三个特征,派生出以下不同形式的区块链的落地模式。
比特币 代表第一代区块链的数字货币应用。比特币是数字货币应用而不是平台,属于公有链(全网记账)。虽然有加密,但是账簿是全公开的。因为只记录历史信息,不记载账户余额,所以账簿不完整。账户只能用一次,用P2P网络逃避监管,速度极慢,而且扩展性弱。
以太坊 代表第二代区块链的数字货币应用和平台。以太坊创始人维塔里克·布特林(Vitalik Buterin)发现比特币有很多问题,作出了3个重要贡献:
然而,现在布特林自己也承认,所谓“智能合约”第一不智能,第二不是合约。“智能合约”这个名词容易造成误导,IBM称之为 “链上代码” (https:// github.com/IBM-Blockchain/learn-chaincode )。“链上代码”能把数字货币应用变成功能强大的平台。
相对于比特币,以太坊有非常大的进步,但是局限于首次公开币发行(Initial Coin Offering, ICO)。
北航链 [4~7] 代表第三代区块链的底层系统平台而非应用,拥有完全国内自主知识产权,是一种许可链(只有被许可的节点可以记账)。
一般而言,区块链分为公有链和许可链两类。
不具备上述模式1~3的其他区块链相关技术称作区块链的变形(variant),有两种典型类型。
在分布式环境下,数据要保证一致性,需要使用一致性协议。公有链主要使用工作量证明(Proof of Work, PoW)和权益证明(Proof of Stake, PoS)机制。而许可链中主要使用拜占庭共识协议(Practical Byzantine General Fault Tolerance, PBFT)和并发的拜占庭共识协议(Concurrent Byzantine Fault Tolerance, CBFT)。共识的代价昂贵,许多计算力及节点通信都用在共识机制上。例如,PBFT需要三轮广播投票,每次通信以及每笔交易都需要签名和解签,80%的计算都用在签名和解签上。
区块链虽然被称为分布式数据库,但是它的作业和传统数据库大不相同,包括关系(relational)型数据库、对象(object)数据库、非关系型(NoSql)数据库及时序(temporal)数据库。区块链是以建块来维持一致性,而传统数据库以各个交易来解决一致性问题。
高速区块链与低速区块链是截然不同的。
例如,在区块链里,每秒可以有上万次交易,每秒可以建立多块,每块也可以有上万次交易,这些交易可能都与某个数据有关联。例如,在央视微电影平台项目中,几秒钟之内会有上万人点播同一个视频,因而在一个块里面可能就要对同一个视频有上千个点播。如果使用传统数据库,每次点播都是一个写操作,而在同一个交易里面,在同一个数据上不允许有一个以上的写操作。可是,在央视微电影平台上,必须容许同时在一个块中对于同一个数据进行上千个写操作。
从第一代比特币到第二代以太坊,都面临严峻的可扩展性问题。虽然有多种解决方案,但是每个方案都有缺陷。
基于并发拜占庭共识协议的区块链,其可扩展性分为三步 [1]:
这三个机制不仅具备原始区块链的本质特征,还具有高速和可扩展性。
链上代码原先被称为“智能合约” [10,11],给人们的印象是既智能又是法律上的合约。但事实上不是这样。智能合约没有匹配的法律框架的技术,“智能合约”非法律所界定的有效力的合同,没有相关的法律条文及框架来保护参与者。
而链上代码与建块息息相关,所以它的执行模型与建块流程相互影响,以至于链上代码在理论上是一个很难的问题。问题的难处在于,每次建块时需要寻找必须要启动的链上代码,而且在一些链上代码系统里,那些代码必须完成执行之后才能建块。如果涉及的数据很多,而且链上代码很复杂,将造成链上代码与建块冲突。虽然理论上链上代码是一个很难的问题,但是在实际系统中仍然可行。
账户区块链与交易区块链的设计思想是将执行交易和维护账簿分离,账户区块链负责维护账户信息,交易区块链负责执行交易和维护交易历史。
账户区块链存储账户信息。例如,某个小银行可以维护一个账户区块链,而一个较大的银行可以维护两个或者多个账户区块链来防止某个账户区块链负载过大。账户区块链采用多节点设计,节点之间采用拜占庭容错协议来维护一致性,通过这种方式,内部员工将很难篡改账户信息。账户区块链主要有以下操作:
交易区块链是用来交易和结算的通道(或场所),由多个节点共同组成。交易区块链不保存交易双方账户信息,只是在需要的时候从账户区块链获取账户信息。当交易完成后,交易区块链删除账户信息,同时,将交易打包成区块链加入分布式账簿中。
交易区块链可以分为两类:内部交易区块链和跨账户区块链的交易区块链。
为了保护用户和银行的隐私,存储在交易区块链的数据必须加密,使得只有参与银行或央行可以看到数据;而底层客户端的数据只有相关银行和监管机构才可以看到。这样的设计需要配置会员网络权限,限制访问区块链数据库。
熊猫网络模型是基于双链技术账户区块链和交易区块链提出的一种新架构 [25],主要分为两个部分:
熊猫网络模型可以用在大型应用上,例如央行数字货币。
央行有两个功能:
货币发行由央行定,而熊猫模型可以对货币流通进行追踪,发现交易中的违法行为,追踪违法者的账户信息。每一家金融机构至少有一条账户区块链和一条交易区块链,交易经过交易区块链,但账户信息存在账户区块链。央行可以在每条链上放一个节点,所有账户和交易信息都会保存在央行节点之上,节点之间运行拜占庭协议来保持数据的一致性。央行可用链上数据来进行监管和大数据分析,这是新型的监管科技(RegTech)。
熊猫网络模型也可以用在其他大型应用上。例如医疗,每家医院可以有自己的账户区块链来保护病人隐私,可以和其他医院或是其他机构用交易区块链来交换医疗信息,熊猫网络上可有医院、监管单位、保险公司和其他服务公司来完成整个医疗供应链。
天德科技公司于2017年3月24日推出基于大数据的区块链(BigData-Based Blockchain,B3)基础平台。该平台使得大数据区块链从概念与研究进入到实践与应用阶段。B3架构不同于传统的“区块链+大数据”架构,是把大数据的平台集成在区块链里面,简化了金融系统的运行及监管。
传统上,区块链被视为一个慢而且耗费计算力的系统。B3采用账户区块链/交易区块链的双链式架构、并发的拜占庭共识协议及大数据技术,大幅度提高了平台的运行速度及可扩展性。B3将大数据平台完全集成在区块链架构里面。一旦数据放进区块链,可以立刻在区块链里面做数据分析,不需要将数据送出区块链。用来分析的数据百分之百来自区块链,不存在链下数据传输及存储,因而数据正确性得到保障,实时监管成为可能。
B3具有大数据分析能力的区块链底层平台,可以存储所有交易主体的全部历史交易信息和余额信息。监管单位只要在B3部署一个节点,便可以拥有所有交易信息。不合规的交易活动可以从B3的链上大数据分析中被及时发现。
B3的出现是区块链底层技术发展的一个里程碑。区块链系统可以处理海量数据,表明区块链正在从边缘化的应用逐步进入企业的核心业务。
当有无数的区块链包括公有以及联盟链出现的时候,链的交互变成一个问题。一般情形下,一条链上的资产很难被移到另外一条链上。区块链互联网(Internet of blockchains)技术正用于解决这个问题。
由以太坊创始人之一盖文·伍德(Gavin Wood)提出来的波尔卡圆点(polkadot)区块链网,Tendermint区块链创始人提出来的宇宙互联网(cosmos.network),还有Blocknet (Blocknet.co),这三个都属于“异构网络”(heterogeneous networks),表示区块链互联网上面的区块链是不同种类,例如比特币链、以太坊链、天德链或是其他链。
因为是异构网络,所以每一种链和其他链之间通讯都需要特殊的接口。异构网络用多链来解决扩展性问题,但是由于需要许多链和链之间的接口,代价较高。
在亚洲出现的两个区块链互联网概念,却是“同质网络”(homogeneous networks),因为参与的链是同一属性,所以链与链之间的接口一致,不需要特殊接口。
区块链互联网可以像传统的互联网一样散布在全世界,用户可以通过手机或个人电脑进入,让各行各业都使用区块链做公证、交易、清算、结算、版权保护及维权。以后不是通用一条大链把所有的机构都放在一起,而是用许许多多条链,互相连接,互相流通,来解决扩展性问题。并且异构以及同质区块链互联网都会同时存在。
我们设计了一种开放的区块链应用接口(Open Blockchain Connector, OBCC),为用户提供方便高效地使用区块链的功能,包括将用户数据存入区块链、查询用户需要的信息。
OBCC提供一个工具包,用户可以把它导入到自己的软件项目工程里,编程开发时像调用本地函数或方法一样使用区块链的功能接口。当用户程序需要调用区块链的功能时,由OBCC客户端代理将请求广播到各个区块链许可节点OBCC服务器端代理,该代理负责调用区块链的相关功能进行处理,最终存入区块链或查询到信息并返回。
制定区块链标准接口,有以下益处:
OBCC已经支持多个区块链应用系统的开发,包括央视微电影管理平台、高校学籍及档案管理系统、金融跨国支付系统、银行信用卡消费管理系统、游戏积分跟踪管理系统等。基于高速区块链应用接口(JBCC)的区块链应用系统开发,具有开发周期短、可扩展性高、运行速度快的特点。
目前,链上代码基本是固定的合约模板,未来智能合约由谁来编写、检验、测试、认证、修改,以及合约双方怎样认可等,都是需要探索的问题。另外,随着区块链技术的成熟,未来各行各业都可以使用区块链,包括食品、金融服务、能源、制药、航空航天、IT等多个行业和领域。今后,还需要进一步研究区块链技术完备的标准和完善的监督监管机制。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。