历史上的今天
今天是:2024年10月10日(星期四)
2020年10月10日 | 华为区块链账本技术 让你资金更为安全
2020-10-10 来源:爱集微
区块链是一种将各自包含有若干条交易记录的多个数据区块按照时间顺序组合而成的分布式账本,是一种在网络成员之间共享、复制和同步的数据库,分布式账本记录网络参与者之间的交易,比如资产或数据的交换。
在多个数据区中,后一个数据区块均包含前一个数据区块的验证信息,如哈希值,从而将多个数据区块组成一个难以被篡改的链式数据结构,且多个分布式节点上均保存有相同的区块链副本以便相互验证,可以在交易双方直接交易,也就是没有第三方信任机构参与的情况下,确保交易的安全性。
目前,每个分布式节点均需要保存完整的区块链副本,因此,当区块链的数据量较大时,占用的存储空间也较大,成本较高。并且,不同分布式节点的存储能力可能存在差异,一旦某些分布式节点存储空间不足,则无法保存完整的区块链副本,从而降低区块链的安全性。
基于目前分布式账本具有的这些难点,华为在19年1月17日申请了一项名为“区块链账本的存储方法及装置”的发明专利(申请号:201910045742.9),申请人为华为技术有限公司。
根据目前该专利公布的资料,让我们一起来看看华为的这项区块链账本的存储方法吧。

如上图,为用于存储区块链账本的分布式系统的结构示意图,该分布式系统包括6个节点,节点中可为传感器、监控设备、转发设备等。有的节点之间存在直接的通信连接,如节点1与节点2、节点3与节点6。当然,也有的节点之间不存在直接的通信连接,如节点4与节点6、节点2与节点5。
下面将会以该分布式系统为例,先介绍现有的区块链账本的存储方法。

如上图,为区块链账本的存储方法的流程示意图,首先,节点3接收并存储区块链账本副本,区块链账本副本包含头区块和数据区块,头区块包含区块链的验证信息,数据区块存储有多条交易记录。
节点3可以根据新数据更新其存储的区块链账本的副本,新数据包括节点3在完成新交易的过程中产生的新增交易记录,也可以是从上游相邻节点接收的新增交易记录。
最后,节点3向其下游相邻节点转发上述新数据,以便其下游相邻节点更新区块链账本副本。需要说明的是,上述上游相邻节点和下游相邻节点是以某一个新数据的传输方向为参考的,例如,假定新数据A是由节点2生成的,节点2需要将新数据A发送给节点1、节点3和节点6,则节点2为节点1、节点3和节点6的上游相邻节点。
但是该方法中部分节点的存储能力有限,随着区块链账本的数据量的增大,部分节点可能没有足够存储空间存储一个完整的区块链账本副本。此外,还可能存在部分节点可用存储空间不足,同时另一部分节点存在大量存储空间闲置的情况,会导致物联网中实际存储的区块链账本副本的数量下降,从而导致现有物联网中基于区块链的交易的安全性和可靠性下降。

如上图,为该专利中发明的区块链账本的存储方法所适用的分布式系统的结构示意图,该分布式通信系统包括多个节点簇。其中,每个节点簇包括一个簇头节点,以及一个或多个普通节点。
簇头节点用于与分布式通信系统中的其他节点簇通信,如接收一个区块链账本,以及存储区块链账本中的头区块,普通节点用于存储区块链账本中的数据区块。
头区块用于存储区块链账本的验证消息,以及每个数据区块的存储信息。数据区块用于前一个数据区块的验证消息以及交易记录,具体的存储方法如下图所示。

如上图,为区块链账本的存储方法的流程示意图,首先,接收第一副本和普通节点上报的可用存储空间大小,第一副本可以是主控设备下发的区块链账本副本,也可以是与第一节点簇相邻的其他节点簇。
其次,根据普通节点上报的可用存储空间大小和第一副本的数据量,确定普通节点中每个普通节点需要存储的数据区块,例如可以根据不同普通节点的可用存储空间大小,为不同的普通节点分配不同数量的数据区块。
假定第一副本共计包括4个数据区块:数据区块1-数据区块4,普通节点1和普通节点3分别可以存储1个数据区块,普通节点4可以存储2个数据区块,而普通节点2可用存储空间不足,不能存储数据区块,则如下图所示:

可以按照采用如下方式为每个普通节点分配需要存储的数据区块:普通节点1存储数据区块1,普通节点2不存储数据区块,普通节点3存储数据区块2,普通节点4存储数据区块3和数据区块4。
当然,除此之外,也可以采用其他的数据区块分配方式,如普通节点4存储数据区块1和数据区块2,而数据区块3和数据区块4分别由普通节点1和普通节点3存储。
最后,系统需要存储头区块以及数据区块的存储信息,存储信息用于指示每个数据区块与其所在的普通节点的对应关系。例如上图中,簇头节点用于存储头区块,如区块0,头区块包括第一副本的账本验证信息,如区块链账本的主哈希值。
以上就是华为发明的区块链账本的存储方法,区块链账本技术在生活中也有很多的应用场景,这种技术在通过共识性验证并写入账本后,就不能再更改,这样就可以给企业以及组织节省时间和成本,同时还可以减少风险,使得企业可以构建新收入流来与客户交互。
史海拾趣
|
专业arm技术论坛 http://www.armjishu.com 嵌入式开源社区 http://www.oschina.net/project/tag/41 arm9开发社区 http://www.arm9bbs.com/ arm开发者论坛 http://www.armforum.cn/ FPGA/CPLD综合 http://www ...… 查看全部问答> |
|
求个 .NET Compact Framework 2.0 for CE5.0 的下载地址 求个 .NET Compact Framework 2.0 for CE5.0 的下载地址就是能放到 CE 系统里。然后能安装的那个。我只下到WM5版的。。下不到CE版的 … 查看全部问答> |
|
打听下关于手机定位,看到类似谷歌纵横的应用软件,想问下是如何实现定位的(不是用GPS),用GPS的一般好象容易点,软件好象可以根据基站来确定经纬度,原理是不是这样的:手机里的软件根据收到的基站数据(是不是类似GPS定位的原理 ...… 查看全部问答> |
|
最近刚开始学习TMS320F28027,不过它的中文学习资料不多! 希望大家多多在论坛里交流啊 发个自己做的TMS320F28027代码生成器,不过只是GPIO部分,不知道有没有问题,请大家口下留情啊… 查看全部问答> |
|
求STM32F103VC FSMC驱动ILI9325的代码 自己弄了下没成功 PD0-15 --->D0-15 NOE ------>RD NWE ------>WR NE1 ------>CS A23 ------>RS PC12 ----->RESET #define RST_PIN (*((volatile unsigned int *) 0x422201B ...… 查看全部问答> |
|
在开发板上1.8v和3.3v的电源模块比较复杂。请问有没有简单一点就能够实现的方法?并且tps56100等芯片比较难买。我手头只有TPS75833KTTT。有没有方法就用这个芯片实现电源呢?谢谢大家啊… 查看全部问答> |
|
比如C51可作如下定义: code uchar x[4]={ //x定义在代码区 0x01,0x02, 0x03,0x04, }; uchar xdata *p ...… 查看全部问答> |




