首页 理论教育分布式数据库技术:区块链的工作原理

分布式数据库技术:区块链的工作原理

【摘要】:图19.5源块Step-2:甲向乙付款20元,这样区块链上的每个节点都会更新信息,如图19.6所示。要建立一个区块链系统,首先要建立一个纯P2P分布式系统,该系统的特点主要包括以下几点。区块链的工作过程如下。分布式P2P系统包含很多成员,成员在计算机上又各自维护着所添加属性的区块链数据结构。

下面讨论如何利用区块链记录交易和存放分布式账本。

假设有甲、乙、丙、丁四个用户。

Step-1:令甲有300元钱,这是所有交易的起源,每个节点都知道此事,如图19.5所示。

图19.5 源块

Step-2:甲向乙付款20元,这样区块链上的每个节点都会更新信息,如图19.6所示。

Step-3:接下来发生第二次交易,乙付给丙5元,如图19.7所示。

每个节点中的交易数据是不可改变的,所有交易都是不可逆的。所有新交易的结果都在每个节点自己的区块链副本里记录下来。

图19.6 第一次交易

图19.7 第二次交易

当然,随之会有疑问,假如乙重复多转了5元给丙,该怎么办?安全性如何保证?有人将钱转错了对象,怎么办?

这些也都是区块链系统需要解决的问题。

要建立一个区块链系统,首先要建立一个纯P2P分布式系统,该系统的特点主要包括以下几点。

●P2P系统使用Internet作为连接各个节点的网络。

●节点数目未知、节点的可信度和可靠性未知。

●P2P系统的目标是管理数字化物品(如销售积分、数字货币)的所有权。(www.chuimin.cn)

在一个开放的、不可信的环境里使用纯分布式P2P簿记系统来管理所有权,设计和开发这样一个软件的主要任务是:描述所有权;保护所有权;存储交易数据;预备账本,以分布到一个非可信环境里;分布账本;往账本中添加新交易;决定哪些账本表示事实。

区块链的工作过程如下。

任务1:描述所有权。

要设计一个软件系统管理所有权,首先要确定如何描述所有权。结果是,记录交易是表述所有权转变的最好途径,完整的交易历史是识别当前所有者的关键。所以,区块链主要记录交易,构成完整的交易历史。

任务2:保护所有权。

使用交易来表述所有权后,如何防止他人存取别人的财产呢?现实世界里,我们会使用门锁来防止别人闯入自己的家里,或者使用车锁来防止别人闯入自己的汽车。类似地,在区块链里使用加密来保护资产。用户的账号、口令和交易要用密码来保护。

保护所有权有三个要素:标识所有者、认证所有者和限制他人访问所有者的资产。这里也使用了哈希技术。

任务3:存储交易数据。

接下来的问题是如何存储交易数据,保证交易历史完整,这里使用了区块链数据结构。

任务4:预备账本,以分布到一个非可信环境里。

隔离的区块链数据结构账本包含的交易数据很大,我们希望在非可信环境里设计账本的分布式P2P系统,所以会广泛使用副本,并将之分布在非可信网络的非可信节点上。我们会把账本交付给没有集中控制点或协调点的网络。如何防止账本出现差错?例如,删除某个交易或者加入非法交易。为了解决这个问题,要保证历史交易不被修改,即一旦写入账本,历史交易就不能再被修改。这样,账本里可以添加新交易,但是写入的数据不能被改变。

任务5:分布账本。

账本只能添加属性,可以创建账本的分布式P2P系统,让账本的副本为请求的每个用户执行查询操作。在分布账本的过程中,节点间会相互通信和交互。

任务6:往账本中添加新交易。

分布式P2P系统包含很多成员,成员在计算机上又各自维护着所添加属性的区块链数据结构。因为数据结构允许添加新的交易数据,所以必须保证只有有效的和被授权的交易才能添加进去。这样既允许P2P系统的每个成员添加新交易,又允许每个成员变成其他端点的监督员。结果所有成员都监督别人,可指出其他端点的错误。

任务7:决定哪些账本表示事实。

新交易添加入P2P系统的各个账本中,由于不同的端点会收到不同的交易数据,所以各自维护的历史交易不同。由于系统存在不同版本的历史交易,因此要由一种方法确定哪个历史表示的是真实现状。