CN113656504A - 一种基于时序属性的区块链交易提交、编辑和查询方法 - Google Patents
一种基于时序属性的区块链交易提交、编辑和查询方法 Download PDFInfo
- Publication number
- CN113656504A CN113656504A CN202110965651.4A CN202110965651A CN113656504A CN 113656504 A CN113656504 A CN 113656504A CN 202110965651 A CN202110965651 A CN 202110965651A CN 113656504 A CN113656504 A CN 113656504A
- Authority
- CN
- China
- Prior art keywords
- transaction
- time sequence
- state
- key value
- attribute
- 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
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/23—Updating
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Fuzzy Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于时序属性的区块链交易提交、编辑和查询方法,所述交易方法包括:根据状态数据库,为存证类型数据和交易类型数据添加时序属性,构建交易数据;将含有时序属性的交易数据进行共识排序,打包成区块,并存储在区块链上;根据打包后的结果,记录共识排序后每个交易所在区块号以及所在区块内的顺序作为交易的时序属性;提交节点根据每个交易执行后的最新状态更新状态数据库;所述状态数据库包括每一个KEY对应的最新状态以及该状态对应交易所在区块链中的位置,即所述时序属性。本发明重新设计区块链交易数据结构,客户端节点通过时序属性进行链式检索,可以跳过无效历史交易,获取所有正确历史交易记录给客户端节点。
Description
技术领域
本发明涉及信息技术领域,具体涉及一种基于时序属性的区块链交易提交、编辑和查询方法。
背景技术
区块链技术可以把数据以交易的形式存储在区块链数据库中,并且有去中心化、不可篡改和公开透明的特点。但作为一个分布式数据库,区块链中必定存在因人为操作失误或恶意提交产生的非法交易,这些非法交易可借助区块链的透明性和不可篡改性产生永久性的负面影响。例如:恶意节点将不实谣言信息上链,经过共识等过程,这些信息最终永久存储在区块链上,所有节点都能访问从而受到这些不良信息的危害。而现有的对区块链交易编辑的方案中,大都会利用密码学手段,在保证不可篡改特性的同时直接对区块内容进行替换,这会导致持有密钥的人可以随意修改区块数据并且没有修改存证,造成安全隐患。另外,对交易类型数据的编辑不单单涉及被编辑的交易数据本身,而会改变区块链中后续交易的价值分配体系,可能会凭空“制造”或“消除”一定量的货币,进而影响整个区块链交易链条的有效性。
发明内容
本发明为了克服以上技术的不足,提供了一种基于时序属性的区块链交易提交、编辑和查询方法。本发明主要是针对区块链数据不可编辑的特性,采用新的交易提交方法来实现对交易数据的编辑,所以本发明所达到的技术效果都是针对“交易数据编辑”,而本发明提出的交易提交方法是为交易编辑服务的,而交易查询方法是为了体现出交易编辑的结果。
本发明克服其技术问题所采用的技术方案是:
一种基于时序属性的区块链交易提交方法,应用于区块链排序节点与提交节点,包括步骤:
S101、根据状态数据库,为存证类型数据和交易类型数据添加时序属性,构建交易数据;
S102、将含有时序属性的交易数据进行共识排序,打包成区块,并存储在区块链上;根据打包后的结果,记录共识排序后每个交易所在区块号以及所在区块内的顺序作为交易的时序属性;
S103、提交节点根据每个交易执行后的最新状态更新状态数据库;所述状态数据库包括每一个KEY对应的最新状态以及该状态对应交易所在区块链中的位置,即所述时序属性。
进一步地,步骤S101中,根据状态数据库中保存的KEY值最新的状态为交易数据设置对应的时序属性,所述时序属性为目标KEY值对应前置交易所在区块链中的存储位置,其中,所述前置交易是与目标交易含有同一KEY值并在时间序列上靠前的前一条有效交易。
进一步地,步骤S101中,为存证类型数据添加时序属性的方法如下:
存证类型数据构件交易数据前,首先需要检索状态数据库,查看该交易对应KEY的最新状态,该状态中的时序属性视为前置交易所在区块链中的存储位置。
进一步地,步骤S101中,为交易类型数据添加时序属性的方法如下:
交易类型数据对应的KEY值包括交易的发送方和接收方,则时序属性包括发送方对应前置交易所在区块链中的存储位置和接收方对应前置交易所在区块链中的存储位置;
交易类型数据构建交易数据前,首先需要检索状态数据库,判断发送方对应状态的固定余额是否满足转账需要:如不满足转账需要,则无法构建交易数据,直接返回交易失败的结果;如满足转账需要,则按照客户端输入将发送方规定数目的固定余额转入接收方的临时余额集合,发送方和接收方对应前置交易的时序信息记录在交易中并提交上链。
进一步地,关于固定余额和临时余额集合:
将交易类型数据的账户的状态表示为固定余额和临时余额集合的形式,并设置一个固定时间段Δt,其中,Δt是为每个交易从提交到区块链上到不可编辑的时间段;
在交易类型数据提交前,首先根据状态数据库检查发送方与接收方的余额状态,将符合条件的临时余额更新至固定余额,所述条件必须满足临时余额对应交易的提交时间加上时间段Δt大于等于当前交易提交的时间;发送方在进行转账时只能使用固定余额,且接收方在接受转账后的Δt时间段后需将该余额放入临时余额集合;
所述时间段Δt根据实际应用场景中交易的频繁程度进行动态调整;所述临时余额集合中的每一个元素表示为接收方每一笔交易接受的余额加上该笔交易对应的时间戳。
进一步地,步骤S102中,记录时序属性并更新状态数据库,包括:
交易在经过共识由排序节点打包后,遍历区块内所有的交易,记录每个交易所在区块链中的存储位置,即该交易对应的时序属性;打包后的区块发送给提交节点进行验证,并根据交易对应的状态与时序属性更新状态数据库中对应KEY的状态。
本发明还公开了一种基于上述所述的时序属性的区块链交易编辑方法,应用于区块链客户端节点,包括步骤:
S201、接收客户端节点发送的交易编辑请求,所述编辑请求至少包括:客户端节点编辑目标历史交易的KEY值、目标历史交易的参数、时间戳以及编辑后的交易参数;
S202、基于客户端节点输入的历史交易参数,利用状态数据与交易中保存的前置交易的时序属性作为索引进行链式查找;
S203、将目标历史交易对应前置交易的时序属性与修改后的交易参数作为输入构建新交易数据并提交;
S204、将跟时序属性进行链式查找时检索路径上所有的历史交易反序列化,记录交易元数据进入交易池,在修改后的交易正确提交之后按照时序顺序把交易池中的交易再次提交,保持正确的时序关系。
进一步地,步骤S202中,根据客户端节点发送的KEY值检索状态数据库,确认是否存在正确的目标KEY值以及状态:
若存在正确的KEY值以及状态,则通过状态中的时序属性进行检索,寻找目标交易元数据进行重构交易子树;
若不存在目KEY值或存在目标KEY值但对应状态中的结束位显示该KEY值已被逻辑删除,则认为该KEY值对应的历史交易已被删除,无法编辑,返回失败。
本发明还公开了一种基于上述所述的时序属性的区块链交易查询方法,应用于区块链节点中,包括步骤:
S301、接收客户端节点发送的查询请求,所述查询请求至少包括:查询历史交易对应的KEY值;
S302、根据目标查询历史交易对应的KEY值检索状态数据库,根据最新状态获取KEY值对应最新状态所在交易的位置,即所述前置交易的时序属性;
S303、根据时序属性获取对应的区块,反序列化区块并根据交易所在区块中的位置解析出交易元数据,再根据交易中包含的前置交易的时序属性进一步查询;
S304、根据查询到的交易元数据,记录交易中包含的KEY值的历史快照,即历史状态;直到交易中的时序属性为空,返回所有的历史记录至所述客户端节点。
进一步地,步骤S302中,根据客户端节点发送的KEY值检索状态数据库,确认是否存在正确的目标KEY值以及状态:
若存在正确的KEY值以及状态,则通过状态中的时序属性检索对应的交易元数据,并递归地通过交易中的时序属性进行检索;
若不存在目KEY值或存在目标KEY值但对应状态中的结束位显示该KEY值已被逻辑删除,则直接返回空集给客户端,查询结束。
本发明的有益效果是:
1、本发明所述的基于时序属性的区块链交易提交、编辑和查询方法,将区块链数据分为存证类和交易类两种数据类型,分别重新设计底层数据结构;根据新的数据结构,检查状态数据库,生成包含前置交易时序属性的交易数据,前置交易为与目标交易包含相同KEY的前一个有效交易;排序节点在将交易数据打包生成区块后,根据每个交易数据所在区块的区块号以及交易数据在该区块内的存储位置记录时序属性;提交节点在验证交易通过后根据添加的时序属性更新状态数据库,客户端节点可以通过唯一标识的KEY值对应的时序属性查询到该KEY值最新状态对应交易的存储位置;节点通过提供目标历史交易具体参数,根据时序属性进行链式检索,并存储检索路径上的历史交易进入交易池;将修改后的交易数据中的时序属性设置为与目标历史交易相同的值,并依次将交易池中的交易数据再次提交,保持完整的链式结构;客户端节点通过时序属性进行链式检索,跳过无效历史交易,获取所有正确历史交易记录给客户端节点。
2、本发明所述的基于时序属性的区块链交易查询方法,保留了区块链原有的查询接口,保留了错误交易存证,避免了对历史数据编辑后无从考证。
3、本发明所述的基于时序属性的区块链交易编辑方法,解决了强上下文相关的交易类型数据的编辑问题,重构了以目标历史交易为根节点的交易树,保证后续交易有效;并且,针对交易类型数据编辑可能造成的大规模的交易重新提交,设置固定余额与临时余额集合机制,设置可编辑时间区间Δt,使历史交易的编辑更为合理。
附图说明
图1为本发明实施例所述的基于时序属性的区块链交易提交方法的流程图。
图2为本发明实施例所述的基于时序属性的区块链交易编辑方法的流程图。
图3为本发明实施例所述的基于时序属性的区块链交易查询方法的流程图。
具体实施方式
为了便于本领域人员更好的理解本发明,下面结合附图和具体实施例对本发明做进一步详细说明,下述仅是示例性的不限定本发明的保护范围。
实施例1、
本实施例提供了一种基于时序属性的区块链交易提交方法,如图1所示,该提交方法应用于区块链排序节点与提交节点,包括步骤:
S101、根据状态数据库,为不同类型的交易数据添加时序属性,构建交易数据。
本实施例中,不同类型的交易数据分为存证类型数据和交易类型数据,并针对这两种不同类型的数据添加时序属性。对于对应多个KEY值状态的复杂交易数据,可以认为是多个对应单一KEY的存证文本数据;对于涉及超过两方的交易数据,同样可以认为是多个两方交易的组合,并将其拆分。
进一步地,交易类型数据为上下文强相关交易类型,对历史数据进行编辑可能会改变内部的交易逻辑流和价值分配体系,进而凭空“创造”或“消耗”一定量的加密货币,导致后续交易失效;除交易类型数据以外的所有基于文本记录的数据统称为存证类型数据。
步骤S101中,根据状态数据库中保存的KEY值最新的状态为交易数据设置对应的时序属性,所述时序属性为目标KEY值对应前置交易所在区块链中的存储位置,其中,所述前置交易是与目标交易含有同一KEY值并在时间序列上靠前的前一条有效交易。
第一种,为存证类型数据添加时序属性的方法如下:
存证类型数据构件交易数据前,首先需要检索状态数据库,查看该交易对应KEY的最新状态,该状态中的时序属性视为前置交易所在区块链中的存储位置。
第二种,为交易类型数据添加时序属性的方法如下:
交易类型数据对应的KEY值包括交易的发送方和接收方,则时序属性包括发送方对应前置交易所在区块链中的存储位置和接收方对应前置交易所在区块链中的存储位置;
交易类型数据构建交易数据前,首先需要检索状态数据库,判断发送方对应状态的固定余额是否满足转账需要:如不满足转账需要,则无法构建交易数据,直接返回交易失败的结果;如满足转账需要,则按照客户端输入将发送方规定数目的固定余额转入接收方的临时余额集合,发送方和接收方对应前置交易的时序信息记录在交易中并提交上链。
具体地,根据客户端节点提供的输入参数中包含的KEY值对状态数据库中进行检索,查询状态数据库中是否存在所述KEY值:
1、若存在,查看其状态中的结束位是否为∅,若同时满足存在KEY值且结束位为∅,则将该状态中对应前置交易的时序属性赋予该交易,记为PRE字段;
2、若不存在目标KEY值,则认为该交易对应的KEY值是第一次上链,该KEY值对应的前置交易为空,所以将该交易对应的时序属性同样设为空;
3、若存在KEY值但结束位为某一交易的时序属性,则认为该KEY值在结束位对应位置的交易中被逻辑删除,同样认为该交易对应的前置交易为空,执行上述第2种情况(即,不存在目标KEY值的情况)所述的流程。
本实施例中,对于交易类型数据,本实施例中认为其对应的KEY值,即交易发送方账户与交易接收方账户,是永久存在的。因此,与存证文本交易数据不同,交易类型数据取消结束位对应的时序属性,只保留了起始位。所述起始位表示前置交易对应的时序属性,所述结束位表示该KEY值对应的状态被删除时对应的交易所在区块链中的位置,若结束位为∅,则认为该交易未被删除。
进一步地,对于交易类型数据,根据发送方与接收方账户对应的KEY值中的前置交易的时序属性赋予交易,分别记为SAI(sender account index)和RAI(receiver accountindex)。同时,为了后续的编辑操作,对于交易类型数据,将余额改为固定余额加临时余额集合的形式。
具体地,设置一个固定时间段Δt,所述Δt是为每个交易从提交到区块链上到不可编辑的时间段。每个Δt对应一个独立区块链应用环境,且Δt的大小根据实际应用场景中交易的频繁程度进行动态调整,时间段Δt需满足在Δt的时间段内,区块链网络中提交的所有交易所花费的时间在可接受范围内。当单位时间内整个区块链网络中提交的交易较多,Δt可适当缩小;反之,当单位时间内区块链网络中提交的交易较少,可适当增加Δt。这是为了在之后编辑历史交易重构交易链路时尽可能的减少存储资源消耗,又保证可编辑的历史交易尽可能更多。
进一步地,根据客户端节点的输入,检查发送方与接收方账户对应KEY值的状态,若存在正确的发送方与接收方,则遍历其中的临时余额集合,将账户中满足条件的临时余额转换成该账户的固定余额,并根据输入参数中的转账金额进行转账,构建交易并模拟执行。
具体地,对于临时余额中所有满足交易提交时间加上指定时间段Δt大于等于当前交易提交时间的交易,将其转入固定余额。交易转账时,发送方只能花费固定余额中的货币,而接收方在接收货币之后也会将该金额以临时余额的方式存入临时余额集合中。其中,所述临时余额集合中的每一个元素表示为接收方每一笔交易接受的余额加上该笔交易对应的时间戳。
S102、将含有时序属性的交易数据进行共识排序,打包成区块,并存储在区块链上;根据打包后的结果,记录共识排序后每个交易所在区块号以及所在区块内的顺序作为交易的时序属性。
本实施例中,记录时序属性并更新状态数据库,包括:交易在经过共识由排序节点打包后,遍历区块内所有的交易,记录每个交易所在区块链中的存储位置,即该交易对应的时序属性;打包后的区块发送给提交节点进行验证,并根据交易对应的状态与时序属性更新状态数据库中对应KEY的状态。
具体地,背书节点依据客户端节点中提供的输入参数进行模拟执行,将交易中对应KEY值最新的状态更新为交易执行后的状态,并更新对应写集。
进一步地,将含有交易执行结果(即最新写集)的交易发送给排序节点,排序节点根据预设的共识策略进行排序。根据预设的出块大小或出块时间,到达阈值后进行出块。
进一步地,遍历一个区块中的所有交易,根据出块后获得的区块号以及每个交易所在区块内的位置记录该交易对应的时序属性。根据所述时序属性更新对应KEY值的写集。
进一步地,该区块通过gossip协议分发给区块链网络中的提交节点。提交节点根据每个交易中包含的写集更新对应KEY值所在状态数据库中的最新状态。所述最新状态包括KEY值对应的文本数据或余额,以及该交易对应的时序属性。值得一提的是,在更新状态数据库之后,该交易就变成了该KEY值对应的前置交易。
S103、提交节点根据每个交易执行后的最新状态更新状态数据库;所述状态数据库包括每一个KEY对应的最新状态以及该状态对应交易所在区块链中的位置,即所述时序属性。
实施例2、
本实施例公开了一种基于实施例1所述的时序属性的区块链交易编辑方法,如图2所示,该编辑方法应用于区块链客户端节点,包括步骤:
S201、接收客户端节点发送的交易编辑请求,所述编辑请求至少包括:客户端节点编辑目标历史交易的KEY值、目标历史交易的参数、时间戳以及编辑后的交易参数。
S202、基于客户端节点输入的历史交易参数,利用状态数据与交易中保存的前置交易的时序属性作为索引进行链式查找。
步骤S202中,根据客户端节点发送的KEY值检索状态数据库,确认是否存在正确的目标KEY值以及状态:
若存在正确的KEY值以及状态,则通过状态中的时序属性进行检索,寻找目标交易元数据进行重构交易子树;
若不存在目KEY值或存在目标KEY值但对应状态中的结束位显示该KEY值已被逻辑删除(即结束位表示为某一交易的时序属性),则认为该KEY值对应的历史交易已被删除,无法编辑,返回失败。
特殊地,对于交易类型数据,必须满足所述目标交易的时间戳加特定时间段Δt小于当前时间才可进行编辑操作,这是为了避免重构过多的后继交易;所述后继交易指受目标交易影响且时间序列靠后的所有历史交易。
具体地,寻找目标交易数据并重构交易子树,包括:通过状态数据库中KEY值对应前置交易的时序属性找到对应区块的位置并反序列化出交易元数据,与客户端节点提供的目标交易的输入与时间戳进行对比,若匹配成功,则认为该交易为目标交易,将该交易对应的时序属性与该交易对应KEY值的写集记录下来,与修改后的交易参数共同构建出新的交易进行提交;若匹配不成功且交易中的时序属性非空,则递归的根据交易中的时序属性进行索引,直到匹配到目标交易,并将索引路径上的交易元数据记录至交易池;所述交易池中包含所有受编辑操作影响的交易,需将其按时序顺序再次提交,保持交易链路正确性和完整性。
特殊地,若递归地按照时序属性进行索引直到索引到最后一条交易的时序属性为空,则表示无法找到所述目标交易,无法进行编辑操作,此时同样返回失败。
S203、将目标历史交易对应前置交易的时序属性与修改后的交易参数作为输入构建新交易数据并提交。
S204、将跟时序属性进行链式查找时检索路径上所有的历史交易反序列化,记录交易元数据进入交易池,在修改后的交易正确提交之后按照时序顺序把交易池中的交易再次提交,保持正确的时序关系。
步骤S204中,根据检索路径更新交易池以用来重构交易子树。对于交易类型数据,编辑历史交易会不仅会影响到检索路径上的所有交易,同时会影响到所有跟目标交易发送方与接收方有过直接或间接交易转账行为的账户对应的交易。所以,对于金融转账交易的编辑,需要将目标交易之后所有受影响的后继交易添加进入交易池。例如,目标交易包含发送方账户A和接收方账户B,而账户B后续与账户C进行了一笔交易,账户C后续又与账户D发生了交易,那么账户A、B、C、D后续对应的所有交易都属于目标交易的后继交易。
进一步地,根据交易池重构交易子树。按照时序顺序遍历交易池中的所有交易元数据,记录交易元数据中的输入参数,并按顺序利用输入参数将交易再次提交。在交易池中的交易提交完成之前,与交易池中含有相同KEY值的交易无法提交,以保证重构正确顺序的交易子树。此操作可以有效保证在编辑历史交易时不会破坏原有区块链中的价值流通以及记录顺序,不会凭空生成或“消耗”货币,不会破坏原有的状态变更过程。并且可以保留错误的历史交易凭证可供查询,防止恶意编辑历史交易的情况发生。
此外,编辑操作不仅限于对目标历史交易的更新,还包括对历史交易数据的删除。在这里,对历史交易数据的删除操作可以认为是一种特殊的更新操作。对于一般的存证类型数据,可以讲目标历史交易数据对应的内容更新为空;对于交易类型数据,将目标交易的转账金额更新为零。
实施例3、
本实施例公开了一种基于实施例1所述的时序属性的区块链交易查询方法,该查询应用于区块链节点中。本实施例所述的查询方法所查询的是交易提交到区块链后,对交易本身进行的查询;如果交易提交后进行了实施例2所述的编辑,那么本实施例所述的查询方法查询的就是实施例2编辑后的最新交易内容。
如图3所示,所述查询方法包括步骤:
S301、接收客户端节点发送的查询请求,所述查询请求至少包括:查询历史交易对应的KEY值。
S302、根据目标查询历史交易对应的KEY值检索状态数据库,根据最新状态获取KEY值对应最新状态所在交易的位置,即所述前置交易的时序属性。
本实施例中,步骤S302中,根据客户端节点发送的KEY值检索状态数据库,确认是否存在正确的目标KEY值以及状态:
若存在正确的KEY值以及状态,则通过状态中的时序属性检索对应的交易元数据,并递归地通过交易中的时序属性进行检索;
若不存在目KEY值或存在目标KEY值但对应状态中的结束位显示该KEY值已被逻辑删除(即结束位表示为某一交易的时序属性),则直接返回空集给客户端,查询结束。
进一步地,区块链交易元数据以字节数组的形式持久化存储在磁盘中。通过状态以及交易中的时序属性,定位到交易所在区块。通过索引数据库中记录的每个区块链的头指针与偏移量,可以计算出整个区块的字节段。
进一步地,将所述区块的对应的字节数组反序列化,在根据反序列化后通过时序属性中交易所在区块中的编号,即顺序位置,得到交易元数据。依据交易中的时序属性递归执行上述操作,直到交易中的时序属性为空。此时已经检索完该KEY值对应的所有有效历史交易数据,将结果集返回给客户端节点。
S303、根据时序属性获取对应的区块,反序列化区块并根据交易所在区块中的位置解析出交易元数据,再根据交易中包含的前置交易的时序属性进一步查询。
S304、根据查询到的交易元数据,记录交易中包含的KEY值的历史快照,即历史状态;直到交易中的时序属性为空,返回所有的历史记录至所述客户端节点。
以上仅描述了本发明的基本原理和优选实施方式,本领域人员可以根据上述描述做出许多变化和改进,这些变化和改进应该属于本发明的保护范围。
Claims (10)
1.一种基于时序属性的区块链交易提交方法,其特征在于,应用于区块链排序节点与提交节点,包括步骤:
S101、根据状态数据库,为存证类型数据和交易类型数据添加时序属性,构建交易数据;
S102、将含有时序属性的交易数据进行共识排序,打包成区块,并存储在区块链上;根据打包后的结果,记录共识排序后每个交易所在区块号以及所在区块内的顺序作为交易的时序属性;
S103、提交节点根据每个交易执行后的最新状态更新状态数据库;所述状态数据库包括每一个KEY对应的最新状态以及该状态对应交易所在区块链中的位置,即所述时序属性。
2.根据权利要求1所述的提交方法,其特征在于,步骤S101中,根据状态数据库中保存的KEY值最新的状态为交易数据设置对应的时序属性,所述时序属性为目标KEY值对应前置交易所在区块链中的存储位置,其中,所述前置交易是与目标交易含有同一KEY值并在时间序列上靠前的前一条有效交易。
3.根据权利要求2所述的提交方法,其特征在于,步骤S101中,为存证类型数据添加时序属性的方法如下:
存证类型数据构件交易数据前,首先需要检索状态数据库,查看该交易对应KEY的最新状态,该状态中的时序属性视为前置交易所在区块链中的存储位置。
4.根据权利要求2所述的提交方法,其特征在于,步骤S101中,为交易类型数据添加时序属性的方法如下:
交易类型数据对应的KEY值包括交易的发送方和接收方,则时序属性包括发送方对应前置交易所在区块链中的存储位置和接收方对应前置交易所在区块链中的存储位置;
交易类型数据构建交易数据前,首先需要检索状态数据库,判断发送方对应状态的固定余额是否满足转账需要:如不满足转账需要,则无法构建交易数据,直接返回交易失败的结果;如满足转账需要,则按照客户端输入将发送方规定数目的固定余额转入接收方的临时余额集合,发送方和接收方对应前置交易的时序信息记录在交易中并提交上链。
5.根据权利要求4所述的提交方法,其特征在于,关于固定余额和临时余额集合:
将交易类型数据的账户的状态表示为固定余额和临时余额集合的形式,并设置一个固定时间段Δt,其中,Δt是为每个交易从提交到区块链上到不可编辑的时间段;
在交易类型数据提交前,首先根据状态数据库检查发送方与接收方的余额状态,将符合条件的临时余额更新至固定余额,所述条件必须满足临时余额对应交易的提交时间加上时间段Δt大于等于当前交易提交的时间;发送方在进行转账时只能使用固定余额,且接收方在接受转账后的Δt时间段后需将该余额放入临时余额集合;
所述时间段Δt根据实际应用场景中交易的频繁程度进行动态调整;所述临时余额集合中的每一个元素表示为接收方每一笔交易接受的余额加上该笔交易对应的时间戳。
6.根据权利要求1所述的提交方法,其特征在于,步骤S102中,记录时序属性并更新状态数据库,包括:
交易在经过共识由排序节点打包后,遍历区块内所有的交易,记录每个交易所在区块链中的存储位置,即该交易对应的时序属性;打包后的区块发送给提交节点进行验证,并根据交易对应的状态与时序属性更新状态数据库中对应KEY的状态。
7.一种基于权利要求1-6任一项所述的时序属性的区块链交易编辑方法,其特征在于,应用于区块链客户端节点,包括步骤:
S201、接收客户端节点发送的交易编辑请求,所述编辑请求至少包括:客户端节点编辑目标历史交易的KEY值、目标历史交易的参数、时间戳以及编辑后的交易参数;
S202、基于客户端节点输入的历史交易参数,利用状态数据与交易中保存的前置交易的时序属性作为索引进行链式查找;
S203、将目标历史交易对应前置交易的时序属性与修改后的交易参数作为输入构建新交易数据并提交;
S204、将跟时序属性进行链式查找时检索路径上所有的历史交易反序列化,记录交易元数据进入交易池,在修改后的交易正确提交之后按照时序顺序把交易池中的交易再次提交,保持正确的时序关系。
8.根据权利要求7所述的编辑方法,其特征在于,步骤S202中,根据客户端节点发送的KEY值检索状态数据库,确认是否存在正确的目标KEY值以及状态:
若存在正确的KEY值以及状态,则通过状态中的时序属性进行检索,寻找目标交易元数据进行重构交易子树;
若不存在目KEY值或存在目标KEY值但对应状态中的结束位显示该KEY值已被逻辑删除,则认为该KEY值对应的历史交易已被删除,无法编辑,返回失败。
9.一种基于权利要求1-6任一项所述的时序属性的区块链交易查询方法,其特征在于,应用于区块链节点中,包括步骤:
S301、接收客户端节点发送的查询请求,所述查询请求至少包括:查询历史交易对应的KEY值;
S302、根据目标查询历史交易对应的KEY值检索状态数据库,根据最新状态获取KEY值对应最新状态所在交易的位置,即所述前置交易的时序属性;
S303、根据时序属性获取对应的区块,反序列化区块并根据交易所在区块中的位置解析出交易元数据,再根据交易中包含的前置交易的时序属性进一步查询;
S304、根据查询到的交易元数据,记录交易中包含的KEY值的历史快照,即历史状态;直到交易中的时序属性为空,返回所有的历史记录至所述客户端节点。
10.根据权利要求9所述的编辑方法,其特征在于,步骤S302中,根据客户端节点发送的KEY值检索状态数据库,确认是否存在正确的目标KEY值以及状态:
若存在正确的KEY值以及状态,则通过状态中的时序属性检索对应的交易元数据,并递归地通过交易中的时序属性进行检索;
若不存在目KEY值或存在目标KEY值但对应状态中的结束位显示该KEY值已被逻辑删除,则直接返回空集给客户端,查询结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110965651.4A CN113656504A (zh) | 2021-08-23 | 2021-08-23 | 一种基于时序属性的区块链交易提交、编辑和查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110965651.4A CN113656504A (zh) | 2021-08-23 | 2021-08-23 | 一种基于时序属性的区块链交易提交、编辑和查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113656504A true CN113656504A (zh) | 2021-11-16 |
Family
ID=78492519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110965651.4A Pending CN113656504A (zh) | 2021-08-23 | 2021-08-23 | 一种基于时序属性的区块链交易提交、编辑和查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113656504A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117527832A (zh) * | 2024-01-03 | 2024-02-06 | 杭州趣链科技有限公司 | 一种区块链的交易排序方法、装置、电子设备和存储介质 |
-
2021
- 2021-08-23 CN CN202110965651.4A patent/CN113656504A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117527832A (zh) * | 2024-01-03 | 2024-02-06 | 杭州趣链科技有限公司 | 一种区块链的交易排序方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11663090B2 (en) | Method and system for desynchronization recovery for permissioned blockchains using bloom filters | |
US20220141018A1 (en) | Method and system for an efficient consensus mechanism for permissioned blockchains using audit guarantees | |
CN109977171B (zh) | 一种保证事务一致性和线性一致性的分布式系统和方法 | |
CN101334797B (zh) | 一种分布式文件系统及其数据块一致性管理的方法 | |
US7702640B1 (en) | Stratified unbalanced trees for indexing of data items within a computer system | |
CN103460208B (zh) | 用于将数据加载到时态数据仓库的方法和系统 | |
CN113329031A (zh) | 一种区块的状态树的生成方法及装置 | |
US9195665B2 (en) | Method and system for data retention | |
CN111177277B (zh) | 数据存储方法、交易存储方法及装置 | |
CN109194646B (zh) | 一种基于区块链的安全认证数据存取方法 | |
CN109766341A (zh) | 一种建立哈希映射的方法、装置、存储介质 | |
KR20040086580A (ko) | 데이터 복제를 용이하게 하기 위한 시스템 및 방법과 상기시스템을 포함하는 컴퓨터 및 네트워크 | |
EP3575968A1 (en) | Method and device for synchronizing active transaction lists | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
CN112579261A (zh) | 退出跨片事务的方法和系统、主链节点和目标分片节点 | |
CN107463596B (zh) | 针对设置链外勘误表的区块链并行查询方法及系统 | |
CN113656504A (zh) | 一种基于时序属性的区块链交易提交、编辑和查询方法 | |
CN112261160B (zh) | 包含分片的区块链系统中退出跨片事务的方法及系统 | |
US20060106857A1 (en) | Method and system for assured document retention | |
CN103631843A (zh) | 关系数据库中时间唯一索引中的间隙检测的方法和系统 | |
CN114127707A (zh) | 用于处理写请求的系统、计算节点和方法 | |
WO2023083237A1 (zh) | 图数据的管理 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN116542668A (zh) | 一种基于区块链的数据处理方法、设备及可读存储介质 | |
CN114328591A (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 |