智能与数据重构世界
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 去中心化的区块链数据库

云计算平台把数据分布式存储在多个不同的地点,然后把存储单元通过网络互相连接,共同组成一个完整的、全局的、逻辑上集中但物理上分散的大型数据库。但是,它通常需要一个中心化的数据存储及管理系统。这种中心化的结构虽然效率高,但健壮性差,管理较为复杂。作为2009年年初发展起来的新兴数据库技术,区块链(Blockchain)把数据分成一个个区块,这些区块通过哈希函数连接成一条单向链(新的区块链数据结构是一个有向图),如图1-5所示。区块链采用点对点(P2P)对等网络、密码、时间戳等技术,在节点无须互相信任的分布式系统中实现基于去中心化的点对点交易、协调与协作,从而为解决中心化机构普遍存在的高成本和数据存储不安全等问题提供了解决方案。

img

图1-5 区块链示意

1.3.1 区块链的架构模型

如图1-6所示,区块链的基础架构模型包含6层:数据层、网络层、共识层、激励层、合约层、应用层。其中,数据层和网络层是基础层,共识层、激励层和合约层构成了中间协议层,而应用层通常由用户自己定义,以便适用于不同的场景,如数字货币、数字金融、数字版权、产品溯源等。

img

图1-6 区块链基础架构模型[7]

(1)数据层:数据层是区块链基础架构模型的最底层,它封装了数据区块的结构,这些区块通过密码技术形成单向链数据结构。

(2)网络层:网络层利用了P2P的网络机制、数据传播机制和数据验证机制,区块链上的节点自动组网,形成一个分布式自治系统。

(3)共识层:区块链的核心是全网节点维护一个一致性的数据库或账本,因此,区块链节点需要共识机制,目前最常见也是较为成熟的三种共识机制是工作量证明(Proof of Work,PoW)机制、权益证明(Proof of Stake,PoS)机制和股份授权证明(Delegate Proof of Stake,DPoS)机制,目前共识机制还在不断地演进和完善。

(4)激励层:区块链账本的建立与维护需要区块链节点的参与和贡献资源,为了鼓励及补偿节点,区块链还包含一套用于激励的发行机制和分配机制。

(5)合约层:区块链的每个区块可编程、可嵌入代码,因此,合约层包含了脚本代码和算法机制,可以简单地将其理解为一份自定义的电子合同;智能合约指这份合约可以在达到约束条件时自动触发执行事先约定好的一切条款,也可以在不满足条件时自动解约,而不需要人工干预。

(6)应用层:和传统的网络协议模型应用层一样,区块链的应用层可以封装各种应用场景和案例,类似于我们日常用的各种网站、社交娱乐App、电商购物App、新闻阅读App等应用场景。

区块链技术包括两项最重要的机制:共识机制和激励机制。前者保证所有参与者对全区块链的网络数据达成共识,同时也确保和维持整个区块链稳定;后者可以促使参与者共享资源,是区块链系统持续运作的重要因素之一。

目前,区块链社区已经发展了各种区块链共识机制:PoW、PoS和拜占庭容错(Byzantine Fault Tolerance,BFT)等。其中,PoW计算资源耗费大,受网络传播延迟影响大,交易不能得到及时确认。虽然PoS避免了消耗大量的计算资源,以及BFT能够实现交易的及时确认,从而不同程度地克服了PoW在性能上的不足,但它们依然难以满足低计算复杂度和低处理延迟等性能要求。如果区块链没有与共识机制相结合的合适的激励机制,理性的节点便不倾向于参与区块链交易,从而导致共识机制无法完成。因此,激励机制与共识机制密切相关。

区块链共识机制与激励机制具有4个特性:①激励兼容性,即每个参与者根据真实的贡献值获得与之相对应的奖励;②一致性,即所有诚实的参与者最终维持一致的全网视图;③活跃性,即参与者愿意持续地在所处的区块链上创建有效交易;④正确性,即区块链上的每一笔交易和区块都是被验证成功的交易和区块。这4个特性对区块链系统的稳定运行具有重要的意义,因为激励兼容性和活跃性分别保证了参与者维护区块链的激励和持续性,一致性和正确性能有效地同步交易顺序,消除块冲突并在基于区块链的加密货币中避免双花攻击。因此,设计安全的区块链共识机制与激励机制以适应物联网生态发展环境和场景特性是非常重要的。

1.3.2 区块链的技术特征

区块链是一个可信任、不能篡改、不可抵赖的公共数据库或账本。它由任意多个节点根据代码自发形成。它高度透明,能完全实现多边共信。总之,如图1-7所示,区块链技术具有如下特征。

img

图1-7 区块链技术特征

(1)去中心化。区块链是由众多节点组成的一个端到端的分布式网络,每个节点可以单独存储及验证数据,不存在中心化的硬件或管理机构,账本由所有具有维护能力的节点来共同维护,少数节点故障不会影响系统整体的运作。去中心化是区块链最突出和最本质的特征。

(2)开放性。区块链的数据是全网公开的,任何人都可以通过公用的接口查询区块链数据和开发相关应用,如果用户想保护其私密信息,可事先对数据采用密码技术进行处理后再加入区块链中。

(3)自治性。基于协商一致的规范和协议,区块链参与者会建立一个“区块链社区”,在该无中心社区中,所有节点能够自由安全地交换数据,从而使对“人”的信任变成了对代码的信任。

(4)匿名性。除非有法律规范要求,在区块链上,节点的真实个人信息是不公开的,一个真实用户可以有任意多个独立的节点及账户,这些节点之间及账户之间遵循固定的算法,交易过程无须公开身份。

(5)可编程。在一个区块链应用发布之前,其体系结构和所采用的协议等都必须固定下来,而这些都是需要使用代码来实现的。因为这些代码关联计算逻辑,用户可以通过编程设置自动触发节点之间交易的算法和规则。当前流行的区块链编程平台为Hyperledger(超级账本)和Ethereum(以太坊)。

(6)可追溯。区块链通过区块数据结构存储了创世区块后的所有历史数据,而且数据信息一旦被写入区块中,就不能更改撤销。区块链上的任何数据皆可通过链式结构追溯至创世区块数据,从而可确认账本数据的完整性。

1.3.3 区块链的发展过程

近10年来,区块链技术快速更新换代[8],从区块链1.0进化到区块链4.0,底层技术和效率不断提升,场景覆盖越来越多。相信随着时间的推移,区块链的基础设施将日趋完善。

区块链1.0是以比特币(Bit Coin)为代表的数字货币应用。作为比特币的底层技术,它本质上是一个去中心化的数据库。在区块链1.0中,矿工节点把交易信息做成一个数据包,然后通过求解一个难题使该数据包形成一个区块,进而将区块组成一个公认链。当一个难题的解被大多数节点接受后,求得该解的矿工就会得到约定数量的比特币。因此,区块链1.0的特点是运用P2P对等网络技术来发行、管理和流通货币,这样理论上避免了机构的审批,从而让每个人都有权发行货币。

区块链1.0可以实现数字交易,但不支持去中心化交易所,缺乏扩展性。通过采用以太坊虚拟机(Ethereum Virtual Machine),区块链2.0具有处理点对点的图灵完备的智能合约(Smart Contract)框架,解决了区块链1.0扩展性不足的问题。具体来说,智能合约是一种以信息化方式传播、验证或执行合同的计算机协议。该协议是技术实现,且选择哪个协议取决于许多因素。但是,一旦参与方达成协定,智能合约建立的权利和义务就由区块链自动执行,这个执行过程可追踪且不可逆转。在这个基础上,合约承诺被实现且被记录下来。

区块链3.0进一步将区块链应用的领域扩展到货币和金融行业之外,从而实现了对所有具有价值的数字资产在区块链上的追踪、控制和交易。数字资产可以是任何记录,如出生和死亡证明、财务账目、医疗过程、保险理赔、遗嘱。作为价值互联网的内核,区块链3.0可以不依靠第三方获得信任或建立信用,可实现信息在司法、医疗、物流等各领域的共享。也就是说,区块链技术可以解决信任问题,提高整个系统的运转效率[9,10]。区块链3.0的代表是IOTA,其采用图形结构替代区块链的链条结构,缩短了交易确认时间;无须挖矿,从而大大提高了交易处理速度。

区块链4.0聚焦区块链基础设施和平台层核心技术,致力于构建一个通用、支撑功能完善、性能高、易于使用、用户体验好、可扩展的区块链基础设施。目前,基于HashNet及Hashgraph数据结构的区块链技术可在交易吞吐量、可扩展性上实现质的飞跃,逐步受到业界的关注。

在现有的区块链中,为了验证数据的完整性,区块链保存了所有的区块信息。但是,因为数据都有时效性,无效的数据理应从区块链上删除,区块链这种存储数据的方式是低效且不必要的。但是如果丢弃无效数据,区块链的完整性就没有了。为了弥补这一缺陷,可遗忘区块链(Oblivious Blockchain)重构创世区块,通过快速在区块链所有节点形成共识,包括对新区块的组成、新区块加入的方法和时间、旧区块的丢弃时间及方法等形成共识,使得当一些区块被忘记(丢弃)后,剩余的区块还是全网一致和不可篡改的。

1.3.4 区块链产品溯源应用实例

在区块链产品溯源应用中,企业质检信用查询工具利用了区块链的数据可追溯性的特点。这种去中心化的模式可以提高数据的安全性,具体来说包括三个方面:①通过用户界面数据区块保存用户签名信息和数据以保证数据的可追溯性;②通过引入多个节点共同参与记录的方式来提高数据存储的可信性;③利用区块链自身特性来保证数据的完整性。这样一来,区块链产品溯源系统就记录了产品的原材料、生产加工、运送、中转直到收货的全过程。在该过程中,状态传感设备将产品的原材料生产地、生产日期、质量证书、运输路径、运输条件、收货时间和数量等信息都记录在区块链上,供人们查询。因为每笔交易都保证可追溯,因此,其可以在所有参与方之间建立信任[11]