阿里妹导读:区块链技术,随着比特币的兴起而为大家所知。但是具体到技术本身,大家相对熟悉的几个词可能是“数据不可篡改”、“公开链”、“分布式数据”、“共识机制”等。
这篇文章将抛砖引玉,通过深度解读Hyperledger Project旗下的Fabric,介绍区块链适合的应用场景,如何从技术上去解决实际业务中的问题,希望能和大家一起探讨、学习。
前言
Hyperledger Project 由Linux基金会创办于2015年10月,是一个开源的区块链研发孵化项目,致力于提供可协同开发以区块链为底层的分布式账本。旗下的Fabric项目目标为打造一个提供分布式账本解决方案的平台。
业务上所期望解决的问题——信用问题
首先从比特币说起,大家对比特币算力证明(POW)的名词应该不陌生,先不说其耗费大量的资源,从共识机制上来看,拥有超过50%的算力即可掌控整个比特币,无论从技术还是业务的角度都是一个风险极高的机制,但神奇的金融圈没有人会去触碰这样的底线,一旦有人拥有超过50%的算力,比特币可能就玩不下去了:)
那么实际的业务场景中的需求应该是怎样的呢?比如说,银行结算清算系统,传统的银行交易系统中,如果出现跨行交易,那么交易数据便需要一个清算系统进行定时对账确保双方的交易数据是同步无误的,那么就可能导致跨行转账需要T+1的时长,而主要的原因是因为双方的系统及数据相互独立,数据互不“信任”,所以需要一个清算系统去验证交易数据,而区块链可以说是为了解决这种“信任”问题而产生的技术,在双方进行交易的同时对数据进行了认证,那么便无需交易后再进行清算而达到实时转账等功能。下面来说为了解决“信用”问题,技术上需要哪些手段去满足。
技术上需要哪些特性去达到“数据可信任”
以上面提出的清算系统为例,可能有人提出,双方使用同一个分布式数据库不就可以达到实时的数据同步了嘛。确实,区块链其中一个特性便是分布式,但是和传统的分布式数据库区别在哪呢?在回归到业务中,如果双方银行进行交易的时候,使用这样一个分布式数据库,难道不担心对方偷偷地把数据改了吗?如果你说有日志可以追述得到修改记录,首先日志也是容易被修改的,且日志也无法挽回动不动可能就上百万千万甚至过亿的金额损失,所以说传统的分布式数据库对于企业之间来说是”不可信的“,那么便要求区块链需要达到数据不可篡改、用户有身份认证、交易可追述、交易有权重等一系列的特性。
剖析技术原理
上面说到区块链的各种特性,从功能上来说这些特性有些是相辅相成。那么应当如何去实现这些功能呢,接下来结合Fabric的一些具体实现来一一阐述。
存储数据结构
要达到数据不可篡改首先从数据结构上来看,也是区块链之所以称之为区块链的原因。如下图所示,每个存储单元包含上一存储单元的hash值(图中hash值的对应关系不完全精确,仅示意用)以及自身存储的交易数据块,可以从表象来看就像把所有数据块连接在一起,称之为“区块链”,形成链状可追述的交易记录。这种链状结构的数据称之为账本数据,保存着所有交易的记录,此外还有一个“世界状态”,其实质为Key-Value数据库,维护着交易数据的最终状态,便于查询等操作运算,并且每个数据都有其对应的版本号。
Fabric主要模块