首页 理论教育区块链:分布式数据库技术的全面解析

区块链:分布式数据库技术的全面解析

【摘要】:区块链系统保证所有节点均衡地达到区块链账本的完整性和共享内容的一致。这也是我们在本书讨论区块链的原因。图19.1区块链数据结构图19.1中,每个块是一个交易集,头上的块是源块。智能合约是指在区块链的账本里作为数据部署的程序,在区块链交易时执行。

近年来,区块链(blockchain)越来越受到关注。目前区块链的说法众多,有的将它看成是重大的互联网发明,也有的对它不屑一顾。其实,它既不神通广大,也不一无是处。应该合理、客观地看待区块链。

区块链的含义有点混乱,不同的人在不同的上下文中有不同的含义。区块链可能是指一种数据结构、一种算法、一组技术、一个有共同应用领域的P2P系统。

1.区块链是一种数据结构

从数据结构看,区块链是指以块为单位组织在一起的数据。数据块一个接着一个连在一起像一根链条,因此称为区块链。

2.区块链是一种算法

算法是计算机执行的一系列指令,这些指令一般总是与数据结构相关。将区块链看作一个算法,区块链是在纯P2P系统中对许多区块链式数据结构的信息内容进行处置的一系列指令。

3.区块链是一组技术

将区块链看作一组技术,是区块链式数据结构、区块链算法、加密算法和安全技术的组合,在纯P2P系统中实现完整性。

4.区块链是一个有共同应用领域的P2P系统

也可以将区块链看作一把大伞,表示纯P2P的簿记系统,使用区块链技术组件。

区块链是一种数字技术,组合了密码学、数据管理、网络和奖励机制,支持校验、执行和记录用户间的交易。区块链账本是群组(块)交易的一个列表(链)。打算交易的用户可以将交易记录添加到交易池中,记入账本。区块链系统里的节点获取一部分或完整性交易,并将其记入账本的新块中。区块链账本的内容在节点里复制,这些节点共同运作区块链系统,无需任何可信第三方的中央控制。区块链系统保证所有节点均衡地达到区块链账本的完整性和共享内容的一致。显然,区块链数据构成一个特殊的分布式数据库。这也是我们在本书讨论区块链的原因。

用户间的交易,如支付、公证、选举、登记和过程协作是政府与企业运作的关键,传统上,依赖于可信的第三方,如政府机构、银行律师事务所、会计师事务所或特定产业的服务供应商来支持这些交易。区块链对此进行了颠覆,无需可信第三方,通过技术、共享平台和参与者自己来实现交易。显然,去中心化,这是P2P系统的长处。

区块链系统的成功运作依赖于以下这些关键要素。

●恰当的完整性策略,以便校验每次交易和块。

●系统软件和技术协议的正确性。

●强大的加密机制,以识别交易用户和检验其是否被授权添加新交易。

●激励机制,刺激处理节点参与社区活动,不损害自己的利益。

定义1 分布式账本(distributed ledger)是交易的一个增量(append-only)存储,数据分布在许多机器上。

这里的增量是一个非常重要的特征,是指可以添加新交易,但是老交易不能删除和修改。新交易可以是老交易的补偿,但是两者都必须留在账本里,便于查账和保证长久的完整性。基于分布式账本,可以定义区块链。

定义2 区块链是一个分布式账本,结构为由块构成的链接表。每个块包含交易的有序集。典型解决方案是使用加密哈希算法将(数据)块到其前块(predecessor)的链接加密。

定义3 公共区块链(public blockchain)是一个具有如下特征的区块链系统。(www.chuimin.cn)

●有开放网络,节点可以自由加入或离开网络,无需任何人的许可。

●网络中的所有节点可以对加入数据结构的新数据进行验证,这类数据如块、交易和交易效果。

●其协议中包含激励机制,以帮助区块链系统的正确运作,包括有效交易的处理、纳入账本,以及拒绝无效交易。

公共区块链是一个无领袖的P2P系统,管理资产值的所有权。这类例子如比特币(BTC)和以太币(ETH)。公共区块链中,来自其他节点的信息并无高可信度。只有让所有的节点进行验证才能降低风险。这又导致网络上的冗余计算。

与此对应,在大型企业里构建区块链系统,可以由组织性的机制或协议性的机制来控制,让区块链上的所有节点都互相认识。

定义4 区块链平台(blockchain platform)是运行区块链所需要的技术,包括用于处理节点的区块链客户端软件、处理节点的本地数据存储和存取区块链网络的其他客户程序。

综上,区块链可以小结如下。

●区块链是一个关于交易值(transacting values)的P2P系统,交易双方间无需可信第三方参与。

●区块链是一个共享的、非集中的、开放的交易账本。账本(簿记)数据库会在多个节点上复制。

●簿记数据库是一个单调增加的、只添加数据的数据库,其他不做任何改变。这意味着每个记录项都是永久数据项。任何新添加的数据项要反映在该数据库寄存在不同节点的副本上。

●无需可信的第三方作为中介来验证、担保和安排交易。

●在互联网上,区块链居于网络协议栈顶端的一个层面,和其他互联网技术共存。

●就像TCP/IP为了实现开放系统而设计的那样,区块链技术是为能够真正去中心化而设计的。

区块链数据结构可如图19.1所示。

图19.1 区块链数据结构

图19.1中,每个块是一个交易集,头上的块是源块(genesis block)。链上最新创建的块是块n,逐次指向前一块,最终指向起源块(块1)。这种链的链接方向和传统的列表结构正好相反。

存放在区块链里的交易数据可以大于简单的资产交易记录,目前的区块链系统允许将计算机程序存放在里面,作为账本交易的一部分来执行,这常被称为“智能合约”(smart contracts)。

智能合约是指在区块链的账本里作为数据部署的程序,在区块链交易时执行。智能合约可持有和传输区块链管理的数字资产,可以调用存储在区块链里的其他智能合约。一旦部署,智能合约的代码就是确定的、不可改变的。