本说明书实施例属于区块链,尤其涉及一种区块链状态的存储、验证方法及区块链节点。
背景技术:
1、区块链(blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。在区块链系统中,一般通过全节点作为参与共识的最小设施,全节点需要包括全量数据,以支持共识功能。
技术实现思路
1、本发明的目的在于提供一种区块链状态的存储、验证方法及区块链节点,可以实现针对细粒度数据进行验证。
2、本说明书第一方面提供一种区块链状态的存储方法,由区块链节点执行,待存储的目标状态数据为所述区块链中的第一参数的状态数据;所述方法包括:
3、从区块链中获取上一个区块对应的第一状态树和第一默克树,所述第一默克树中包括第一参数的多个第一状态数据,所述第一状态树中包括所述第一默克树的第一根哈希值;
4、基于所述目标状态数据,更新所述第一默克树,得到第二默克树,所述第二默克树包括第二根哈希值;
5、基于所述第二根哈希值,更新所述第一状态树,得到第二状态树;
6、与当前区块关联地存储所述第二状态树和所述第二默克树。
7、本说明书第二方面提供一种区块链状态的验证方法,待验证的目标状态数据为第一区块对应的第一参数的状态数据,所述方法包括:
8、获取第一证明数据,所述第一证明数据基于所述状态树,以及所述第一区块对应的默克树的根哈希值的位置而确定;所述默克树中包括所述第一参数的多个状态数据;
9、获取第二证明数据,所述第二证明数据基于所述默克树,以及所述目标状态数据的位置而确定;
10、基于所述第一证明数据、所述第二证明数据,以及预先获取的所述第一区块的区块头,对所述目标状态数据进行存在性证明的验证。
11、本说明书第三方面提供一种区块链节点,用于存储目标状态数据,该目标状态数据为所述区块链中的第一参数的状态数据;所述区块链节点包括:
12、获取单元,用于从区块链中获取上一个区块对应的第一状态树和第一默克树,所述第一默克树中包括第一参数的多个第一状态数据,所述第一状态树中包括所述第一默克树的第一根哈希值;
13、更新单元,用于基于所述目标状态数据,更新所述第一默克树,得到第二默克树,所述第二默克树包括第二根哈希值;
14、所述更新单元,还用于基于所述第二根哈希值,更新所述第一状态树,得到第二状态树;
15、存储单元,用于与当前区块关联地存储所述第二状态树和所述第二默克树。
16、本说明书第四方面提供一种区块链节点,用于验证目标状态数据,该目标状态数据为第一区块对应的第一参数的状态数据;所述区块链节点包括:
17、获取单元,用于获取第一证明数据,所述第一证明数据基于所述状态树,以及所述第一区块对应的默克树的根哈希值的位置而确定;所述默克树中包括所述第一参数的多个状态数据;
18、所述获取单元,还用于获取第二证明数据,所述第二证明数据基于所述默克树,以及所述目标状态数据的位置而确定;
19、验证单元,用于基于所述第一证明数据、所述第二证明数据,以及预先获取的所述第一区块的区块头,对所述目标状态数据进行存在性证明的验证。
20、本说明书第五方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一、第二方面所述的方法。
21、本说明书第六方面提供一种共识节点,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一、第二方面所述的方法。
22、在本说明书实施例的方案中,针对每个区块新建默克树,该默克树中包括区块链中某参数对应的多个编码前的状态数据(也称明文状态数据)。应理解,在传统的区块链存储方案中,通常只存储编码后的状态数据,其通常是通过对若干明文状态数据进行编码得到,因此,传统的方案只能针对粗粒度数据进行验证。而本方案通过针对编码前的状态数据创建默克树,可以实现针对细粒度数据进行验证。
1.一种区块链状态的存储方法,由区块链节点执行,待存储的目标状态数据为所述区块链中的第一参数的状态数据;所述方法包括:
2.根据权利要求1所述的方法,其中,所述更新所述第一默克树,包括:
3.根据权利要求1所述的方法,其中,所述更新所述第一状态树,包括:
4.根据权利要求1所述的方法,其中,所述目标状态数据与资产或图片相对应。
5.根据权利要求1所述的方法,其中,所述第一默克树为二叉默克树;所述二叉默克树通过以下步骤构建得到:
6.根据权利要求5所述的方法,其中,所述计算各层树节点的目标哈希值,包括:
7.根据权利要求6所述的方法,其中,所述第一根哈希值为所述二叉默克尔树的根节点的目标哈希值。
8.根据权利要求5所述的方法,其中,所述将所述k-叉树转换为二叉树,包括:
9.根据权利要求1所述的方法,其中,第一状态树为默克树,所述默克树通过对mpt树进行转换得到。
10.一种区块链状态的验证方法,待验证的目标状态数据为第一区块对应的第一参数的状态数据,所述方法包括:
11.根据权利要求10所述的方法,其中,所述方法通过用户设备执行,所述第一证明数据和所述第二证明数据由所述用户设备从所述区块链中获取得到。
12.一种区块链节点,用于存储目标状态数据,该目标状态数据为所述区块链中的第一参数的状态数据;所述区块链节点包括:
13.一种区块链节点,用于验证目标状态数据,该目标状态数据为第一区块对应的第一参数的状态数据;所述区块链节点包括:
14.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-11中任一项所述的方法。
15.一种区块链节点,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-11中任一项所述的方法。