区块链编辑的方法和区块链节点与流程

文档序号:31688963发布日期:2022-09-30 22:08阅读:295来源:国知局
区块链编辑的方法和区块链节点与流程

1.本技术涉及区块链领域,并且更具体地,涉及一种区块链编辑的方法和区块链节点。


背景技术:

2.区块链是一种防篡改的、公开透明的去中心化账本,用于记录公有或私有对等网络中的交易。数据以区块(block)为单位产生和存储,并按照时间顺序连成链式(chain)数据结构。利用区块记录发生的交易,并在区块与区块之间通过哈希算法链接起来,永久记录网络中的对等节点之间发生的资产交易的历史记录。
3.区块链具有天然不可修改的特点,但是,很多现实场景下需要对区块链中的区块进行修改。例如,区块链上存在有害或潜在的非法的文件、图像和链接时,有必要对非法数据做出更改;从隐私保护的角度,gdpr规定了数据主体享有“数据被遗忘权”和“数据可携带权”等权利,数据主体有权让数据控制主体擦除其个人数据,停止数据的进一步传播。
4.现有技术中,使用变色龙哈希(chameleon hash)函数实现对区块的重写,但是,该方法存在删除或修改前的区块无法追溯和曾经存在过的数据无法证明等缺点。


技术实现要素:

5.本技术提供了一种无线通信的方法和装置,能够实现对区块链的删除或修改进行追溯和证明,提高了区块链的安全性。
6.第一方面,提供一种区块链编辑的方法,包括:接收第一消息,所述第一消息用于请求修改或删除区块链中的第一区块;响应于所述第一消息,利用预设的哈希函数对所述第一区块进行处理;将第一信息对应的哈希值保存至第二区块中,所述第二区块为所述区块链中增加的区块,其中,所述第一信息用于指示所述第一区块被修改过或删除过。
7.可选的,也可以是基于时间戳或某一事件或某一条件的触发,利用预设的哈希函数对所述第一区块进行处理。
8.结合第一方面,在第一方面的某些实现方式中,所述第一信息包括布隆过滤器的标识信息,所述布隆过滤器用于保存修改或删除前的所述第一区块中的数据信息。
9.布隆过滤器用于保存修改前的区块中的数据或删除前的区块中的数据,能够实现对区块链的每一个编辑历史的追溯,也可以防止区块链节点的越权处理,例如,区块链节点不去修改或者过度修改。
10.结合第一方面,在第一方面的某些实现方式中,所述第一信息包括所述第一区块的编辑列表信息。区块的编辑列表信息能够对数据的历史性存在进行证明。
11.结合第一方面,在第一方面的某些实现方式中,所述第一消息中包括请求修改的数据信息,所述预设的哈希函数为变色龙哈希函数;所述利用预设的哈希函数对所述第一区块进行处理,包括:根据所述请求修改的数据信息确定第一树根值,所述第一树根值为所述第一区块中修改后的数据的哈希值;根据所述变色龙哈希函数的密钥和所述第一树根值
确定所述第一区块的第一随机数;利用所述第一树根值和所述第一随机数对所述第一区块进行更新。
12.结合第一方面,在第一方面的某些实现方式中,所述方法还包括:向至少一个第三节点发送第二消息,所述第二消息中包括所述第一区块对应的所述第一树根值和所述第一随机数,所述第二消息用于指示所述至少一个第三节点根据所述第一树根值和所述第一随机数更新所述第三节点保存的信息,其中,所述至少一个第三节点为区块链节点。
13.结合第一方面,在第一方面的某些实现方式中,所述第一消息用于请求删除区块链中的第一区块,所述预设的哈希函数为变色龙哈希函数;所述利用预设的哈希函数对所述第一区块进行处理,包括:根据所述第一消息确定第二树根值,所述第二树根值为零;根据所述变色龙哈希函数的密钥和所述第二树根值确定所述第一区块的第二随机数;利用所述第二树根值和所述第二随机数对所述第一区块进行更新。
14.结合第一方面,在第一方面的某些实现方式中,所述方法还包括:向至少一个第三节点发送第三消息,所述第三消息中包括所述第一区块对应的所述第二树根值和所述第二随机数,所述第三消息用于指示所述至少一个第三节点根据所述第二树根值和所述第二随机数更新所述第三节点保存的信息,其中,所述至少一个第三节点为区块链节点。
15.结合第一方面,在第一方面的某些实现方式中,所述接收第一消息,包括:接收来自第二节点的所述第一消息,所述第二节点为所述第一区块中保存的数据的拥有者。
16.结合第一方面,在第一方面的某些实现方式中,所述第一节点接收第一消息,包括:接收来自第三节点的所述第一消息,所述第三节点为所述区块链节点。
17.结合第一方面,在第一方面的某些实现方式中,所述利用预设的哈希函数对所述第一区块进行处理之前,所述方法还包括:验证所述第一消息的合法性;所述利用预设的哈希函数对所述第一区块进行处理,包括:当所述第一消息被验证通过时,利用所述预设的哈希函数对所述第一区块进行处理。
18.结合第一方面,在第一方面的某些实现方式中,所述第一区块的编辑列表信息包括以下至少一项:修改的区块的高度、交易的标识、本次修改或删除的时间戳、编辑的类型和编辑记录所在的区块。
19.结合第一方面,在第一方面的某些实现方式中,所述第一消息具体用于请求修改或删除所述区块链中的所述第一区块的第一交易对应的数据。
20.基于上述技术方案,第一节点(区块链节点)可以根据第一区块中保存的数据的拥有者的请求消息,修改或删除区块链中的第一区块,并将指示第一区块被修改过或删除过的第一信息的哈希值保存至区块链中新增加的区块的头部,第一信息可以为用于保存修改或删除前的第一区块中的数据的布隆过滤器的标识信息和/或第一区块的编辑列表信息,第一信息为不可修改的。因此,该技术方案能够实现对区块链的删除或修改进行追溯和证明,提高了区块链的安全性。
21.第二方面,提供了一种区块链节点,包括:收发模块,用于接收第一消息,所述第一消息用于请求修改或删除区块链中的第一区块;处理模块,用于响应于所述第一消息,利用预设的哈希函数对所述第一区块进行处理;所述处理模块还用于,将第一信息对应的哈希值保存至第二区块中,所述第二区块为所述区块链中增加的区块,其中,所述第一信息用于指示所述第一区块被修改过或删除过。
22.结合第二方面,在第二面的某些实现方式中,所述第一信息包括布隆过滤器的标识信息,所述布隆过滤器用于保存修改或删除前的所述第一区块中的数据信息。
23.结合第二方面,在第二面的某些实现方式中,所述第一信息包括所述第一区块的编辑列表信息。
24.结合第二方面,在第二面的某些实现方式中,所述第一消息中包括请求修改的数据信息,所述预设的哈希函数为变色龙哈希函数;所述处理模块具体用于:根据所述请求修改的数据信息确定第一树根值,所述第一树根值为所述第一区块中修改后的数据的哈希值;根据所述变色龙哈希函数的密钥和所述第一树根值确定所述第一区块的第一随机数;利用所述第一树根值和所述第一随机数对所述第一区块进行更新。
25.结合第二方面,在第二面的某些实现方式中,所述收发模块还用于,向至少一个第三节点发送第二消息,所述第二消息中包括所述第一区块对应的所述第一树根值和所述第一随机数,所述第二消息用于指示所述至少一个第三节点根据所述第一树根值和所述第一随机数更新所述第三节点保存的信息,其中,所述至少一个第三节点为区块链节点。
26.结合第二方面,在第二面的某些实现方式中,所述第一消息用于请求删除区块链中的第一区块,所述预设的哈希函数为变色龙哈希函数;所述处理模块具体用于:根据所述第一消息确定第二树根值,所述第二树根值为零;根据所述变色龙哈希函数的密钥和所述第二树根值确定所述第一区块的第二随机数;利用所述第二树根值和所述第二随机数对所述第一区块进行更新。
27.结合第二方面,在第二面的某些实现方式中,所述收发模块还用于,向至少一个第三节点发送第三消息,所述第三消息中包括所述第一区块对应的所述第二树根值和所述第二随机数,所述第三消息用于指示所述至少一个第三节点根据所述第二树根值和所述第二随机数更新所述第三节点保存的信息,其中,所述至少一个第三节点为区块链节点。
28.结合第二方面,在第二面的某些实现方式中,所述收发模块具体用于,接收来自第二节点的所述第一消息,所述第二节点为所述第一区块中保存的数据的拥有者。
29.结合第二方面,在第二面的某些实现方式中,所述收发模块具体用于,接收来自第三节点的所述第一消息,所述第三节点为所述区块链节点。
30.结合第二方面,在第二面的某些实现方式中,所述处理模块还用于,验证所述第一消息的合法性;所述处理模块具体用于,当所述第一消息被验证通过时,利用所述预设的哈希函数对所述第一区块进行处理。
31.结合第二方面,在第二面的某些实现方式中,所述第一区块的编辑列表信息包括以下至少一项:修改的区块的高度、交易的标识、本次修改或删除的时间戳、编辑的类型和编辑记录所在的区块。
32.结合第二方面,在第二面的某些实现方式中,所述第一消息具体用于请求修改或删除所述区块链中的所述第一区块的第一交易对应的数据。
33.第三方面,提供了一种计算机可读存储介质,该计算机可读介质存储有计算机程序(也可以称为代码,或指令),当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面中任一种可能实现方式中的方法。
34.第四方面,提供了一种芯片,包括处理器,所述处理器与存储器相连,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,以使得所述
芯片执行上述第一方面以及第一方面中任一种可能实现方式中的方法。
附图说明
35.图1是区块链示意图。
36.图2是区块与区块之间的链接示意图。
37.图3是一种利用变色龙哈希函数进行区块链替换的示意图。
38.图4是基于双链方式的区块链数据修改的示意图。
39.图5是一种区块链编辑方法的示意性流程图。
40.图6是第一区块修改前后的区块状态示意图。
41.图7是一种生成区块的编辑列表信息的哈希值的示意图。
42.图8是本技术实施例的一种区块链节点的示意性框图。
43.图9是本技术实施例的一种芯片的示意性框图。
具体实施方式
44.下面将结合附图,对本技术中的技术方案进行描述。
45.本技术实施例可以应用于各种通信系统,例如无线局域网系统(wireless local area network,wlan)、窄带物联网系统(narrow band-internet of things,nb-iot)、全球移动通信系统(global system for mobile communications,gsm)、增强型数据速率gsm演进系统(enhanced data rate for gsm evolution,edge)、宽带码分多址系统(wideband code division multiple access,wcdma)、码分多址2000系统(code division multiple access,cdma2000)、时分同步码分多址系统(time division-synchronization code division multiple access,td-scdma),长期演进系统(long term evolution,lte)、卫星通信、第五代(5th generation,5g)系统或者将来出现的新的通信系统等。
46.本技术实施例中所涉及到的终端设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其它处理设备。终端可以是移动台(mobile station,ms)、用户单元(subscriber unit)、用户设备(user equipment,ue)、蜂窝电话(cellular phone)、智能电话(smart phone)、无线数据卡、个人数字助理(personal digital assistant,pda)电脑、平板型电脑、无线调制解调器(modem)、手持设备(handset)、膝上型电脑(laptop computer)、机器类型通信(machine type communication,mtc)终端等。
47.区块链是一种防篡改的、公开透明的去中心化账本,用于记录公有或私有对等网络中的交易。数据以区块(block)为单位产生和存储,并按照时间顺序连成链式(chain)数据结构。利用区块记录发生的交易,并在区块与区块之间通过哈希算法链接起来,永久记录网络中的对等节点之间发生的资产交易的历史记录。所有经过确认和证明的交易都从链的初始块一直链接到最新的区块,因此得名区块链。其中,哈希算法就是用来把任意长度的有规则的数据弄乱成一个固定长度的数据的一种函数。区块链中的每一个区块都有一个对头部进行sha256加密哈希函数计算得出的哈希值作为标识。由于每个区块需要连接到前一个区块,所以每个区块头部专门有一个字段用来存储前一区块(父区块)的哈希值。这样每个区块都连接到了他们的父区块,从而创建了区块链。如图1所示,出示了区块链示意图。
48.如图2所示,出示了区块与区块之间的链接示意图。区块链上的每个区块都包含区块头部和区块体两个部分。区块头部中包括哈希值hash、时间戳timestamp和随机数等,区块体中包括数据。其中,前一区块的头部的字串,包括版本号、上一区块哈希值、默克尔(merkle)根节点、时间戳、难度值和随机数,经过哈希计算后,写入后一区块头部中的“上一区块哈希值”字段。
49.由于区块链的天然不可修改的特点,给它的实际部署和安全带来了如下问题:
50.1、从信息安全角度来讲,目前区块链领域的研究和应用更多地强调链上数据的存储与传输安全,而忽略了更为重要的信息内容安全。例如:
51.1)缺乏必要的上链信息审核与评估机制,区块链系统的验证者(矿工)重点核查上链信息的语法正确性,而忽略了信息内容的语义合理性甚至是真实性;
52.2)链上数据的搜索与甄别机制尚不完善,在区块链中存在有害和潜在非法的文件、图像和链接时,有必要对非法数据做出更改;
53.3)区块链的公开透明性和不可篡改性,使得不良信息将带来大范围、持续性、甚至是永久性的负面影响,区块链可能会成为规避监管、发布不良信息的有效途径。
54.2、靠硬分叉才能解决的攻击问题,区块链和链上的智能合约,本质上也是软件代码,难免会出现漏洞,攻击者利用这些漏洞造成的攻击,如利用漏洞盗取的虚拟货币,数字资产等,由于区块链无法修改,对这些攻击结果也无法消减。
55.例如,去中心化自治组织(decentralized autonomous organization,dao)攻击,代币价格大约是100个dao兑换1至1.5个以太坊。dao项目总共筹到了超过1200万个以太坊,几乎占到了当时以太坊数量的14%。黑客利用了漏洞,进行了两百多次攻击,总共盗走了360万的以太坊,超过了该项目筹集的以太坊总数目的三分之一。后来,备受瞩目的硬分叉成功实施,分叉之后,形成了两条链,一条为原链,一条为新的分叉链。
56.3、个人数据保护条例(personal data protection regulations,pdpr)的数据可遗忘权与区块链不可修改之间的矛盾。从隐私保护的角度,gdpr规定了数据主体享有“数据被遗忘权”和“数据可携带权”等权利,数据主体有权让数据控制主体擦除其个人数据,停止进一步传播数据,并有权要求第三方停止处理数据。特别是在未来通信网将会面临大量用户/设备/厂商信息的个人数据,隐私问题严峻,该冲突将大大限制区块链的未来通信网中的探索、使用和部署。
57.在现有技术方案中,提出了利用变色龙哈希(chameleon hash)函数实现对区块的重写。变色龙哈希是一种特殊的哈希(hash)函数,变色龙哈希函数留有一个陷门,对于陷门的拥有者,可以利用陷门计算一个新的内容,使其与某一原始内容具有相同的哈希值,即产生哈希碰撞。
58.如图3所示,出示了一种利用变色龙哈希函数进行区块链替换的示意图。原始区块链中包含区块b0、b1、b2、b3、

bn,当需要对区块b2进行替换的时候,拥有陷门的区块链节点利用陷门计算出区块b2',使得hash(b2)=hash(b2'),即区块b2'与区块b2对应的哈希值相同,将b2替换为b2',并对修改后的区块b2'重新编号,得到修改后的区块链,修改后的区块链包含区块b0、b1、b2'、b3、

bn。
59.使用变色龙哈希函数实现了区块的更新,但是对安全性的考量不够,依然存在一些不足,包括缺少对编辑历史的管理、缺少区块链编辑节点的审计、细粒度只能到区块等。
如:
60.(1)对已经编辑历史无纪录,某个区块被删除或修改后,无法追溯;
61.(2)对曾经存在过的数据无法证明;
62.(3)对某一区块链节点上获取的区块,是否已经被任意更新或者拒不更新,除了去更多的节点查询外,无有效的方法验证;
63.(4)区块级别的重写,对交易级别、数据项级别缺少定义和描述。
64.目前,又提出了双链的方式解决区块链的编辑的问题。双区块链模式由“共生”的数据链和修正链组成,其中数据链存储原始区块链数据,而修正链则以区块为粒度只存储修改后的新数据。
65.如图4所示,出示了基于双链方式的区块链数据修改的示意图。其中,(a)表示原始的区块链。(b)是将区块链(a)中的区块b
i+1
修改为区块cb1,区块cb1组成修正链;对原始区块链中的区块b
i+1
进行删除,形成数据链。(c)表示对另一原始的区块链进行修改,将区块b
i+1
修改为区块cb1。(d)表示对另一原始的区块链中的区块b
i+1
和区块b
j+1
进行修改,将区块b
i+1
修改为区块cb1,将区块b
j+1
修改为cb2,区块cb1和区块cb2组成修正链;对另一原始的区块链中的区块b
i+1
和区块b
j+1
进行删除,形成数据链。
66.区块链的验证者同时验证和维护两条区块链。在顺序地遍历区块链时,每次在区块链上发现区块被修改时,就切换到修正链上读取相对应的新区块数据。
67.数据链和修正链具有相同的创世区块,如有数据需要更新,请求此更新的用户可以在数据链上发起一个选举,并提供待修改的区块高度、待修改的数据位置以及修改后的新区块等信息。其中,创世区块是2009年创建的区块链中的第一个区块,它是区块链中所有区块的祖先,从任何一个区块向前追溯,最终都会到达创世区块。
68.所有验证者根据控制策略来验证新区块中数据的正确性,在通过验证后,将数据写入修正链上的最新区块中。
69.选举交易将会启动一次链上投票过程,每个验证者将根据其是否同意此次数据修改进行投票,这些投票将会写入数据链的后续区块中。投票持续时间截止后,如果同意修改的验证者超过预定义的阈值比例,则执行此次修改,将修改后区块写入修正链,并重新编号;修改后的区块对应的原始区块可能被删除。
70.维护双区块链的方式的对区块链进行修改,无法对已经删除掉的进行历史存在性证明,且维护双区块链需要更高的成本。
71.为此,本技术提出了一种区块链编辑方法,能够实现对区块链的删除或修改进行追溯和证明,提高了区块链的安全性。
72.如图5所示,出示了一种区块链编辑方法的示意性流程图。
73.510,第一节点接收第一消息,该第一消息用于请求修改或删除区块链中的第一区块。
74.其中,第一节点为区块链节点,区块链节点可以称为区块链的维护者或记账者,是具有计算和存储能力的节点,例如,服务器、终端等。应理解,第一消息具体可用于请求修改或删除区块链中的第一区块中的第一交易对应的数据。
75.具体而言,可选的,第一节点可以接收来自第二节点的第一消息,其中,第二节点为第一区块中保存的数据的拥有者,例如用户。只有第一区块中保存的数据的拥有者才有
资格提出修改或删除第一区块的请求;若第一区块中保存的数据的拥有者为交易双方,则需要双方共同发起修改或删除的请求,此时第二节点不止一个。
76.具体而言,可选的,第一节点可以接收来自第三节点的第一消息,第三节点也为区块链节点。第二节点将第一消息发送至第三节点后,第三节点可以将该第一消息发送至第一节点。可选的,第三节点发送第一消息的方式可以是广播的方式,即第三节点可以将第一消息发送至其他第三节点,其他第三节点再将第一消息转发至第一节点,本技术对此不做具体限定。
77.520,第一节点响应于第一消息,利用预设的哈希函数对第一区块进行处理。
78.其中,预设的哈希函数可以为变色龙哈希函数,也可以为变色龙哈希函数的变种,第一节点可以利用变色龙哈希函数或变色龙哈希函数的变种对第一区块进行修改或删除。
79.其中,第一节点为掌握预设的哈希函数(变色龙哈希函数)的密钥或陷门的区块链节点,第一节点可以为一个,也可以为多个。当第一节点为多个时,多个第一节点共同对第一区块进行修改或删除。
80.在一种实现方式中,可选的,第一消息中包括请求修改的数据信息;第一节点根据第一消息中请求修改的数据信息确定第一树根值,第一树根值为第一区块中修改后的数据的哈希值,即第一树根值可以理解为当前树根值。
81.举例来说,所述利用预设的哈希函数对第一区块进行处理,包括:第一节点根据预设的哈希函数的密钥、第一树根值确定第一区块的第一随机数。第一节点利用第一树根值和第一随机数对第一区块进行更新;换言之,第一节点将第一区块中的原始树根值修改为第一树根值,将原始随机数修改为第一随机数,其中,原始树根值为第一区块中修改前的数据的哈希值。
82.举例来说,所述利用预设的哈希函数对第一区块进行处理,包括:,第一节点根据预设的哈希函数的密钥、第一树根值和第一时间戳,确定第一区块的第一随机数,使得第一树根值、第一时间戳和第一随机数对应的哈希值等于第一区块中的原始树根值、原始时间戳和原始随机数对应的哈希值,其中,第一时间戳为当前时间戳。第一节点利用第一树根值、第一时间戳和第一随机数对第一区块进行更新;换言之,第一节点将第一区块中的原始树根值修改为第一树根值,将原始随机数修改为第一随机数,将原始时间戳修改为第一时间戳。
83.应理解,若掌握预设的哈希函数的密钥第一节点为多个,则多个第一节点共同计算来确定第一区块的第一随机数。
84.如图6所示,出示了第一区块修改前后的区块状态示意图。
85.第一区块修改前保存的是交易a、交易b、交易c和交易d的数据信息,原始树根值是根据交易a、交易b、交易c和交易d计算确定的;第一节点接收到的第一消息可以请求将交易a修改为交易a’,则第一节点将交易a对应的数据修改为交易a’对应的数据,根据交易a’、交易b、交易c和交易d计算确定第一树根值,利用预设的哈希函数确定第一随机数,并确定第一时间戳,将原始树根值、原始随机数和原始时间戳修改为第一树根值、第一随机数和第一时间戳。应理解,修改的是第一区块的区块体,第一区块的区块头是不做修改的;区块头部中的第一树根值、第一随机数和第一时间戳对应的哈希值与原始树根值、原始随机数和原始时间戳对应的哈希值是相同的,因此,该哈希值并不做修改。
86.区块链的维护者为多个,且多个区块链节点维护的区块链要保持一致性,因此,第一节点对保存的第一区块进行更新后,向第一节点之外的至少一个第三节点发送第二消息,该第二消息中包括第一区块对应的第一树根值和第一随机数,该第二消息用于指示至少一个第三节点根据第一树根值和第一随机数更新其保存的信息。可选的,第二消息中包括第一区块对应的第一树根值、第一时间戳和第一随机数。
87.第三节点接收到第一节点发送的第二消息后,将其保存的第一区块中的原始树根值修改为第一树根值,将原始随机数修改为第一随机数,将原始时间戳修改为第一时间戳。
88.在另一种实现方式中,可选的,第一消息用于请求删除区块链中的第一区块,即删除第一区块中保存的数据;第一节点根据第一消息确定第二树根值,第二树根值为零或为空(null)。应理解,该情况下第一消息用于请求删除第一区块中的所有交易数据。可选的,第一消息也可以用于请求删除第一区块中的某个交易数据,本技术对此不做限定。
89.举例来说,所述利用预设的哈希函数对第一区块进行处理,包括:第一节点根据预设的哈希函数的密钥、第二树根值确定第一区块的第二随机数。第一节点利用第二树根值和第二随机数对第一区块进行更新;换言之,第一节点将第一区块中的原始树根值修改为第二树根值,将原始随机数修改为第二随机数,其中,原始树根值为第一区块中删除前的数据的哈希值。
90.举例来说,所述利用预设的哈希函数对第一区块进行处理,包括:第一节点根据预设的哈希函数的密钥、第二树根值和第二时间戳,确定第一区块的第二随机数,使得第二树根值、第二时间戳和第二随机数对应的哈希值等于第一区块中的原始树根值、原始时间戳和原始随机数对应的哈希值,其中,第二时间戳为当前时间戳。第一节点利用第二树根值、第二间戳和第二随机数对第一区块进行更新;换言之,第一节点将第一区块中的原始树根值修改为第二树根值,将原始随机数修改为第二随机数,将原始时间戳修改为第二时间戳。
91.应理解,若掌握预设的哈希函数的密钥第一节点为多个,则多个第一节点共同计算来确定第一区块的第二随机数。
92.区块链的维护者为多个,且多个区块链节点维护的区块链要保持一致性,因此,第一节点对保存的第一区块进行更新后,向第一节点之外的至少一个第三节点发送第三消息,该第三消息中包括第一区块对应的第二树根值和第二随机数,该第三消息用于指示至少一个第三节点根据第二树根值和第二随机数更新其保存的信息。可选的,第三消息中包括第一区块对应的第二树根值、第二时间戳和第二随机数。
93.第三节点接收到第一节点发送的第三消息后,将其保存的第一区块中的原始树根值修改为第二树根值,将原始随机数修改为第二随机数,将原始时间戳修改为第二时间戳。
94.可选的,在第一节点利用预设的哈希函数对第一区块进行处理之前,第一节点还可以根据第一消息,验证第一消息的合法性。首先,第一节点确定第一消息中的签名信息是否正确或合法;其次,第一节点根据第一消息确定请求修改或删除第一区块的节点是否是第一区块中保存的数据的拥有者。签名信息正确或合法,且请求修改或删除第一区块的节点是第一区块中保存的数据的拥有者时,第一节点才会利用预设的哈希函数对第一区块进行处理。
95.由于用于请求修改或删除第一区块的第一消息也是一种交易,需要将该交易数据保存至区块链中。因此,第一节点验证第一消息合法后,可以将第一消息对应的数据保存至
区块链中新增加的区块中。
96.可选的,第一节点也可以是基于时间戳或某一事件或某一条件的触发,利用预设的哈希函数对第一区块进行处理,本技术对此不做具体限定。
97.530,第一节点将第一信息对应的哈希值保存至第二区块中,第二区块为区块链中增加的区块,其中,第一信息用于指示第一区块被修改过或删除过。具体而言,将第一信息对应的哈希值保存至第二区块的头部,应理解,保存至头部的哈希值使用的是传统哈希,是不可修改的。
98.可选的,第一信息可以是布隆过滤器(bloom filter,bf)的标识信息,该布隆过滤器用于保存修改前的第一区块中的数据或删除前的第一区块中的数据信息。布隆过滤器的标识信息可以是布隆过滤器对应的标志位信息。第一节点可以将布隆过滤器的标识信息对应的哈希值保存至第二区块的头部。应理解,布隆过滤器保存的修改前或删除前的第一区块数据信息可以是第一区块中的原始数据,也可以是第一区块中的原始数据的部分数据,也可以是对原始数据经过编码处理后的数据信息,本技术对此不做限定。
99.布隆过滤器用于保存修改前的区块中的数据或删除前的区块中的数据信息,能够实现对区块链的每一个编辑历史的追溯,也可以防止区块链节点的越权处理,例如,区块链节点不去修改或者过度修改。
100.可选的,第一信息可以是第一区块的编辑列表(block edit list,bel)信息;第一节点可以将第一区块的编辑列表信息对应的哈希值保存至第二区块的头部。
101.区块的编辑列表信息包括修改的区块的高度、交易的标识、本次修改或删除的时间戳、编辑的类型和编辑记录所在的区块。其中,修改的区块的高度包括修改的区块的标识;交易的标识也可以称为交易的序列号;编辑的类型包括修改(modify)和删除(delete);编辑记录所在的区块是指请求修改或删除区块的请求消息(交易信息)对应的哈希值记录所在的区块。区块的编辑列表信息能够对数据的历史性存在进行证明。
102.如表1所示,出示了一种区块的编辑列表信息。
103.表1
[0104][0105]
对于区块高度很高或者频繁修改的区块链,可以通过分段式的区块编辑列表,来降低对bel的查询和验证时间。如表2所示,出示了一种分段式的区块的编辑列表信息。区块1至区块m对应的编辑列表信息生成一个哈希值保存至新增的区块的头部,区块m+1至区块n对应的编辑列表信息生成另一个哈希值保存至新增的区块的头部。
[0106]
表2
[0107]
区块1~区块m
[0108][0109]
区块m+1~区块n
[0110][0111][0112]
对于区块高度很高或者频繁修改的区块链,可以将ble的哈希值分解为默克尔树(merkle tree)的形式,以降低对区块头部ble对应的哈希过多时的管理成本。
[0113]
如图7所示,出示了一种生成区块的编辑列表信息的哈希值的示意图。
[0114]
每棵树各叶子节点为链下存储的bel,由各bel的逐层两两哈希生成bel_hash_root,当bel需要修改时,则在新的区块中修改对应的路径上的hash值,直至更新至根节点;当用户需要进行验证时,首先从对应bel中获取的编辑列表信息,如bel3中查询对应内容,同时获取hash4、hash00、最新区块头部的bel_hash_root,校验bel3中记录的编辑历史的真实性。
[0115]
可选的,第一信息可以包括布隆过滤器的标识信息和第一区块的编辑列表信息;第一节点可以将布隆过滤器的标识信息对应的哈希值和第一区块的编辑列表信息对应的哈希值都保存至第二节点的头部。
[0116]
区块的编辑列表信息是一种离线的区块编辑列表信息,可存储在区块链之外的存储空间,每个区块链节点(第一节点/第三节点)都可以维护区块的编辑列表信息。当区块中保存的数据的拥有者成功发起一次区块编辑后,区块链节点更新一次区块的编辑列表信息,并将最新的区块的编辑列表信息对应的哈希值记录到新的区块的头部,以保障编辑记录的不可篡改性。
[0117]
本技术提供的技术方案中,第一节点(区块链节点)可以根据第一区块中保存的数据的拥有者的请求消息,修改或删除区块链中的第一区块,并将指示第一区块被修改过或删除过的第一信息的哈希值保存至区块链中新增加的区块的头部,第一信息可以为用于保存修改或删除前的第一区块中的数据的布隆过滤器的标识信息和/或第一区块的编辑列表信息,第一信息为不可修改的。因此,该技术方案能够实现对区块链的删除或修改进行追溯和证明,提高了区块链的安全性。
[0118]
本技术实施例提出了一种区块链节点,如图8所示,出示了本技术实施例的一种区块链节点800的示意性框图。该装置可以应用于本技术实施例中的第一节点。该区块链节点800包括:
[0119]
收发模块810,用于接收第一消息,所述第一消息用于请求修改或删除区块链中的
第一区块;
[0120]
处理模块820,用于响应于所述第一消息,利用预设的哈希函数对所述第一区块进行处理;
[0121]
所述处理模块820还用于,将第一信息对应的哈希值保存至第二区块中,所述第二区块为所述区块链中增加的区块,其中,所述第一信息用于指示所述第一区块被修改过或删除过。
[0122]
可选的,所述第一信息包括布隆过滤器的标识信息,所述布隆过滤器用于保存修改或删除前的所述第一区块中的数据信息。
[0123]
可选的,所述第一信息包括所述第一区块的编辑列表信息。
[0124]
可选的,所述第一消息中包括请求修改的数据信息,所述预设的哈希函数为变色龙哈希函数;所述处理模块820具体用于:根据所述请求修改的数据信息确定第一树根值,所述第一树根值为所述第一区块中修改后的数据的哈希值;根据所述变色龙哈希函数的密钥和所述第一树根值确定所述第一区块的第一随机数;利用所述第一树根值和所述第一随机数对所述第一区块进行更新。
[0125]
可选的,所述收发模块810还用于,向至少一个第三节点发送第二消息,所述第二消息中包括所述第一区块对应的所述第一树根值和所述第一随机数,所述第二消息用于指示所述至少一个第三节点根据所述第一树根值和所述第一随机数更新所述第三节点保存的信息,其中,所述至少一个第三节点为区块链节点。
[0126]
可选的,所述第一消息用于请求删除区块链中的第一区块,所述预设的哈希函数为变色龙哈希函数;所述处理模块820具体用于:根据所述第一消息确定第二树根值,所述第二树根值为零;根据所述变色龙哈希函数的密钥和所述第二树根值确定所述第一区块的第二随机数;利用所述第二树根值和所述第二随机数对所述第一区块进行更新。
[0127]
可选的,所述收发模块810还用于,向至少一个第三节点发送第三消息,所述第三消息中包括所述第一区块对应的所述第二树根值和所述第二随机数,所述第三消息用于指示所述至少一个第三节点根据所述第二树根值和所述第二随机数更新所述第三节点保存的信息,其中,所述至少一个第三节点为区块链节点。
[0128]
可选的,所述收发模块810具体用于,接收来自第二节点的所述第一消息,所述第二节点为所述第一区块中保存的数据的拥有者。
[0129]
可选的,所述收发模块810具体用于,接收来自第三节点的所述第一消息,所述第三节点为所述区块链节点。
[0130]
可选的,所述处理模块820还用于,验证所述第一消息的合法性;所述处理模块具体用于,当所述第一消息被验证通过时,利用所述预设的哈希函数对所述第一区块进行处理。
[0131]
可选的,所述第一区块的编辑列表信息包括以下至少一项:修改的区块的高度、交易的标识、本次修改或删除的时间戳、编辑的类型和编辑记录所在的区块。
[0132]
可选的,所述第一消息具体用于请求修改或删除所述区块链中的所述第一区块的第一交易对应的数据。
[0133]
本技术实施例提供了一种芯片900,如图9所示,出示了本技术实施例的一种芯片900的示意性框图。
[0134]
该芯片900包括:处理器910,所述处理器与存储器920相连,所述存储器920用于存储计算机程序,所述处理器910用于执行所述存储器920中存储的计算机程序,以使得所述芯片执行本技术实施例中任意可能的实现方式中的方法。
[0135]
上述的处理器910可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0136]
本技术实施例还提供了一种计算机可读存储介质,其上存储有用于实现上述方法实施例中的方法的计算机程序。当该计算机程序在计算机上运行时,使得该计算机可以实现上述方法实施例中的方法。
[0137]
应理解,在本技术实施例中,编号“第一”、“第二
”…
仅仅为了区分不同的对象,比如为了区分不同的区块链节点,并不对本技术实施例的范围构成限制,本技术实施例并不限于此。
[0138]
另外,本技术中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;本技术中术语
“”
,可以表示“一个”和“两个或两个以上”,例如,a、b和c中,可以表示:单独存在a,单独存在b,单独存在c、同时存在a和b,同时存在a和c,同时存在c和b,同时存在a和b和c,这七种情况。
[0139]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0140]
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0141]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0142]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显
示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0143]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0144]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0145]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1