CN115081031A - 一种防篡改的区块链数据存储方法及*** - Google Patents
一种防篡改的区块链数据存储方法及*** Download PDFInfo
- Publication number
- CN115081031A CN115081031A CN202210883403.XA CN202210883403A CN115081031A CN 115081031 A CN115081031 A CN 115081031A CN 202210883403 A CN202210883403 A CN 202210883403A CN 115081031 A CN115081031 A CN 115081031A
- Authority
- CN
- China
- Prior art keywords
- node
- transaction
- leaf node
- binary search
- tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3823—Payment protocols; Details thereof insuring higher security of transaction combining multiple encryption tools for a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供一种防篡改的区块链数据存储方法及***,属于分布式账本领域,其中,所述***包括:存储层,为k‑v数据库,用于分布式存储数据,为每一个区块链备份多个副本;网络层,用于节点间的数据传输以及根据共识协议确定区块的先后顺序,其中,节点包括用户节点及机构节点,机构节点包括至少一个数据库;机构节点用于将签名后的交易封装到区块,并为区块构造二叉查找树;机构节点还用于对于二叉查找树的每个非叶子节点,生成一个基于哈希的索引,k‑v数据库还用于存储二叉查找树的每个非叶子节点的索引;结构节点还用于接受用户节点发送的查询请求,基于二叉查找树反馈查询信息至用户节点,具有提高数据承接量及交易效率的优点。
Description
技术领域
本说明书涉及分布式账本领域,特别涉及一种防篡改的区块链数据存储方法及***。
背景技术
分类帐是一个包含所有业务跨式交易的记录保存***。类似地,分布式账本是由分布式环境中的一组参与者控制的唯一数据库。数据可以在不同的地点或地理位置和多个人访问或更新。网络参与者拥有一份相同的分类帐副本,对它的任何更新都反映在所有副本中,从而使分类帐安全地免受外部攻击。区块链是一种分布式账本技术。区块链是一个不可变的点对点分类帐,由被称为加密安全块的有序单元组成。该块由时间戳、事务集和前一个块的散列组成。交易是一种更新当前分类帐的订单,并通过共识机制进行验证,并与其他交易一起分组为附加到每个参与者的分类帐上的块。给定最后一个块的散列,就可以一路遍历到账本中的第一个块。区块链在本质上比集中式***具有优势,例如:1、由于区块链网络上的每个节点都拥有一份分类账的副本,因此所有参与者都可以访问交易和数据,因此***是透明的;2、一旦交易被添加到区块链中,几乎不可能改变它,这使得分类帐不可变;3、分散化:区块链不是由单一的权威机构管理,而是由网络中的节点维护;4、提高安全性:随着区块链的去中心化,不存在单点故障。每个节点上存储分类帐副本,并使用共识机制确保每个副本的完整性。现有的基于区块链的分布式账本技术存在较多缺陷,例如,1、承接的数据量严重有限;2、交易效率低;3、交易验证时间长;4、数据确认的延迟性高。
因此,需要提供一种防篡改的区块链数据存储方法及***,用于将区块链技术应用于数据库管理,提高数据承接量及交易效率。
发明内容
本说明书实施例之一提供一种防篡改的区块链数据存储***,包括:存储层,为k-v数据库,用于分布式存储数据,为每一个区块链备份多个副本;网络层,用于节点间的数据传输以及根据共识协议确定区块的先后顺序,其中,所述节点包括用户节点及机构节点,所述机构节点包括至少一个数据库;所述机构节点用于将签名后的交易封装到区块,并为区块构造二叉查找树,其中,所述区块中的交易的数据结构包括交易关键值;所述机构节点还用于对于所述二叉查找树的每个非叶子节点,生成一个基于哈希的索引,所述k-v数据库还用于存储所述二叉查找树的每个所述非叶子节点的索引;所述结构节点还用于接受所述用户节点发送的查询请求,基于所述二叉查找树反馈查询信息至所述用户节点。
可以理解的,防篡改的区块链数据存储***采用区块链技术结合数据库内核技术,实现了高性能、高并发、数据防篡改。进一步的通过在区块的二叉查找树中添加了关于交易的关键值的索引信息,使得可以从二叉查找树的根节点根据查询请求中的目标关键值直接检索到对应交易,实现了交易的可查询性,同时,索引是经由哈希运算保存在二叉查找树中,保证了索引的不可篡改。
在一些实施例中,所述区块中交易的数据结构包括交易头和交易数据,其中,所述交易头包含版本号、父交易哈希、交易时间、交易下一拥有者公钥、证明交易有效的签名;所述交易数据包括所述交易关键值以及至少一个字段。
在一些实施例中,所述二叉查找树基于红黑树和梅克尔树生成。
可以理解的,基于红黑树和梅克尔树生成区块的二叉查找树,可以使得查询时间在O(logN)内,且保证父节点是由子节点哈希得到的,在***新节点时,父节点信息可以得到相应更新。
在一些实施例中,构造所述二叉查找树,包括:将交易记录存储在所述二叉查找树的叶子节点;对于每一个所述非叶子节点,所述非叶子节点用于存放所述非叶子节点的关键值、左子树的哈希值及右子树的哈希值,且所述非叶子节点的左子树中的关键值均小于等于所述非叶子节点的关键值,所述非叶子节点的右子树中的关键值均大于所述非叶子节点的关键值。
可以理解的,通过设置非叶子节点的左子树中的关键值均小于等于非叶子节点的关键值,非叶子节点的右子树中的关键值均大于非叶子节点的关键值,可以提高数据***或查询效率。
在一些实施例中,构造所述二叉查找树,还包括:所述非叶子节点的关键值为所述非叶子节点的左子树中的最大关键值。
在一些实施例中,构造所述二叉查找树,还包括:对所述非叶子节点的左子树的哈希值、所述非叶子节点的右子树的哈希值及所述非叶子节点的关键值进行哈希运算,确定所述非叶子节点的哈希值。
在一些实施例中,所述结构节点基于所述二叉查找树反馈查询信息至所述用户节点,包括:基于所述查询请求获取目标关键值;基于所述目标关键值在所述结构节点的内存区块中检索,判断所述内存区块中是否存在目标叶子节点;若所述内存区块中不存在所述目标叶子节点,重复执行根据区块的先后顺序从所述k-v数据库中获取上一区块的索引,判断所述上一区块中是否存在所述目标叶子节点,直至查询到所述叶子节点或判断所有区块中存不存在所述目标叶子节点。
可以理解的,通过设置查询规则,先在内存区块中查找是否存在目标叶子节点,在内存区块中不存在目标叶子节点时,再根据区块的先后顺序从k-v数据库中获取上一区块的索引,判断上一区块中是否存在目标叶子节点,可以有效提高数据查询效率。
在一些实施例中,所述结构节点基于所述二叉查找树反馈查询信息至所述用户节点,包括:对于所述内存区块或所述上一区块,从所述二叉查找树的根节点开始检索,若所述目标关键值小于等于所述二叉查找树的根节点,则判断所述根节点的左子树中是否存在所述目标叶子节点,若所述目标关键值大于所述二叉查找树的根节点,则判断所述根节点的右子树中是否存在所述目标叶子节点,其中,所述目标叶子节点为关键值等于所述目标关键值的叶子节点。
可以理解的,通过从二叉查找树的根节点开始查找,将目标关键值与节点的关键值进行比较,可以快速获取需要进行关键值对比的叶子节点。
在一些实施例中,所述***还包括:区块链层,用于显示区块链的世界状态;应用层,进行数据查询操作,并对查询到的数据进一步的分析处理。
在一些实施例中,建立k-v数据库;
本说明书实施例之一提供一种防篡改的区块链数据存储方法,所述方法包括:建立k-v数据库;获取交易,机构节点将签名后的交易封装到区块,并为区块构造二叉查找树,其中,所述区块中的交易的数据结构包括交易关键值;对于所述二叉查找树的每个非叶子节点,生成一个基于哈希的索引;将所述二叉查找树的每个所述非叶子节点的索引存储至所述k-v数据库;所述机构节点接受用户节点发送的查询请求,基于所述二叉查找树反馈查询信息至所述用户节点。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的防篡改的区块链数据存储***的模块示意图;
图2是根据本说明书一些实施例所示的不同类型的污水需要获取的水质信息的示意图;
图3是根据本说明书一些实施例所示的区块的二叉查找树的示意图;
图4是根据本说明书一些实施例所示的根节点为空的二叉查找树数据***前后的示意图;
图5是根据本说明书一些实施例所示的新***的数据的关键值小于分支节点的关键值的二叉查找树数据***前后的示意图;
图6是根据本说明书一些实施例所示的新***的数据的关键值小于分支节点的关键值且分支节点的右孩子为空的二叉查找树数据***前后的示意图;
图7是根据本说明书一些实施例所示的新***的数据的关键值大于分支节点的关键值且分支节点的右孩子不为空的二叉查找树数据***前后的示意图;
图8是根据本说明书一些实施例所示的一种防篡改的区块链数据存储方法的示例性流程图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“***”、“装置”、“单元”和/或“模块”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的***所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
现有的分布式账本主要基于比特币网络实现,存在较多缺陷,例如,1、承接的数据量严重有限,具体的,现有的比特币网络,10分钟约处理1M的数据,运行10年,积累了约280G数据,使得后续可以承接的数据量有限;2、交易效率低,具体的,比特币区块链的每秒交易数为7,以太坊的每秒交易数为10-20之间,维基链的每秒交易数可以达到1000+,但无法满足在需求旺盛场景下的交易;3、交易验证时间长,具体的,以比特币为例,当前比特币交易一次确认时间平均为10分钟左右,这也是一个区块的生成时间。6次确认的情况下,需要等待1个小时;4、数据确认的延迟性高,具体的,当网络上同时有2个或以上节点竞争到记账权力,那么在网络中就会产生2个或以上的区块链分支,这时候到底哪个分支记录的数据是有效的,则要再等下一个记账周期,最终由最长的区块链分支来决定。
因此,需要提供一种防篡改的区块链数据存储方法及***,用于将区块链技术应用于数据库管理,提高数据承接量及交易效率。
图1是根据本说明书一些实施例所示的防篡改的区块链数据存储***的模块示意图。如图1所示,防篡改的区块链数据存储***可以包括存储层、网络层、区块链层及应用层。
存储层为k-v数据库,负责分布式存储数据,为每一个区块链备份多个副本。
网络层可以负责节点间的数据传输以及根据共识协议确定区块的先后顺序。其中,节点由机构节点以及用户节点组成,每一机构节点为一个存储节点,用于存储本机构的数据信息,可以包括一个数据库或多个数据库。当添加或者修改用户相关的数据时,需要由机构节点以及用户节点共同签名认可;签名后的数据由机构节点封装到区块中,当区块大小达到某一阈值时,将其打包发送给其他机构节点进行验证。机构节点间根据共识算法验证区块的正确性,并决定区块的先后顺序。机构节点将验证正确的区块发送给其他结构节点存储,并将区块头广播给所有节点,包括所有的机构节点以及用户节点。
在进行查询操作时,用户向存储节点发送查询请求,存储节点会返回查询到的记录项以及查询路径,用户根据查询路径以及区块头信息,可以验证查询结果的正确性。
区块链层可以用于显示区块链的世界状态。
智能合约、链码和去中心化应用程序构成了应用层。应用层包括操作者用来与区块链网络通信的程序,脚本、应用程序编程接口 (API)、用户界面和框架都是其中的一部分。应用层可以根据区块链层显示的区块链的世界状态,对区块链数据进行查询操作,并对查询到的数据进行进一步的分析处理,例如,进行数据管理、信用评价等。
增加记录:数据在初次添加时,数据拥有者指定可以进行数据写操作的公钥,生成权限锁定脚本,然后用自己的私钥对该数据进行签名。
防篡改的区块链数据存储***中,数据操作可以包括增加记录、修改记录、查找记录及删除记录。
增加记录:数据在初次添加时,数据拥有者指定可以进行数据写操作的公钥,生成权限锁定脚本,然后用自己的私钥对该数据进行签名。
修改记录:操作者用自己的私钥对其父记录进行签名,然后验证该签名是否能够解锁父记录的锁定脚本,当且只当在解锁锁定脚本的情况下,才可以添加一条相同key值的记录,以此实现对父记录的修改。其中,权限锁定脚本只有数据拥有者可以修改。需要说明的是,数据修改与数据防篡改并不冲突,对应版本的数据不可改且数据的更改历史虽然不可改,但是支持数据从较老版本更新到新的版本。可以理解的,数据的修改通过写入新交易实现。
查找记录:所有的参与者都可以进行查找操作,查找操作返回最新值为有效值,但是可以通过溯源操作查看该记录的完整修改历史。
删除记录:数据一旦添加便不可删除,当数据已经被修改多次,处于非常古老的版本时,为了节约磁盘空间,可以删除该数据的具体信息,但是该数据的哈希值则需要永久保存。
图2是根据本说明书一些实施例所示的区块中交易的数据结构的示意图。如图2所示,区块中交易的数据结构包括交易头和交易数据,其中,交易头包含版本号、父交易哈希、交易时间、交易下一拥有者公钥、证明交易有效的签名;交易数据包括交易关键值以及至少一个字段。通过交易头部分实现数据的权限管理以及不可篡改和可回溯,通过交易数据记录各种类型的数据。其中,父交易哈希指向相同交易关键值的前一交易。
可以理解的,在进行写入数据的时候,首先查询是否存在关键值为交易关键值的交易;如果存在,则检验当前交易的证明本交易有效的签名是否与前一交易的证明本交易有效的签名相匹配,只有在匹配的情况下,才认为当前交易有效;如果该交易关键值是第1次出现,则将交易的父交易哈希设置为0。在进行数据读取的时候,根据交易关键值进行检索,返回最近的查询结果,但是可以根据交易中的父交易哈希进行溯源。
机构节点还可以用于为区块构造二叉查找树。在一些实施例中,二叉查找树可以基于红黑树和梅克尔树生成,其中,红黑树(Red Black Tree)是一种自平衡二叉查找树,可以在O(log n)时间内做查找和***,选择基于红黑树和梅克尔树构造区块的二叉查找树的原因之一是,红黑树和梅克尔树(Merkle trees)一样,由下往上生长的,从而能够保证父节点是由子节点哈希得到的,在***新节点时,父节点信息可以得到相应更新。在一些实施例中,为了提高查找和***的效率,对于每一个非叶子节点,非叶子节点用于存放非叶子节点的关键值、左子树的哈希值及右子树的哈希值,且非叶子节点的左子树中的关键值均小于等于非叶子节点的关键值,非叶子节点的右子树中的关键值均大于非叶子节点的关键值。其中,非叶子节点的关键值为非叶子节点的左子树中的最大关键值。
机构节点还用于对于二叉查找树的每个非叶子节点(例如,根节点或分支节点),生成一个基于哈希的索引,存储层的k-v数据库还用于存储二叉查找树的每个非叶子节点的索引,其中,每个非叶子节点的索引基于该非叶子节点的哈希值映射而成,可以对非叶子节点的左子树的哈希值、非叶子节点的右子树的哈希值及非叶子节点的关键值进行哈希运算,确定非叶子节点的哈希值。可以基于下式确定某一非叶子节点的哈希值:
Hash(Node)=Hash(lefthash, righthash, key);
其中,Hash(Node)为非叶子节点的哈希值,lefthash为该非叶子节点的左子树的哈希值,righthash为该非叶子节点的右子树的哈希值,key为该非叶子节点的关键值。
图3是根据本说明书一些实施例所示的区块的二叉查找树的示意图。如图3所示,共有6条交易记录:Data1、Data2、…、Data6;每个交易记录都有一个关键值,分别为5、8、10、12、15、16。按照关键值从小到大顺序将6条交易记录按照从左到右的顺序存储到6个叶子节点中。由于非叶子节点的关键值为非叶子节点的左子树中的最大关键值,因此,第三层的分支节点(Node1、Node2、Node3)的关键值分别为5、10、15,第二层的分支节点(Node4)的关键值为8,根节点(root)的关键值为12。分支节点中存放着左右子树的哈希值以及关键值,同时保证该分支节点的左子树中的关键值都小于等于该分支节点的关键值,右子树中的关键值都大于该分支节点关键值。
需要进行数据***时,从根节点开始***数据,如果交易记录的关键值小于等于根节点的关键值,则***到根节点的左子树;如果大于根节点的关键值,则***到根节点的右子树。
图4是根据本说明书一些实施例所示的根节点为空的二叉查找树数据***前后的示意图,如图4所示,可以理解的,当二叉查找树的根节点为空时,可以先新创建一个叶子节点Node1用于存储新***的数据,再新建一个分支节点Node2,并定义该分支节点Node2的左孩子为上述的叶子节点Node1。这也说明二叉查找树只要不为空,则其分支节点一定不为空,而且最后一层分支节点的关键值一定与其左孩子的关键值相同。
图5是根据本说明书一些实施例所示的新***的数据的关键值小于分支节点的关键值的二叉查找树数据***前后的示意图,如图5所示,可以理解的,当新***的数据的关键值小于分支节点的关键值,应该将该新***的数据***到该分支节点Node1的左侧,当该分支节点的左孩子不为空且为叶子节点Node2时,可以新建一个叶子节点Node3存放新***的数据,然后新建一个分支节点Node4,其关键字为新***的数据的关键值,该分支节点Node4的左孩子为新建的叶子节点Node3,该分支节点Node4的右孩子为分支节点Node1的左孩子(即叶子节点Node2),该分支节点Node4的父节点为分支节点Node1。
图6是根据本说明书一些实施例所示的新***的数据的关键值小于分支节点的关键值且分支节点的右孩子为空的二叉查找树数据***前后的示意图,如图6所示,可以理解的,如果新***的数据的关键值大于分支节点Node1的关键值,而且该分支节点Node1的右孩子为空,则直接新建叶子节点Node2存储数据,并将其定义新建叶子节点Node2为分支节点Node1的右孩子。
可以理解的,如果新***的数据的关键值大于于分支节点Node1的关键值,而且该于分支节点Node1的关键值的右孩子不为空,可以先新建叶子节点Node2存储数据,然后新建分支节点Node3,该分支节点Node3的关键值为新***的数据的关键值与原分支节点(即分支节点Node1)的右孩子的关键值中的较小者,该分支节点Node3的左孩子为新***的数据与原分支节点右孩子中关键值较小者,该分支节点Node3的右孩子为较大者,该分支节点Node3的父节点为原分支节点(即分支节点Node1)。图7是根据本说明书一些实施例所示的新***的数据的关键值大于分支节点的关键值且分支节点的右孩子不为空的二叉查找树数据***前后的示意图,如图7所示,新***的数据的关键值小于原分支节点(即分支节点Node1)的右孩子(即分支节点Node4)的关键值,则新建分支节点Node3的左孩子为新建叶子节点Node2,新建分支节点Node3的右孩子为分支节点Node4。
数据***之后,可以得到从根节点开始的二叉查找树,而每个节点的哈希值又完全映射成一个基于哈希的不可篡改索引,数据是先写入到内存区块当中,当内存区块大小到达一定的阈值,则将该区块顺序写入到磁盘中,将其对应的索引存储到k-v数据库中,其中,k-v数据库中存储格式为:k=Hash(lefthash, righthash, key),v=(lefthash,righthash, key)。在一些实施例中,内存区块大小的阈值预先设置,例如,可以将内存区块大小的阈值设置为区块内交易数达到1024个。可以理解的,内存区块大小的阈值可以根据硬件配置进行设置。
可以理解的,区块链数据库要求其数据满足不可篡改性,则对于数据的索引自然也应该是不可篡改的,定义区块一旦形成便不可修改,因此,对于每一个区块构造一个二叉查找树,然后将数据与二叉查找树一起做哈希运算,从而实现数据与索引的不可篡改。
需要进行数据查找时,可以基于查询请求获取目标关键值;基于目标关键值在结构节点的内存区块中检索,判断内存区块中是否存在目标叶子节点;若内存区块中不存在目标叶子节点,重复执行根据区块的先后顺序从k-v数据库中获取上一区块的索引,判断上一区块中是否存在目标叶子节点,直至查询到叶子节点或判断所有区块中存不存在目标叶子节点。
在一些实施例中,在某一个区块中进行目标叶子节点的检索时,可以从二叉查找树的根节点开始检索,若目标关键值小于等于二叉查找树的根节点,则判断根节点的左子树中是否存在目标叶子节点,若目标关键值大于二叉查找树的根节点,则判断根节点的右子树中是否存在目标叶子节点,其中,目标叶子节点为关键值等于目标关键值的叶子节点。仍以图3为例,当目标关键值为8时,从二叉查找树的根节点开始检索,目标关键值(8)小于二叉查找树的根节点的关键值(12),因此,需要在根节点的左子树中查找是否存在目标叶子节点,将目标关键值(8)与根节点的左子树中下一分支节点(Node4)的关键值进行比较,目标关键值(8)等于分支节点(Node4)的关键值,因此,需要在分支节点(Node4)的左子树中查找是否存在目标叶子节点,将目标关键值(8)与分支节点(Node4)的左子树中下一分支节点(Node1)的关键值进行比较,目标关键值(8)大于分支节点(Node1)的关键值,因此,获取分支节点(Node1)的右孩子,判断该右孩子的关键值是否为目标关键值,若该右孩子的关键值为目标关键值,则查询成功,获取目标叶子节点存储的数据;若该右孩子的关键值不为目标关键值,则需要查找的交易记录不在该区块中。
图8是根据本说明书一些实施例所示的一种防篡改的区块链数据存储方法的示例性流程图,如图8所示,本说明书实施例之一提供一种防篡改的区块链数据存储方法,方法包括:建立k-v数据库;获取交易,机构节点将签名后的交易封装到区块,并为区块构造二叉查找树,其中,区块中的交易的数据结构包括交易关键值;对于二叉查找树的每个非叶子节点,生成一个基于哈希的索引;将二叉查找树的每个非叶子节点的索引存储至k-v数据库;机构节点接受用户节点发送的查询请求,基于二叉查找树反馈查询信息至用户节点。一种防篡改的区块链数据存储方法可以由图1至图所示的防篡改的区块链数据存储***执行,关于防篡改的区块链数据存储方法的更多描述可以参见防篡改的区块链数据存储***的相关描述,此处不再赘述。
目前区块链技术大部分采用中间件方式实现区块链应用的目标,本说明书的一些实施例提供的防篡改的区块链数据存储方法或***,采用区块链技术结合数据库内核技术,实现了高性能、高并发、数据防篡改的区块链数据库技术。采用数据库内核层引入区块链技术同时支撑上层应用的工作模式和技术方案,至少具备以下优点:1、区块链交易性能提升5-10倍,传统区块链技术并发交易量一般只能达到2000-3000笔/秒,本说明书的一些实施例提供的防篡改的区块链数据存储方法或***使得交易并发性能能够达到10000-15000笔以上/秒。2、传统区块链技术数据防篡改采用分布式Hash的方式实现防篡改,如果非法者获取半数节点以上的数据,就可以还原数据,实现修改数据的目的,本说明书的一些实施例提供的防篡改的区块链数据存储方法或***采用数据库内核层安全控制机制,采用透明加密及数据表安全管控技术,解决了传统区块链技术在数据防篡改方面的不足。
需要注意的是,以上对于防篡改的区块链数据存储***及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该***的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子***与其他模块连接。诸如此类的变形,均在本说明书的保护范围之内。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的***组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的***。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (10)
1.一种防篡改的区块链数据存储***,其特征在于,包括:
存储层,为k-v数据库,用于分布式存储数据,为每一个区块链备份多个副本;
网络层,用于节点间的数据传输以及根据共识协议确定区块的先后顺序,其中,所述节点包括用户节点及机构节点,所述机构节点包括至少一个数据库;所述机构节点用于将签名后的交易封装到区块,并为所述区块构造二叉查找树,其中,所述区块中的交易的数据结构包括交易关键值;所述机构节点还用于对于所述二叉查找树的每个非叶子节点,生成一个基于哈希的索引,所述k-v数据库还用于存储所述二叉查找树的每个所述非叶子节点的索引;所述结构节点还用于接受所述用户节点发送的查询请求,基于所述二叉查找树反馈查询信息至所述用户节点。
2.如权利要求1所述的防篡改的区块链数据存储***,其特征在于,所述区块中交易的数据结构包括交易头和交易数据,其中,所述交易头包含版本号、父交易哈希、交易时间、交易下一拥有者公钥、证明交易有效的签名;所述交易数据包括所述交易关键值以及至少一个字段。
3.如权利要求1所述的防篡改的区块链数据存储***,其特征在于,所述二叉查找树基于红黑树和梅克尔树生成。
4.如权利要求3所述的防篡改的区块链数据存储***,其特征在于,构造所述二叉查找树,包括:
将交易记录存储在所述二叉查找树的叶子节点;
对于每一个所述非叶子节点,所述非叶子节点用于存放所述非叶子节点的关键值、左子树的哈希值及右子树的哈希值,且所述非叶子节点的左子树中的关键值均小于等于所述非叶子节点的关键值,所述非叶子节点的右子树中的关键值均大于所述非叶子节点的关键值。
5.如权利要求4所述的防篡改的区块链数据存储***,其特征在于,构造所述二叉查找树,还包括:
所述非叶子节点的关键值为所述非叶子节点的左子树中的最大关键值。
6.如权利要求5所述的防篡改的区块链数据存储***,其特征在于,构造所述二叉查找树,还包括:
对所述非叶子节点的左子树的哈希值、所述非叶子节点的右子树的哈希值及所述非叶子节点的关键值进行哈希运算,确定所述非叶子节点的哈希值。
7.如权利要求1-6任意一项所述的防篡改的区块链数据存储***,其特征在于,所述结构节点基于所述二叉查找树反馈查询信息至所述用户节点,包括:
基于所述查询请求获取目标关键值;
基于所述目标关键值在所述结构节点的内存区块中检索,判断所述内存区块中是否存在目标叶子节点;
若所述内存区块中不存在所述目标叶子节点,重复执行根据区块的先后顺序从所述k-v数据库中获取上一区块的索引,判断所述上一区块中是否存在所述目标叶子节点,直至查询到所述叶子节点或判断所有区块中存不存在所述目标叶子节点。
8.如权利要求7所述的防篡改的区块链数据存储***,其特征在于,所述结构节点基于所述二叉查找树反馈查询信息至所述用户节点,包括:
对于所述内存区块或所述上一区块,
从所述二叉查找树的根节点开始检索,若所述目标关键值小于等于所述二叉查找树的根节点,则判断所述根节点的左子树中是否存在所述目标叶子节点,若所述目标关键值大于所述二叉查找树的根节点,则判断所述根节点的右子树中是否存在所述目标叶子节点,其中,所述目标叶子节点为关键值等于所述目标关键值的叶子节点。
9.如权利要求1-6任意一项所述的防篡改的区块链数据存储***,其特征在于,所述***还包括:
区块链层,用于显示区块链的世界状态;
应用层,进行数据查询操作,并对查询到的数据进一步的分析处理。
10.一种防篡改的区块链数据存储方法,其特征在于,包括:
建立k-v数据库;
获取交易,机构节点将签名后的交易封装到区块,并为所述区块构造二叉查找树,其中,所述区块中的交易的数据结构包括交易关键值;
对于所述二叉查找树的每个非叶子节点,生成一个基于哈希的索引;
将所述二叉查找树的每个所述非叶子节点的索引存储至所述k-v数据库;
所述机构节点接受用户节点发送的查询请求,基于所述二叉查找树反馈查询信息至所述用户节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210883403.XA CN115081031A (zh) | 2022-07-26 | 2022-07-26 | 一种防篡改的区块链数据存储方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210883403.XA CN115081031A (zh) | 2022-07-26 | 2022-07-26 | 一种防篡改的区块链数据存储方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115081031A true CN115081031A (zh) | 2022-09-20 |
Family
ID=83242624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210883403.XA Pending CN115081031A (zh) | 2022-07-26 | 2022-07-26 | 一种防篡改的区块链数据存储方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115081031A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165224A (zh) * | 2018-08-24 | 2019-01-08 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
CN109408551A (zh) * | 2018-08-06 | 2019-03-01 | 杭州复杂美科技有限公司 | 数据查询方法及***、共识方法及***、设备和存储介质 |
CN114020737A (zh) * | 2021-10-20 | 2022-02-08 | 大连理工江苏研究院有限公司 | 一种区块链数据高效可信索引方法 |
-
2022
- 2022-07-26 CN CN202210883403.XA patent/CN115081031A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408551A (zh) * | 2018-08-06 | 2019-03-01 | 杭州复杂美科技有限公司 | 数据查询方法及***、共识方法及***、设备和存储介质 |
CN109165224A (zh) * | 2018-08-24 | 2019-01-08 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
CN114020737A (zh) * | 2021-10-20 | 2022-02-08 | 大连理工江苏研究院有限公司 | 一种区块链数据高效可信索引方法 |
Non-Patent Citations (1)
Title |
---|
焦通等: "区块链数据库:一种可查询且防篡改的数据库", 《软件学报》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109165224B (zh) | 一种在区块链数据库上针对关键字key的索引方法 | |
CN110495132B (zh) | 用于在分布式网络节点内生成、上传和执行代码区块的***和方法 | |
CN110785760B (zh) | 用于登记数字文档的方法和*** | |
US20190327094A1 (en) | Information authentication method and system | |
US12010213B2 (en) | Pruning entries in tamper-evident data stores | |
CN108039943B (zh) | 一种可验证的加密搜索方法 | |
US11907199B2 (en) | Blockchain based distributed file systems | |
US20100212017A1 (en) | System and method for efficient trust preservation in data stores | |
US8316417B2 (en) | Method for dynamic secure management of an authenticated relational table in a database | |
WO2020167887A1 (en) | Hybrid blockchains and streamchains using non-crypto hashes for securing audio-, video-, image-, and speech-based transactions and contracts | |
CN111461751B (zh) | 基于区块链的房产信息链上组织方法、历史状态追溯方法及装置 | |
JP2006518508A (ja) | コンテンツベースのアドレシングにおける追加ハッシュ関数 | |
US20080282355A1 (en) | Document container data structure and methods thereof | |
US8510566B1 (en) | Authentic time-stamping for archival storage | |
US11868339B2 (en) | Blockchain based distributed file systems | |
CN112685436A (zh) | 一种溯源信息处理方法及装置 | |
CN111159482A (zh) | 数据校验方法及*** | |
US20060106857A1 (en) | Method and system for assured document retention | |
US6941477B2 (en) | Trusted content server | |
CN111858627A (zh) | 一种基于区块链的学位学历查询***及其方法 | |
CN115081031A (zh) | 一种防篡改的区块链数据存储方法及*** | |
CN111767168B (zh) | 基于区块链的便于数据回溯的存储*** | |
CN113094754B (zh) | 大数据平台数据修改***及修改、响应、缓存、校验方法 | |
CN115277668B (zh) | 一种基于以太坊和星际文件***的云文件动态完整性保护和验证方法 | |
CN111460436B (zh) | 一种基于区块链的非结构化数据操作方法和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20220920 |