增强区块链本地存储的措施分析

2021-06-29 06:56中国人民解放军61711部队邓小波
电子世界 2021年10期
关键词:轻量哈希数据结构

中国人民解放军61711部队 邓小波

区块链技术也叫分布式账本技术,是一种用于数据记录和存储的信息技术,这种技术以链式结构来储存数据,用密码学算法来进行数据传输和访问加密,保证数据安全。在电子交易逐渐繁荣的当前,区块链技术也成为了金融、物流、医疗、税务、教育、供应链等多个领域进行贸易和去中心化改革的首选技术方案。但该技术虽存在良好的数据记录和存储优势,但缺点也同样突出。为了能使区块链技术更好地应用到各行业领域,将就区块链技术的问题进行分体,提出优化方案,以便能够改进区块链技术的缺陷,提高区块链技术的应用范围。

1 区块链的存储难题

区块链是一个去中心化的分布式共享数据库,因为去中心化的特性,所以每个节点都必须能够储备完整的区块数据,而因为电子交易过程越来越繁琐和复杂,系统节点的数量在上升,每个节点储备的区块数据就会增大,对本地存储空间的需求也会越来越大,这成了区块链技术的应用瓶颈,而唯有解决这一瓶颈,才能让区块链技术在电子贸易中发挥更大的作用。

区块链作为去中心化的信息系统,其运作原理是依靠共识算法建立的信任机制以及分布式数据对唯一数据库进行维护,而为了保证唯一数据库的可靠性,区块链的所有节点都必须保持一致性,及要做到共同记录、共同维护和共同更新。这造成区块链的存储扩展性非常薄弱,因为所有节点都需要保持对唯一数据库的同步性及一致性,在运作过程中,本地存储要腾出大量空间来同步区块链数据。比如比特币系统,比特币系统采用了区块链技术作为数字货币加密技术,到2020的一月份为止,该系统就已经拥有超过60万个区块,每个区块的容量达到241GB,且这个数值还在以平均每月4.5GB的趋势快速增长。且需要注意的是,比特币系统中的区块链只是用于基础的数字货币交易信息记录,所涉及的内容不算复杂,如果要应用于其它的信息记录,那么区块链要记录的数据将达到一个惊人的地步。

由此可见,电子交易和区块链节点越多,数据容量就会越大,加上区块链的存储扩展性非常薄弱,为了保持一致性,实现去中心化,每个节点服务器都需要储备详细的账本信息,这就导致节点服务器的存储要求非常高,存储负荷巨大。尤其是大型区块链系统,因为区块链系统越大,普通用户节点就会越多,但普通用户由于电脑配置等原因,往往很难达到区块链系统要求的PC存储性能,这就更制约了区块链的存储扩展性。

2 增强区块链本地存储的思路

要实现区块链本地存储的有效增强,可以从区块链数据结构本身以及网络节点性能两个方面出发,首先是区块链数据结构方面,最好的是方式是改变区块链的数据结构,也就是打造轻量型的区块链,这种区块链数据结构中,区块交易被交易哈希索引替代,这样就可以在区块链中减轻本地存储的负荷。设计者可以通过在区块头设计对应的账户树结构,用来对系统节点账户加以记录,这样便能够优化存储性能良,减轻节点服务器在本地存储需要承受的存储负担。其次是节点网络性能方面,可以利用纠删码来优化区块链本地存储,具体做法是通过将数据处理层增加到系统层次中,再对区块数据进行编码和解码转化,数据被成功转化为节点后进行数据切片,这样节点就可以根据本身实际的存储性能对不需要的编码数据切片进行删除,而如果要重构区块数据也可以从另外的节点再获取数据切片进行区块重构,这样就保证了数据库的去中心化,同时使得区块链的一致性和稳定性得到增强。

3 增强区块链本地存储的措施

3.1 设计轻量型区块链

所谓轻量型区块链,即是用在数据层增加账户数据,用交易哈希索引替换区块交易的系统类型。在常规的区块链系统中,实现去中心化的原理是将所有参与节点全部用于账本保存,所有交易产生的数据信息都会被完整记录到区块中,这样一来交易数据所占用的存储空间就非常巨大。举例而言,在区块输入这部分数据时,分别需要记录前一笔交易的哈希值、花费的输出索引、输出金额以及脚本系统中的各种操作符,这些内容占据了很大的区块容量,且大部分接点和这次交易毫无关系,也就是存在存储浪费的现象。轻量型区块链数据层是以区块数据、账户数据和本地交易共同组成数据层,其结构如图1所示。

图1 轻量型区块链数据结构

图2 区块数据结构

由图1可见,相比常规区块链,轻量型区块链新增了账户数据和本地交易,且在区块链类型中,交易被以哈希值形式存储到块数据,同时,因为块头上增加了账户树根,区块数据结构如图2所示。

其中,Time是时间戳,也就是记录挖矿时间的信息,而Nonce是计算出的在要求值以下或者等于要求值的哈希值,是矿工完成工作量的证明。从图2的区块数据结构可见,在轻量型区块链中,PrevBlock Hash是以前块的整个块数据进行哈希运算后得到的哈希指针,这个哈希指针从结构中的前块指向后块,所以后块就保留了前块的哈希值,也就是说每个区块中会保存上一个块的哈希值,这样一来就形成了链式结构,同时轻量型区块链也具备了不可篡改性。因为下一个块要记录上一个块的哈希值,如果改动任意一个区块的身前区块数据,就会引发数据冲突,而身后区块的PrevBlock Hash就会对身前区块的数据进行检验,避免了交易中存在的数据错误,利用这种逐层计算交易哈希值的方式,交易本身的合法性就得到保证,这样哈希索引就可以替换区块交易,同时避免出现账户数据错误等问题,确保交易本身的合法性。

在应用轻量型区块链系统时,操作人员只需要将交易中需要计算的交易数据和该区块中其他交易做运算,然后将ROOT值做简单比较就可以验证交易合法性。这种设计的优势在于使用ROOT值比较验证取代了传统交易中用锁定和解锁脚本验证UTXO合法性的复杂操作,节省了许多不必要的数据信息,这些信息的实际信息价值并不高,不存在必须保留的必要性,反而会在区块中占用诸多存储空间,这无疑是一种资源浪费,且因为交易内容过于完整和详细,一但出现信息泄露,有极大可能暴露用户的个人隐私。在轻量型区块链中,是利用的哈希运算的不可逆性,用交易的哈希值代替具体交易信息被记录在区块中,哈希值因为自身唯一性,可以对应对应的交易信息,也不可用逆运算的方式恢复交易信息,这样就可以证明某笔交易存在于区块链中,既保证了用户的私信,同时也减少了无意义信息存储挤占区块容量。

3.2 节点网络性能增强

节点网络性能可以利用数据切片的形式进行加强,一般而言每一个区块链系统有三个用户节点,假设区块链有某块N,那么使用数据切片就能实现数据线性切片且不存在重合,也就是公式:N=N1+N2+N3+N4+N5,数据切片之后节点依据实际的存储能力可以随机删除碎片,不同节点保留有不同的切片,如第一个节点有1、4,第二个节点有切片2、3,第三个节点有切片5,每个节点储备一部分数据切片,而切片N1到N5则由全网备份,如果要重构数据,第一个节点就可以向第二个节点或者第三个节点获取切片,以此实现重构数据。

常见的设计是使用纠删码编码区块数据,降低节点存储负担,在区块链中,编码矩阵分为公有和私有两个类型,公有编码矩阵只有唯一的编码矩阵,该编码矩阵为系统共用,系统运行时生成编码矩阵,无法更改,私有编码矩阵根据区块链中的节点对应的账户地址生成不同的矩阵因子。在公用编码矩阵中,网络是节点获取编码切片的主要载体,依靠网络节点向区块链的其它节点调取切片实现重构,在私有编码矩阵中,节点被分成普通节点和超级节点,由超级节点的编码矩阵向普通节点提供切片。根据所选择技术是联盟链还是共有链,是去中心化还是多中心化,可适当选择对应矩阵。因为在区块链中所有的数据都是二进制的方式来进行存储,不同区块要单独编码,获取编码矩阵后,将区块均匀分割成若干数据切片,然后产生切片线性组合,将数据切片和编码矩阵采用矩阵乘法进行计算得到编码数据,所有切片都需要进行标识,以此确保可以重构数据。

结语:区块链技术正被广泛应用于各个领域,正因如此,对于区块链存在的本地存储问题就要予以严肃看待,从区块链技术去中心化的特性来看,过多无意义的信息记录造成了本地存储中容量的挤占问题,为了解决这一问题,可以通过改变区块数据储存结构以及进行数据切片等方式减轻节点服务器本地存储的负荷,从而优化区块链本地存储,为交易安全和信息备份提供更好的保护作用。

猜你喜欢
轻量哈希数据结构
并继竿之我见(四)
——轻量竿只有新手才用?
文件哈希值处理一条龙
轻量新能源汽车应用开关磁阻电机系统匹配的研究
我对轻量型并继竿的看法
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
高职高专数据结构教学改革探讨
基于OpenCV与均值哈希算法的人脸相似识别系统
巧用哈希数值传递文件
TRIZ理论在“数据结构”多媒体教学中的应用
《数据结构》教学方法创新探讨