发明内容
本申请的目的是提供一种区块链数据更新方法、装置、设备、系统及可读存储介质,以实现对区块链数据进行修改维护的目的。
为解决上述技术问题,本申请提供如下技术方案:
一种区块链数据更新方法,应用于区块链系统中的监管节点,所述方法包括:
所述监管节点接收数据更新请求,确定目标对象的旧数据在变色龙默克尔树中对应的目标叶节点;所述变色龙默克尔树中的叶节点均存储采用变色龙哈希计算得到的哈希值;
计算出所述目标叶节点针对所述目标对象的新数据的哈希碰撞,获得目标随机数;
利用所述目标随机数和所述新数据对所述目标叶节点进行更新,得到新区块;
启动区块更新流程,将所述新区块在区块链节点之间做共识。
优选地,在接收数据更新请求之前,还包括:
基于椭圆曲线生成随机数作为陷门私钥,并根据所述陷门私钥计算得到陷门公钥;
向区块链系统中的其它节点公开所述陷门公钥,以使区块链系统中的提议节点利用所述陷门公钥构建所述变色龙默克尔树。
优选地,所述提议节点利用所述陷门公钥构建所述变色龙默克尔树,包括:
所述提议节点利用所述待存储数据的总量计算出所述变色龙默克尔树的高度,并利用所述陷门公钥构建所述高度对应的变色龙默克尔树。
优选地,计算出所述目标叶节点针对所述目标对象的新数据的哈希碰撞,获得目标随机数,包括:
结合陷门密钥计算出满足所述新数据与所述旧数据发生哈希碰撞时对应的所述目标随机数。
优选地,结合陷门密钥计算出满足所述新数据与所述旧数据发生哈希碰撞时对应的所述目标随机数,包括:
获取基于椭圆曲线生成的所述陷门私钥;
获取所述旧数据的目标哈希值;
结合所述陷门私密钥计算出所述新数据也对应所述目标哈希值时的所述目标随机数。
优选地,还包括:
接收修改论证请求,确定参考数据和嫌疑数据;
若所述参考数据与所述嫌疑数据产生哈希碰撞,则确定嫌疑数据已修改;
若所述参考数据与所述嫌疑数据未产生哈希碰撞,则确定嫌疑数据未修改。
一种区块链数据更新装置,应用于区块链系统中的监管节点,所述装置包括:
请求接收模块,用于接收数据更新请求,确定目标对象的旧数据在变色龙默克尔树中对应的目标叶节点;所述变色龙默克尔树中的叶节点均存储采用变色龙哈希计算得到的哈希值;
碰撞计算模块,用于计算出所述目标叶节点针对所述目标对象的新数据的哈希碰撞,获得目标随机数;
数据更新模块,用于利用所述目标随机数和所述新数据对所述目标叶节点进行更新,得到新区块;
共识更新模块,用于在利用目标随机数和新数据对目标叶节点进行更新之后,启动区块更新流程,将所述新区块在区块链节点之间做共识。
一种区块链数据更新设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述区块链数据更新方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述区块链数据更新方法的步骤。
一种区块链系统,包括监管节点和提议节点,其中,所述监管节点用于执行如上述的区块链数据更新方法的步骤,所述提议节点用于向所述监管节点发生数据更新请求并构建变色龙默克尔树。
应用本申请实施例所提供的方法,区块链系统中的监管节点接收数据更新请求,确定目标对象的旧数据在变色龙默克尔树中对应的目标叶节点;变色龙默克尔树中的叶节点均存储采用变色龙哈希计算得到的哈希值;计算出目标叶节点针对目标对象的新数据的哈希碰撞,获得目标随机数;利用目标随机数和新数据对目标叶节点进行更新,得到新区块;启动区块更新流程,将新区块在区块链节点之间做共识。
在本方法中,按照变色龙默克尔树结构存储区块链中的交易数据。该变色龙默克尔树的所有叶子节点均存储采用变色龙哈希计算得到的哈希值。需要说明的是,变色龙哈希(Chameleon Hash,CH)与大多数哈希函数不同,CH额外含有一个陷门密钥。对于不拥有陷门密钥的用户来说,CH的性质与普通哈希函数没有区别。但是对于陷门密钥的拥有者来说,找到一个哈希原像的碰撞将是一件容易计算的问题。基于此,当监管节点接收到数据更新请求时,可确定出待更新旧数据在变色龙默克尔树中对应的目标叶节点。然后,计算出目标叶节点针对新数据的哈希碰撞,得到目标随机数。便可利用目标随机数和新数据对目标叶节点进行更新,得到新区块,且更新后的目标叶节点的哈希值与原哈希值相同,因此不会影响非目标叶节点之外的其他节点。如此,便可完成数据的更新,实现了区块链数据的维护性及可监管性。即,在出现不适宜公开或出现程序错误时,可采用此方法进行解决,降低各类损失。
相应地,本申请实施例还提供了与上述区块链数据更新方法相对应的区块链数据更新装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于理解本申请实施例所提供的技术方案,下面对涉及的技术术语以及相关技术进行简要说明。
一、哈希函数
哈希函数(Hash Function,本文中简称为H)是一种密码学单向函数,是一种将任意长度的数据信息作为输入,映射成为某一固定长度数据作为输出的算法。哈希函数具备单向性、抗弱碰撞性和抗强碰撞性的特点,具体如下:
1、单向性:给定y=H(x)搜索x是困难的。单向性是指通过一个输入X,通过哈希算法可以很容易地计算得到输出结果Y,但是如果只拥有Y,则在有限时间内很难逆推出原输入X。
2、抗弱碰撞性:给定y=H(x),搜索x′≠x且y=H(x′)是困难的。哈希算法的抗弱碰撞性指的是,假设x通过算法H(x)得出结果y,在有限时间内找到一个不等于x的数据x′,使得x′的输出结果和x的结果同样都等于y是困难的。
3、抗强碰撞性:搜索一对(x,x′)使得x≠x′且H(x)=H(x′)是困难的。指通过任何手段都无法有效的找到一对不相等的数据x和x′,使其满足两个数据的哈希输出结果都等于一个相同的值y时,这样的哈希算法就满足强抗碰撞性。抗强碰撞性与抗弱碰撞性的主要区别在于对安全假设的不同。抗弱碰撞性要求对某一个确定的输入找到与之相关的碰撞,而抗强碰撞性则指只要存在任意一对满足输入不同而输出相同的哈希,则意味着这一项安全性质遭受攻破。
二、区块链数据不被轻易篡改的原理
通过交易的形式发送到共识节点上,提议区块链的共识节点将收到的所有交易打包成区块后发给其他的共识节点,由共识算法对区块达成一致后,将区块持久化存储到数据库中。由于区块头中包含由所有交易所构建的Merkle Tree的根,即Merkle Root,因此修改区块中的任意一笔交易都会影响区块头中Merkle Root的值,进而影响整个区块头的哈希值。由于每一个区块的区块头中还包含其所链接的上一个区块的哈希值,因此旧的区块中任何数据个改变都会引发后续所有和它有直接或间接链接关系的区块发生改变。因此,对于意图篡改区块链的攻击者而言,修改旧的区块就意味着要修改这个区块后面所有的区块,这对于攻击者来说是一件几乎不可能完成的任务。区块链也因此保证了数据不被篡改。
三、变色龙哈希
变色龙哈希(Chameleon Hash,CH)。变色龙哈希是一种特殊的哈希函数,基于ElGamal算法构建。与大多数哈希函数不同,CH额外含有一个陷门密钥。对于不拥有陷门密钥的用户来说,CH的性质与上文所描述的普通哈希函数几乎没有区别。但是对于陷门密钥的拥有者来说,找到一个哈希原像的碰撞将是一件容易计算的问题。
变色龙哈希的形式如下所示:
y=CH(x,r)
其中CH为变色龙哈希函数,x为哈希的输入,r为一个随机数作为输入的另一部分,y为变色龙哈希的输出,即哈希值。
对于任意一个现有的变色龙哈希对应关系y=CH(x,r)和任意消息x′,陷门密钥的拥有者可以很容易地找到r′,使得y=CH(x,r)=CH(x′,r′),即打破上文提到的哈希的抗弱碰撞性和抗强碰撞性性质。
实施例一:
请参考图1,图1为本申请实施例中一种区块链数据更新方法的流程图,该方法可应用于区块链系统中的监控节点,该方法包括以下步骤:
S101、监管节点接收数据更新请求,确定目标对象的旧数据在变色龙默克尔树中对应的目标叶节点。
其中,变色龙默克尔树中的叶节点均存储采用变色龙哈希计算得到的哈希值。变色龙默克尔树即为改进的变色龙认证树(Chameleon Authentication Tree,CAT),使用该数据结构替代原有区块链结构中的Merkle Tree,即,改进的变色龙默克尔树,是一种基于抗碰撞哈希(H)和可碰撞哈希(CH)结合构成的二叉树。为便于描述,在本实施例中称该新的数据结构,即变色龙默克尔树为(Modified Chameleon Merkle Tree,MCMT)。
具体的,该变色龙默克尔树的数据结构可参见图2,图中的矩形代表根节点(ROOT)或中间节点,矩形节点的计算哈希值时,可采用通用的非碰撞哈希,即普通哈希;圆形代表叶节点,叶节点的计算哈希值时采用变色龙哈希;叶节点可采用从0到N的顺序编号,其他节点(除根节点外)采用二维编号(V-a-b),其中第一位数字a代表树高度,第二位数字b代表在当前高度中的序号。
其中,监管节点可具体为私有链或联盟链场景中的监控节点,监控节点可持有变色龙哈希的陷门密钥。
其中,目标对象即为待更新的对象,该对象可具体为某种文件、资源。
在实现本申请实施例所提供的区块链数据更新方法之前,即在接收数据更新请求之前,还可以先按照变色龙默克尔树存储区块链中的交易数据。
即,陷门私钥和公钥都是监管节点预先生成的,然后公布公钥,这样提议节点在生成区块时,将利用陷门公钥构建变色龙默克尔树,只有这样构建出来的变色龙默克尔树才有可能利用陷门私钥计算出碰撞随机数。也就是说,在接收数据更新请求之前,监督节点还可执行以下步骤:
步骤一、基于椭圆曲线生成随机数作为陷门私钥,并根据陷门私钥计算得到陷门公钥;
步骤二、向区块链系统中的其它节点公开陷门公钥,以使区块链系统中的提议节点利用陷门公钥构建变色龙默克尔树。
其中,提议节点构建变色龙默克尔树,可具体包括:提议节点利用待存储数据的总量计算出变色龙默克尔树的高度,并利用陷门公钥构建高度对应的变色龙默克尔树。
区块提议者在构建区块的过程中,需要构建MCMT。首先,提议者确定待打包的交易总数N,即待存储数据的总量。并计算出MCMT树结构的高度h,h=logN,并进行构建。
然后,提议者将交易依次插入到MCMT树中。其中,提议者可为监管节点也可为其他节点。以MCMT中按照图2所示的结构,即根节点和中间节点均采用非碰撞哈希函数H,叶子节点均采用变色龙哈希函数CH,则对于中间节点,采用H进行哈希;对于叶子节点,采用CH进行哈希。
对于每条交易(即存储于区块链中的数据)后面记录的哈希为:当前交易哈希,哈希对应到MCMT上的验证路径(类似于原有Merkle Tree中的Merkle Path),以及当前叶节点计算CH所采用的随机数输入r。
整个MCMT计算得到的根节点将被记录到区块头中。
例如,图2所示的叶节点L2对应的交易中,需要存储哈希值CH(L2),CH(L3),H(V-1-0),H(V-2-1),H(ROOT),以及计算CH(L2)所采用的随机数r。
在按照上述方式将待存储数据写入区块之后,可在区块链中的各个节点之间做共识,以便传播流通。
如此,在监管节点接收到数据更新请求之后,可解析该数据更新请求确定出待更新的旧数据,用于更新的新数据,并确定出旧数据在MCMT中的位置,即具体在哪个叶节点下,将待更新旧数据所属叶节点确定为目标叶节点。
S102、计算出目标叶节点针对目标对象的新数据的哈希碰撞,获得目标随机数。
其中,目标随机数即为使得目标对象的新数据与旧数据产生哈希碰撞时,新数据所对应的随机数。目标随机数的确定过程,可具体为结合陷门密钥计算出满足新数据与旧数据发生哈希碰撞时对应的目标随机数。
优选地,为了便于计算,可采用基于椭圆曲线实现的变色龙哈希。相应地,目标随机数的确定过程可包括以下步骤:
步骤一、获取基于椭圆曲线生成的陷门私钥;
步骤二、获取旧数据的目标哈希值;
步骤三、结合陷门私钥计算出新数据也对应目标哈希值时的目标随机数。
为了便于描述,下面将上述三个步骤结合起来进行说明。
目标哈希值可从该目标叶节点存储的验证哈希中读取获得。
陷门密钥生成KeyGen(1λ):对于安全参数为λ的情况,假设G为椭圆曲线的基点,在椭圆曲线阶的范围内随机生成一个数csk作为陷门私钥,计算CPK=csk·G作为公钥公开。
哈希计算CH(x,r):输入为一个任意长度的数据x和一个椭圆曲线阶范围内的随机数r,首先用一个非碰撞的哈希函数H对x进行标准化运算,输出H(x),然后在椭圆曲线域上计算CH(x,r)=H(x)·G+r·CPK
碰撞计算COL(x,r,x′,csk):对于给定的原输入消息x和随机数r,新消息x′,以及陷门密钥csk,CH(x,r)=H(x)·G+r·CPK=H(x′)·G+r′·CPK。由于CPK=csk·G,因此可以得到:
H(x)·G+r·csk·G=H(x′)·G+r′·csk·G
(H(x)+r·csk)·G=(H(x′)+r′·csk)·G
H(x)+r·csk=H(x′)+r′·csk
r′=csk-1·(H(x)-H(x′))
计算得到的r′使得CH(x,r)=CH(x′,r′)可以满足,即找到了CH关于(x,r)的碰撞(x′,r′),其中r′即目标随机数。特别地,结合椭圆曲线离散对数问题替换了原有KR00算法中所采用的实数离散对数域,在相同安全等级条件下密钥长度和哈希长度都缩短为原方案的1/10以下,节约存储空间并提升运算效率。
S103、利用目标随机数和新数据对目标叶节点进行更新,得到新区块。
即,将目标叶节点下的旧数据替换为新数据,并将该目标叶节点存储的验证哈希中的目标叶节点哈希,由原来的CH(旧数据,随机数)替换为CH(新数据,目标随机数),如此便完成了对数据内容的更新替换。由于CH(旧数据,随机数)与CH(新数据,目标随机数)的值一致,因此对其他节点无影响,其他节点无需进行哈希计算进行改变,而仅需将变色龙节点中新计算出来的目标随机数在交易中进行更新即可完成数据更新。
以图2为例,若监管方或客户或其他节点,发现某一高度的历史区块中,位于L2位置的节点对应的交易数据中存在问题,需要替换,则首先更新L2位置的交易数据内容,然后利用陷门密钥计算出L2对应的随机数r2’,然后将r2’更新到交易中(具体可参见步骤S104)。由于L2节点找到了哈希碰撞,哈希结果保持和原来一致,因此其他节点不需要再进行改变。
对于任意高度为h的MCMT,更新一条交易数据只需要修改对应叶节点,找到其对应的哈希碰撞进行数据更替即可,因此所需要计算的哈希数量期望为1。因此,对于区块交易数据接近或固定为2的幂次的情况下,修改变动范围小,修改效率更高的场景下,可及时有效的进行数据更新。
S104、启动区块更新流程,将新区块在区块链节点之间做共识。
为了便于修改后的数据在区块链网络中进行传播流通,在利用目标随机数和新数据对目标叶节点进行更新之后,还可启动区块更新流程,将新区块在区块链节点之间做共识。在实际应用中,对于共识算法需要添加对于监管节点的白名单,即实现优先处理来自监管节点发起的更新历史区块的提议,并在共识完成后更新本地历史区块。如此,便可使得区块链网络中的错误数据或不宜公开的数据进行修改调整,满足区块链网络中对数据可维护性的需求。
应用本申请实施例所提供的方法,区块链系统中的监管节点接收数据更新请求,确定目标对象的旧数据在变色龙默克尔树中对应的目标叶节点;变色龙默克尔树中的叶节点均存储采用变色龙哈希计算得到的哈希值;计算出目标叶节点针对目标对象的新数据的哈希碰撞,获得目标随机数;利用目标随机数和新数据对目标叶节点进行更新,得到新区块;启动区块更新流程,将新区块在区块链节点之间做共识。
在本方法中,按照变色龙默克尔树结构存储区块链中的交易数据。该变色龙默克尔树的所有叶子节点均存储采用变色龙哈希计算得到的哈希值。需要说明的是,变色龙哈希(Chameleon Hash,CH)与大多数哈希函数不同,CH额外含有一个陷门密钥。对于不拥有陷门密钥的用户来说,CH的性质与普通哈希函数没有区别。但是对于陷门密钥的拥有者来说,找到一个哈希原像的碰撞将是一件容易计算的问题。基于此,当监管节点接收到数据更新请求时,可确定出待更新旧数据在变色龙默克尔树中对应的目标叶节点。然后,计算出目标叶节点针对新数据的哈希碰撞,得到目标随机数。便可利用目标随机数和新数据对目标叶节点进行更新,得到新区块,且更新后的目标叶节点的哈希值与原哈希值相同,因此不会影响非目标叶节点之外的其他节点。如此,便可完成数据的更新,实现了区块链数据的维护性及可监管性。即,在出现不适宜公开或出现程序错误时,可采用此方法进行解决,降低各类损失。
需要说明的是,基于上述实施例,本申请实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
采用实施例一所描述的方法,对于其他非监管节点来说,即使监管节点能够任意修改区块历史数据,但监管的流程是会留下痕迹的,因为之前区块链的数据已经在网络中传播流通,历史数据也有可能存在于某个节点中未被更新或留有备份。因此,当监管节点滥用权力修改区块链历史数据时,其他节点可以通过拿出更改前的元数据及其对应区块作为证据,证明监管节点修改了历史数据。因为只有监管者拥有陷门密钥,因此对于其他非监管节点来说找到满足算法条件的哈希碰撞是几乎不可能的,因此监管节点无法抵赖自己的修改历史数据操作,以此反向监督监管节点不滥用修改区块链历史数据的权利。
优选地,在上述实施例一的基础上,还可对修改进行论证。具体实现过程,包括:
步骤一、接收修改论证请求,确定参考数据和嫌疑数据;
步骤二、若参考数据与嫌疑数据产生哈希碰撞,则确定嫌疑数据已修改;
步骤三、若参考数据与嫌疑数据未产生哈希碰撞,则确定嫌疑数据未修改。
为便于描述,下面将上述三个步骤结合起来进行说明。
修改论证请求可具体有非监管节点的其他节点发起,在该请求中可携带参考数据以及并指出嫌疑数据。其中,参考数据可为预先备份的区块数据,也可为区块中未更新前的区间数据。嫌疑数据即存在修改嫌疑的数据。
由于没有陷门密钥,计算出哈希碰撞几乎不可能。因此,一旦出现两个不同的数据,但这两个数据的变色龙哈希计算结果一致,则可确定嫌疑数据被修改。当然,也可直接判断参考数据与嫌疑数据是否完全一致,若完全一致即可表明嫌疑数据未被修改,否则确定嫌疑数据被修改。如此,便可对数据的修改进行监管论证。即,监管者对区块进行修改的操作可以被非监管者发现,因此从非监管者视角可以反向监督监管者对区块进行修改的操作,保证监管者不会滥用权力。
实施例二:
相应于上面的方法实施例,本申请实施例还提供了一种可应用于区块链系统中的监督节点,区块链数据更新装置,下文描述的区块链数据更新装置与上文描述的区块链数据更新方法可相互对应参照。
参见图3所示,该装置包括以下模块:
请求接收模块101,用于接收数据更新请求,确定目标对象的旧数据在变色龙默克尔树中对应的目标叶节点;变色龙默克尔树中的叶节点均存储采用变色龙哈希计算得到的哈希值;
碰撞计算模块102,用于计算出目标叶节点针对目标对象的新数据的哈希碰撞,获得目标随机数;
数据更新模块103,用于利用目标随机数和新数据对目标叶节点进行更新,得到新区块;
共识更新模块104,用于在利用目标随机数和新数据对目标叶节点进行更新之后,启动区块更新流程,将新区块在区块链节点之间做共识。
应用本申请实施例所提供的装置,区块链系统中的监管节点接收数据更新请求,确定目标对象的旧数据在变色龙默克尔树中对应的目标叶节点;变色龙默克尔树中的叶节点均存储采用变色龙哈希计算得到的哈希值;计算出目标叶节点针对目标对象的新数据的哈希碰撞,获得目标随机数;利用目标随机数和新数据对目标叶节点进行更新,得到新区块;启动区块更新流程,将新区块在区块链节点之间做共识。
在本装置中,按照变色龙默克尔树结构存储区块链中的交易数据。该变色龙默克尔树的所有叶子节点均存储采用变色龙哈希计算得到的哈希值。需要说明的是,变色龙哈希(Chameleon Hash,CH)与大多数哈希函数不同,CH额外含有一个陷门密钥。对于不拥有陷门密钥的用户来说,CH的性质与普通哈希函数没有区别。但是对于陷门密钥的拥有者来说,找到一个哈希原像的碰撞将是一件容易计算的问题。基于此,当监管节点接收到数据更新请求时,可确定出待更新旧数据在变色龙默克尔树中对应的目标叶节点。然后,计算出目标叶节点针对新数据的哈希碰撞,得到目标随机数。便可利用目标随机数和新数据对目标叶节点进行更新,得到新区块,且更新后的目标叶节点的哈希值与原哈希值相同,因此不会影响非目标叶节点之外的其他节点。如此,便可完成数据的更新,实现了区块链数据的维护性及可监管性。即,在出现不适宜公开或出现程序错误时,可采用此装置进行解决,降低各类损失。
在本申请的一种具体实施方式中,还包括:
数据存储模块,用于在接收数据更新请求之前,基于椭圆曲线生成随机数作为陷门私钥,并根据陷门私钥计算得到陷门公钥;向区块链系统中的其它节点公开陷门公钥,以使区块链系统中的提议节点利用陷门公钥构建变色龙默克尔树。其中,提议节点利用待存储数据的总量计算出变色龙默克尔树的高度,并利用陷门公钥构建高度对应的变色龙默克尔树。
在本申请的一种具体实施方式中,碰撞计算模块102,具体用于结合陷门密钥计算出满足新数据与旧数据发生哈希碰撞时对应的目标随机数。
在本申请的一种具体实施方式中,碰撞计算模块102,具体用于获取基于椭圆曲线生成的陷门私钥;获取旧数据的目标哈希值;结合陷门私密钥计算出新数据也对应目标哈希值时的目标随机数。
在本申请的一种具体实施方式中,还包括:
修改论证模块,用于接收修改论证请求,确定参考数据和嫌疑数据;若参考数据与嫌疑数据产生哈希碰撞,则确定嫌疑数据已修改;若参考数据与嫌疑数据未产生哈希碰撞,则确定嫌疑数据未修改。
实施例三:
相应于上面的方法实施例,本申请实施例还提供了一种区块链数据更新设备,下文描述的一种区块链数据更新设备与上文描述的一种区块链数据更新方法可相互对应参照。
参见图4所示,该区块链数据更新设备包括:
存储器D1,用于存储计算机程序;
处理器D2,用于执行计算机程序时实现上述方法实施例的区块链数据更新方法的步骤。
在本实施例中,区块链数据更新设备可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机、网络存储设备终端设备。
该区块链数据更新设备可以是组成区块链网络的节点。
参见图5,图5为本申请实施例公开的另一种区块链数据更新设备示意图。该区块链数据更新设备可以包括存储器11、处理器12和总线13。
其中,存储器11至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是区块链数据更新设备的内部存储单元,例如该区块链数据更新设备的硬盘。存储器11在另一些实施例中也可以是区块链数据更新设备的外部存储设备,例如区块链数据更新设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括区块链数据更新设备的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于区块链数据更新设备的应用软件及各类数据,例如区块链数据更新程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行区块链数据更新程序等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,区块链数据更新设备还可以包括网络接口,网络接口可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该设备与其他电子设备之间建立通信连接。
可选地,该设备还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在该设备中处理的信息以及用于显示可视化的用户界面。
图5仅示出了具有组件11-13的区块链数据更新设备,本领域技术人员可以理解的是,图5示出的结构并不构成对设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
实施例四:
相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种区块链数据更新方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的区块链数据更新方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
实施例五:
相应于上面的方法实施例,本申请实施例还提供了一种区块链系统,下文描述的一种区块链系统与上文描述的一种区块链数据更新方法可相互对应参照。
该系统,包括:
监管节点和提议节点,其中,监管节点用于执行如上述方法实施例所描述的区块链数据更新方法的步骤,提议节点用于向监管节点发送数据更新请求并构建变色龙默克尔树。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。