Page 283 - 《软件学报》2020年第9期
P. 283
2904 Journal of Software 软件学报 Vol.31, No.9, September 2020
techniques from distributed databases to blockchains. Considering this, in this study, the techniques for the data management in
blockchains are surveyed. Four aspects of management, including storage, transaction management, query processing, and blockchain
scalability are focused on. The differences are compared and the benefits of the techniques in these areas are analyzed for blockchains.
Key words: blockchain; data management; data storage; transaction execution; query processing
最近几年,由于加密货币以及去中心化应用的兴起,区块链技术在工业界与学术界得到了极大的关注,并产
[1]
[2]
生了巨大的影响.加密货币中的比特币 、以太坊 等已被允许在新加坡、加拿大等国家进行支付.从数据处理
的角度,区块链是一种由网络中一组节点维护、只可添加的链式数据结构.在区块链系统中,数据与事务以区块
为最小单位进行存储.区块与区块之间以链表的方式进行连接,且新的区块只能在链表末尾添加.因此,区块链
中每个节点均按照区块被添加的顺序来存储区块内的数据内容.在这种情况下,所有的区块形成了一个存在全
局顺序的链表.区块链因此也常被称作账本.与此同时,区块链系统可在不可信的网络中支持数据的一致性以及
不可篡改等特点.为了在不可信的网络中保证数据不可篡改,区块链将每个区块及前一区块的哈希值存储在区
块中,因此网络中的节点可通过哈希值,验证自身数据以及前一区块的数据是否与相应的哈希值一致.同时,考
虑到不可信网络中恶意节点的恶意攻击行为,区块链系统要求可以支持拜占庭容错,即:当网络中存在少量恶意
节点时,依然可以确保网络中数据的一致性.由于以上特性,整个区块链网络构成了一个去中心化且不可篡改的
一致数据存储系统.
区块链系统的去中心化特点使其与传统的分布式数据库在技术,应用等方面有很大不同.传统的分布式数
据库往往假定存在中心节点,且节点不存在恶意行为,因此大部分分布式数据库只需要考虑崩溃性故障.而区块
链中节点之间是不可信的,即节点可能恶意地发送消息或执行计算,因而区块链需考虑拜占庭容错.诸多企业,
[4]
[3]
[5]
[6]
例如 IBM 、Oracle 、SAP 、华为 等,均建立了自身的区块链系统.随着区块链技术的推广以及对智能合约
的支持,区块链技术也被进一步应用于多个领域,包括物联网 [7,8] 、医疗健康 [9,10] 、专利保护 [11] 、政府监管 [12] 、
资产管理 [13] 等.与此同时,越来越多的工作对区块链各个方面进行了优化,包括系统模型 [14,15] 、共识算法 [16,17] 、
数据安全 [18−21] 、数据存储 [22] 以及性能评价基准 [23] 等.
从数据管理的角度,区块链是一个在分布式环境下存储大量存在全序关系的数据记录系统.数据以及对数
据的操作均存储在区块内并以区块的粒度进行管理.一个典型的区块结构如图 1 所示,包括前一区块哈希值
(PreBkHash)、共识验证字段(ConsProof)以及区块内事务的哈希值(MerkleRoot).其中,节点可利用共识验证字段
验证其存储的区块是否满足共识条件,并确保网络中少量节点的恶意行为不会影响区块链的一致性,从而使其
支持拜占庭容错.
...
区块t 区块t+1
PreHash ConsProof PreHash ConsProof
MerkleRoot MerkleRoot
R R
TX 1 TX 2 TX 3 TX 4 TX 5 TX 6 TX 7 TX 8
Fig.1 Structure of the blockchain
图 1 区块链中的数据结构