CN116664129B - 区块链账本数据迭代方法、电子设备及可读存储介质 - Google Patents

区块链账本数据迭代方法、电子设备及可读存储介质 Download PDF

Info

Publication number
CN116664129B
CN116664129B CN202310936678.XA CN202310936678A CN116664129B CN 116664129 B CN116664129 B CN 116664129B CN 202310936678 A CN202310936678 A CN 202310936678A CN 116664129 B CN116664129 B CN 116664129B
Authority
CN
China
Prior art keywords
iteration
data
iterator
storage unit
iteration result
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.)
Active
Application number
CN202310936678.XA
Other languages
English (en)
Other versions
CN116664129A (zh
Inventor
黄方蕾
张珂杰
卢益铭
尚璇
谢逸俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Qulian Digital Technology Co ltd
Original Assignee
Wuhan Qulian Digital Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Qulian Digital Technology Co ltd filed Critical Wuhan Qulian Digital Technology Co ltd
Priority to CN202310936678.XA priority Critical patent/CN116664129B/zh
Publication of CN116664129A publication Critical patent/CN116664129A/zh
Application granted granted Critical
Publication of CN116664129B publication Critical patent/CN116664129B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

一种区块链账本数据迭代方法、电子设备及可读存储介质,该方法包括:获取智能合约请求的迭代范围的账本数据,迭代范围的账本数据包括内存中以有序数据结构存储的交易修改的数据和区块修改的数据;基于迭代范围,创建与交易修改的数据对应的第一迭代器,以及与区块修改的数据对应的第二迭代器;在迭代范围内,基于第一迭代器对交易修改的数据进行迭代处理,基于第二迭代器对区块修改的数据进行迭代处理;基于第一迭代器的迭代结果和第二迭代器的迭代结果,确定迭代范围内的账本数据的目标返回值。通过本申请,无需对内存中的账本数据创建副本及排序,在不占用额外内存资源的情况下,可以基于内存中有序存储的账本数据,实现高效且快速的迭代。

Description

区块链账本数据迭代方法、电子设备及可读存储介质
技术领域
本申请属于计算机应用技术领域,尤其涉及一种区块链账本数据迭代方法、电子设备及可读存储介质。
背景技术
区块链系统可以支持多种语言的智能合约,并在智能合约中提供了账本数据迭代的功能,以满足合约开发者的需求。区块链以区块为单位,进行区块执行与账本提交;一个区块可以包含若干笔交易,智能合约交易可以作为交易的一种;交易的执行相当于基于交易的逻辑对账本进行读写操作。
目前,区块链以哈希表的形式在内存中维护交易执行产生的数据。在进行数据迭代时,需要对内存中以哈希表形式存储的数据进行快照及备份,并对备份的数据进行排序,然后基于排序后的内存数据,创建迭代器进行迭代。然而,创建内存迭代器伴随着创建内存数据副本和排序,导致对内存资源占用的开销大、迭代速度慢的问题。
发明内容
本申请实施例提供了一种区块链账本数据迭代方法、电子设备及可读存储介质,可以解决对内存资源占用的开销大、迭代速度慢的问题。
第一方面,本申请提供了一种区块链账本数据迭代方法,该方法可以包括:
获取智能合约请求的迭代范围的账本数据,所述迭代范围的账本数据包括内存中以有序数据结构存储的交易修改的数据和区块修改的数据;基于所述迭代范围,创建与所述交易修改的数据对应的第一迭代器,以及与所述区块修改的数据对应的第二迭代器;在所述迭代范围内,基于所述第一迭代器对所述交易修改的数据进行迭代处理,基于所述第二迭代器对所述区块修改的数据进行迭代处理;基于所述第一迭代器的迭代结果和所述第二迭代器的迭代结果,确定所述迭代范围内的所述账本数据的目标返回值。
第二方面,本申请实施例提供了一种区块链账本数据迭代装置,该装置可以包括:
获取单元,用于获取智能合约请求的迭代范围的账本数据,所述迭代范围的账本数据包括内存中以有序数据结构存储的交易修改的数据和区块修改的数据;
创建单元,用于基于所述迭代范围,创建与所述交易修改的数据对应的第一迭代器,以及与所述区块修改的数据对应的第二迭代器;
迭代单元,用于在所述迭代范围内,基于所述第一迭代器对所述交易修改的数据进行迭代处理,基于所述第二迭代器对所述区块修改的数据进行迭代处理;
输出单元,用于基于所述第一迭代器的迭代结果和所述第二迭代器的迭代结果,确定所述迭代范围内的所述账本数据的目标返回值。
第三方面,本申请提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面所述的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见第一方面中的相关描述,在此不再赘述。
本申请与现有技术相比存在的有益效果是:通过本申请,获取智能合约请求的迭代范围的账本数据,迭代范围的账本数据包括内存中以有序数据结构存储的交易修改的数据和区块修改的数据;基于迭代范围,创建与交易修改的数据对应的第一迭代器,以及与区块修改的数据对应的第二迭代器;在迭代范围内,基于第一迭代器对交易修改的数据进行迭代处理,基于第二迭代器对区块修改的数据进行迭代处理;基于第一迭代器的迭代结果和第二迭代器的迭代结果,确定迭代范围内的账本数据的目标返回值;本申请针对内存中以有序数据结构存储的交易修改的数据和区块修改的数据进行迭代,无需对内存中的账本数据创建副本及排序,在不占用额外内存资源的情况下,可以基于内存中有序存储的账本数据,实现高效且快速的迭代;具有较强的易用性与实用性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的系统架构应用场景的示意图;
图2是本申请实施例提供的区块链账本数据迭代方法的流程示意图;
图3是本申请实施例提供的有序数据架构示意图;
图4是本申请实施例提供的账本数据迭代器的迭代处理整体架构示意图;
图5是本申请实施例提供的区块链账本数据迭代装置的结构示意图;
图6是本申请实施例提供的电子设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
区块链以区块为单位进行区块执行与账本提交。对于当前执行的区块,区块链会依次执行区块内的所有的交易,执行完毕后,会将当前区块所改动的数据持久化存储到磁盘中。
因此,对于正在执行的区块m中的交易n,账本中的数据可以包括以下三部分:
(1)交易修改的数据:当前第n笔交易执行过程中修改的状态数据。在当前交易执行过程中,还会产生新的修改的状态数据。若当前交易执行成功,会合并到区块修改的数据;若当前交易执行失败,则会清空。
(2)区块修改的数据:区块m的前n-1笔交易修改的状态数据,即交易n之前区块m的原始版本的状态数据。在当前交易执行的过程中,区块修改的数据并不会发生变化。待区块执行完毕后,区块修改的数据会写入到持久化账本数据中。
(3)持久化账本数据:前m-1个区块执行后的状态数据,持久化存储在磁盘中。
由于早期合约的操作都是以键值对KV(Key-Value)形式操作账本,区块链会以哈希表的形式在内存中维护交易修改的数据和区块修改的数据。如图1中的(a)图所示,当合约请求账本创建范围的迭代器执行迭代流程时,首先需要为交易修改的数据和区块修改的数据创建快照,拷贝一份在迭代范围内的当前区块修改的数据和当前交易修改的数据,并将拷贝的数据进行合并得到内存数据快照;再对内存数据快照中的数据进行排序,得到有序内存数据快照;基于有序内存数据快照创建内存迭代器;持久化账本数据在磁盘中有序组织,可以基于存储引擎的接口获取磁盘迭代器;然后将内存迭代器和磁盘迭代器组合得到最终的账本数据迭代器。
然而上述处理过程,创建内存迭代器伴随着创建内存数据副本和排序,内存占用开销大、迭代速度慢;而且合约使用迭代器的开销上限无法被燃料gas机制限制。创建内存迭代器伴随着内存使用,由于区块修改的数据与当前交易无法作为纳入到当前交易gas计费的标准。导致合约可以仅通过少量的指令gas开销,而触发区块链大量的内存占用,对区块链执行环境产生安全威胁。
针对上述问题,本申请提供一种区块链账本数据迭代方法,可以让账本数据迭代器的创建快速且不占用额外内存,使得创建的账本数据迭代器的迭代高效且快速,同时账本数据迭代器实际使用的系统资源符合其gas开销。
如图1中的(b)图所示的架构,本申请实施例提供的区块链账本数据迭代方法,针对迭代范围内的账本数据,分别创建与交易修改的数据对应的第一迭代器(即交易修改数据迭代器)、与区块修改的数据对应的第二迭代器(即区块修改数据迭代器)以及与持久化数据对应的第三迭代器(即磁盘迭代器),然后将上述三个迭代器组合成账本数据迭代器。
下面通过实施例进一步介绍,基于上述组合成的账本数据迭代器对账本数据进行迭代处理的具体实现过程。
请参见图2,图2是本申请实施例提供的区块链账本数据迭代方法的流程示意图。如图2所示,该方法可以包括以下步骤:
S201,获取智能合约请求的迭代范围的账本数据,所述迭代范围的账本数据包括内存中以有序数据结构存储的交易修改的数据和区块修改的数据。
示例性的,智能合约请求的迭代范围的账本数据,可以基于用户输入的数据访问指令确定的,该数据访问指令中可以包含迭代范围的信息,从而可以确定该迭代范围对应的账本数据。该账本数据可以包括内存中存储的交易修改的数据、区块修改的数据。迭代范围可以基于账本数据的数据标识进行设定,例如以键值对形式存储的账本数据,可以基于键的序列确定账本数据的迭代范围,例如账本数据的键包括a、b、c、d、e,则迭代范围可以表示为[a,e]。
需要说明的是,上述迭代范围的表示方式仅示例性说明,还可以基于其他可以用于标识数据顺序的字典序标识进行表示,包括但不限于上述迭代范围的表示方式;待迭代的账本数据还可以包括账本数据中多个迭代范围内的账本数据。
本申请实施例,主要针对内存中存储的账本数据的存储形式以及迭代过程进行优化,下面首先介绍交易修改的数据和区块修改的数据在内存中的组织形式。
在一些实施例中,在获取智能合约请求的迭代范围的账本数据之前,该方法还包括:基于交易的执行,对交易修改的数据进行写入的操作;具体包括:
基于有序数据结构,确定与交易修改的数据对应的第一存储架构的存储单元;基于第一存储架构的存储单元以及第一迭代器的个数,确定待写入的交易修改的数据的最新版本号;将带有最新版本号的交易修改的数据写入第一存储架构的存储单元,得到以有序数据结构存储的交易修改的数据。
示例性的,第一存储架构可以为交易修改的数据对应的红黑树架构或者平衡二叉树架构,第一存储架构的存储单元可以为红黑树架构中的红节点或黑节点,或者平衡二叉树的节点。交易修改的数据在内存中以有序数据结构进行存储,该有序数据结构可以为红黑树的节点结构或者平衡二叉树的节点结构,从而保证数据在内存中是有序的组织形式。
如图3所示,在执行交易修改的数据的写入操作过程,首先基于有序数据结构(例如红黑树或平衡二叉树的架构),确定一个存储单元(例如红黑树节点),即第一存储架构的存储单元,例如图3中的节点1至节点7中的任一个存储单元。在写入账本数据的过程中,基于确定的存储单元的排序,确定与存储单元的排序相对应的数据标识,基于该有序的数据标识和账本数据的实际值,写入该创建的存储单元,从而形成有序数据结构的交易修改的数据,例如基于键值对KV的形式写入该存储单元。
示例性的,交易修改的数据在内存中进行多版本管理,以实现迭代器创建时的数据快照。在交易执行过程中,可以伴随着用户的多次迭代访问,从而可以生成多个迭代器。基于创建的迭代器的个数,确定内存中交易修改的数据对应的最新快照版本号;即每笔交易在开始执行时,初始化最新快照版本号为0,最新快照版本号会随着迭代器个数不断增长;每次为交易修改的数据创建一次迭代器,最新快照版本号的值加1;当以键值对的形式存储数据时,写入的交易修改的数据中的键Key可以以原始Key+版本号进行表示,例如a_0、a_1,其中a为交易修改的数据的Key,0或1为相应的版本号;当创建了第一个迭代器时,对应的最新快照版本号为0,当创建第二个迭代器时,对应的最新快照版本号为1。
如图4所示,将交易修改的数据按红黑树的架构在内存中进行存储,每个节点对应存储一个以键值对形式表示的账本数据,即账本数据的数据标识可以为键,例如节点1对应存储Key为a的数据,节点2对应存储Key为b的数据,直到节点7存储Key为g的数据;按键的顺序,在该架构中进行依次存储,得到内存中以有序数据结构存储的交易修改的数据。
相应地,在写入数据时,第一存储架构的一个存储单元存储的账本数据的Key为原始Key+最新快照版本,例如a_1;该存储单元的值Value为交易执行产生的实际的Value,例如a_1=50,其中50为该存储单元的Value;向交易修改的数据对应的第一存储架构插入该存储单元,从而基于有序的第一存储架构实现对账本数据的多版本管理。
在一些实施例中,在交易执行过程中,还包括对交易修改的数据对应的删除操作;与上述写入操作类似,针对该删除操作,确定第一存储架构中的一个存储单元,写入的账本数据的Key为原始Key+最新快照版本号,而相应的值Value为删除标识。
在一些实施例中,在创建与交易修改的数据对应的第一迭代器之后,该方法还包括:
更新待写入第一存储架构的交易修改的数据的最新版本号;更新后的最新版本号用于指示第一迭代器创建完成之后写入第一存储架构的交易修改的数据的版本。
示例性的,由于在创建一次第一迭代器结束后,交易可能仍在执行,交易修改的数据仍在持续写入,从而需要更新写入数据的最新快照版本号,将最新快照版本号加1;基于更新后的最新快照版本号,对创建一次第一迭代器结束后写入的数据进行标识,保证在迭代过程穿插的数据写入操作不会对该次创建的迭代器的迭代过程产生影响,且通过最新快照版本号的标记,实现在内存中对账本数据的多版本管理,无需额外的内存对写入的账本数据进行拷贝和排序,降低内存资源的消耗与占用,提高创建迭代器的效率。
在一些实施例中,在交易执行过程中还包括对交易修改的数据的读取操作,基于账本数据的数据标识,实现对账本数据的真实值的读取。该读取操作会读取目标数据标识(例如目标Key)最新版本的数据,例如一个存储单元中,同时包括a_0=49、a_1=50,在执行读取操作时,将读取到a_1=50。
具体的,在读取过程中,访问第一个账本数据的目标数据标识(目标Key)与存储单元存储的账本数据的实际数据标识(实际Key)相同的存储单元。如果存储单元不存在这样的账本数据,返回不存在;如果存在,继续向后访问存储单元,直到找到最后一个目标数据标识(目标Key)与实际数据标识(实际Key)相同的存储单元;在访问到目标数据标识(目标Key)与实际数据标识(实际Key)相同的存储单元时,还需要判断这个存储单元的账本数据是否存在删除标识,如果存在删除标识,返回不存在;反之返回该存储单元存储的账本数据的真实值(Value)。读取操作也可以是针对一个范围内的账本数据的读取,即读取操作可以对应包括多个账本数据的目标数据标识,基于多个目标数据标识一一读取到各个存储单元中对应账本数据的真实值。
在一些实施例中,针对区块修改的数据在内存中的维护方式,在获取智能合约请求的迭代范围的账本数据之前,该方法还包括:
基于有序数据结构,确定区块修改的数据对应的第二存储架构的存储单元;将原始版本的区块修改的数据写入第二存储架构的存储单元,得到以有序数据结构存储的区块修改的数据。
示例性的,原始版本的区块修改的数据为在执行某一区块中当前交易之前,该区块中已完成的交易的对应修改的状态数据。第二存储架构可以为存储区块修改的数据的红黑树架构或平衡二叉树架构;第二存储架构的存储单元可以为该红黑树架构中的红节点或黑节点,或者平衡二叉树的节点。区块修改的数据生命周期为一个区块执行,存储了当前区块m前n-1笔交易修改的数据。区块修改的数据在交易执行过程中并不会发生修改,只会在交易执行后将交易修改的数据写入。因此在交易执行的过程中,对区块修改的数据迭代操作并不会受到新写入数据的影响。区块修改的数据在内存中以有序数据结构(第二存储架构)进行存储,例如红黑树或平衡二叉树,从而保证数据在内存中是有序组织。
示例性的,与交易修改的数据的写入操作类似,在对区块修改的数据执行写入操作时,确定第二存储架构的一个存储单元,例如针对红黑树架构创建一个红黑树节点,该存储单元存储的账本数据的数据标识(Key)为原始数据标识(原始Key),即在执行交易n之前对应存储的原始版本的区块修改的数据中的数据表标识,该存储单元存储的账本数据的值(Value)为区块修改的数据的实际值(Value)。
相应地,针对区块修改的数据执行删除操作时,通过确定第二存储架构的一个存储单元,例如创建一个红黑树节点,存储单元存储的账本数据的数据标识(Key)为原始数据标识(原始Key),存储单元存储的账本数据的值(Value)为删除标识。
S202,基于迭代范围,创建与交易修改的数据对应的第一迭代器,以及与区块修改的数据对应的第二迭代器。
在一些实施例中,基于内存中的交易修改的数据以有序数据结构进行多版本的存储,区块修改的数据以有序数据结构进行存储,在接收到用户输入的迭代的指令后,可以针对两部分数据分别创建对应的迭代器;相应地,用户输入的指令可以是针对账本数据的查询范围指令。
在一些实施例中,账本数据还包括持久化账本数据;在接收到用户输入的迭代的指令后,基于持久化账本数据,创建与持久化账本数据对应的第三迭代器。
示例性的,响应于用户的指令,针对指令中的迭代范围,创建与该迭代范围对应的账本数据迭代器。该账本数据迭代器包括针对内存中交易修改的数据创建的第一迭代器和区块修改的数据创建的第二迭代器,以及针对磁盘中的持久化账本数据创建的第三迭代器;其中,交易修改的数据和区块修改的数据为内存中以有序数据结构存储的账本数据,且交易修改的数据基于有序的存储架构以多版本进行管理。
示例性的,交易修改的数据对应的第一迭代器记录当前最新快照版本号,该最新快照版本号为迭代器版本号,基于需要进行迭代处理的迭代范围确定有序数据结构上对应的起始存储单元和末尾存储单元,例如迭代范围为[a,d],对应的起始存储单元为节点1、末尾存储单元为节点4。
示例性的,区块修改的数据对应的第二迭代器,基于需要进行迭代处理的迭代范围,确定有序数据结构上区块修改地数据对应的起始存储单元和末尾存储单元,例如迭代范围为[a,d],对应的起始存储单元为节点1、末尾存储单元为节点4。
示例性的,可以基于存储引擎的接口确定第三迭代器,即磁盘中存储的持久化账本数据对应的磁盘迭代器。
需要说明的是,账本数据迭代器可以包括上述第一迭代器、第二迭代器和第三迭代器;账本数据迭代器的创建可以基于用户输入的指令生成,例如用户输入的指令可以包括迭代范围等,从而基于该指令在交易执行过程完成账本数据迭代器的创建。另外,创建的账本数据迭代器的个数也可以基于用户输入的指令的次数确定,例如基于不同用户或同一用户的多次访问输入的指令,分别创建相应数量及版本的账本数据迭代器。账本数据迭代器随用户的访问次数,触发账本数据迭代器的创建次数,从而形成多个账本数据迭代器;相应地,交易修改的数据对应的第一迭代器的个数也随着用户访问次数的增加而增加,形成多个版本的第一迭代器。
S203,在迭代范围内,基于所述第一迭代器对所述交易修改的数据进行迭代处理,基于所述第二迭代器对所述区块修改的数据进行迭代处理。
在一些实施例中,针对内存中的账本数据,基于有序数据结构的存储形式,进行迭代处理,得到迭代结果,该迭代结果可以为账本数据对应的实际的值Value。
在一些实施例中,在迭代范围内,基于账本数据迭代器,对以有序数据结构存储的账本数据进行迭代处理,得到迭代结果,可以包括:
在迭代范围内,基于第一迭代器对交易修改的数据进行迭代处理,得到第一迭代结果;在迭代范围内,基于第二迭代器对区块修改的数据进行迭代处理,得到第二迭代结果。
示例性的,在交易结束执行时,对交易修改的数据进行迭代,将最新版本的交易修改的数据写入到区块修改的数据中,清空交易修改的数据。
示例性的,当区块结束执行时,对区块修改的数据进行迭代,将所有区块修改的数据持久化到磁盘中,清空区块修改的数据。其中,针对区块修改的数据,通过第二迭代器执行迭代操作时,访问到不带删除标识的存储单元,该存储单元对应的实际值Value作为第二返回值;当访问到存储单元为空或末尾存储单元,则直接返回迭代结束标识。
本申请实施例,交易修改的数据的生命周期为一笔交易,在合约交易执行的过程中,会对账本数据进行读写,其中写入的数据会临时存储在交易修改的数据对应的存储单元中。读取操作包括KV读取和迭代器读取,因此存在迭代器迭代过程中穿插着写入操作的情况。本申请实施例基于在内存中对账本数据以有序数据结构的存储,不需要额外的内存拷贝和排序,不会占用额外的内存资源,并且能够高效新建相应的迭代器,实现快速迭代;而且基于带有版本号的迭代器,针对基于多版本管理的交易修改的数据进行迭代,当前版本迭代器只会访问到创建之前写入的交易修改的数据,因此不会影响当前版本迭代器之后写入的账本数据。
下面针对基于创建的账本数据迭代器对迭代范围的账本数据进行迭代的整体过程进行描述,该整体的迭代过程目的是确定上述三部分的账本数据(交易修改的数据、区块修改的数据以及持久化数据)中,在迭代范围内、当前版本的账本数据迭代器之前写入的、版本最新且未被删除的账本数据的实际值。
如图4所示的迭代处理的整体架构示意图,在基于迭代范围的账本数据,创建与账本数据对应的账本数据迭代器之后,基于账本数据迭代器对账本数据进行迭代处理,得到第一迭代器的第一迭代结果,第二迭代器的第二迭代结果,第三迭代器的第三迭代结果。
需要说明的是,第一迭代结果、第二迭代结果和第三迭代结果初始化时都为空;在迭代过程中,第一迭代结果可以为第一迭代器上一次迭代的结果,第二迭代结果可以为第二迭代器上一次迭代的结果,第三迭代结果可以为第三迭代器上一次迭代的结果;当第一迭代结果、第二迭代结果或第三迭代结果中的其中一个迭代结果作为本轮次的最终迭代结果,即目标返回值,则将该最终迭代结果对的值清空,以便于下一轮次迭代时,记录下一轮次的迭代结果的值。
在一些实施例中,通过账本数据迭代器进行迭代处理的过程可以包括:
A1,获取第一迭代结果,第一迭代结果为第一迭代器针对交易修改的数据的迭代结果;若第一迭代结果不为空,则确定第一迭代结果为第一迭代器上一次迭代的迭代结果,返回第一迭代结果;若第一迭代结果为空,则基于第一迭代器对交易修改的数据进行迭代处理,得到新的第一迭代结果并返回。
示例性的,在第一迭代结果不为空时,说明上次账本数据迭代器执行迭代流程时,没有选中第一迭代结果的值作为最终的迭代结果,因此本轮次对交易修改的数据的迭代处理可以直接返回第一迭代结果的值;若第一迭代结果为空,则通过第一迭代器,尝试迭代一条交易修改的数据,得到新的第一迭代结果(其中返回的第一迭代结果中的数据标识Key不带版本号)。
A2,获取第二迭代结果,第二迭代结果为第二迭代器针对区块修改的数据的迭代结果;若第二迭代结果不为空,则确定第二迭代结果为第二迭代器上一次迭代的迭代结果,返回第二迭代结果;若第二迭代结果为空,则基于第二迭代器对区块修改的数据进行迭代处理,得到新的第二迭代结果并返回;若第二迭代器对应的新的迭代结果的数据标识不在第一迭代器的迭代结果内,则返回第二迭代器对应的新的第二迭代结果;若第二迭代器对应的新的第二迭代结果的数据标识在第一迭代器的迭代结果内,则跳过。
示例性的,若第二迭代结果不为空,说明上次账本数据迭代器迭代时,没有选中第二迭代结果作为最终的迭代结果,因此本轮次对区块修改的数据的迭代处理直接返回该第二迭代结果;若第二迭代结果为空,则通过第二迭代器,尝试迭代一条区块修改的数据,得到新的第二迭代结果;由于交易修改的数据比区块修改的数据的版本更新,因此需要判断得到的新的第二迭代结果的数据标识是否在第一迭代器的迭代结果内,例如第一迭代结果为a_0=50,返回记为a=50,第二迭代结果为a=49,数据标识a与第一迭代结果对应的数据标识相同,则在本轮次区块修改的数据迭代过程跳过a,继续迭代下一个存储单元的区块修改的数据。
A3,获取第三迭代结果,第三迭代结果为第三迭代器针对持久化账本数据的迭代结果;若第三迭代结果不为空,则确定第三迭代结果为第三迭代器上一次迭代的迭代结果,返回第三迭代结果;若第三迭代结果为空,则基于第三迭代器对持久化账本数据进行迭代处理,得到新的第三迭代结果;若第三迭代器对应的新的第三迭代结果的数据标识不在第一迭代器的迭代结果和第二迭代器的迭代结果内,则将第三迭代器对应的新的第三迭代结果返回;若第三迭代器对应的新的第三迭代结果的数据标识在第一迭代器的迭代结果或第二迭代器的迭代结果内,则跳过。
示例性的,与上述第一迭代器和第二迭代器的迭代过程类似,第三迭代结果若不为空,说明上一轮次账本数据迭代器迭代时,没有选中第三迭代结果作为最终的迭代结果,因此本轮次直接返回第三迭代结果;若第三迭代结果为空,则通过第三迭代器,尝试迭代一条持久化账本数据,得到新的第三迭代结果;由于交易修改的数据和区块修改的数据均比持久化账本数据的版本更新,因此需要判断得到的新的第三迭代结果的数据标识是否在第一迭代器的迭代结果或第二迭代器的迭代结果内,例如第一迭代结果或第二迭代结果对应返回值为a=50,第三迭代结果为a=49,数据标识a存在于第一迭代结果或第二迭代结果中,则在持久化账本数据的迭代过程跳过a,继续对下一个存储单元进行迭代。
基于上述整体的迭代过程,下面针对交易修改的数据进行迭代操作的具体过程进行描述。在该迭代操作的过程中,第一迭代器的目的是,基于有序的第一存储架构,在迭代过程中确定出第一个原始数据标识(原始Key)不等于记录的起始数据标识(起始Key)、当前版本的第一迭代器可见且无删除标识(即未被删除实际值)的存储单元中的账本数据(即交易修改的数据)。
在一些实施例中,在迭代范围内,基于第一迭代器对交易修改的数据进行迭代处理,包括:
A11,获取当前存储单元,当前存储单元为第一存储架构中的任一个位于迭代范围内的存储单元。
示例性的,在访问第一存储架构的一个存储单元之前,记录起始数据标识(起始Key),起始数据标识(起始Key)可以为当前访问的存储单元对应存储的去除版本号的原始数据标识(原始Key),例如记录的起始Key为a,与访问的节点1的a_1去除版本号1之后的原始Key(为a)相同。然后将访问到的存储单元作为当前存储单元,例如图4中的节点1。
A12,若当前存储单元不为空,且当前存储单元的交易修改的数据的版本号小于或等于第一迭代器的版本号,且当前存储单元无删除标识,则将当前存储单元的交易修改的数据作为第一迭代器的迭代结果。
示例性的,若当前存储单元不为空,记录当前存储单元对应的潜在目标数据标识(潜在目标Key);该潜在目标数据标识(潜在目标Key)为当前存储单元对应去除版本号的原始数据标识(原始Key),例如a_1去除版本号1之后的原始Key为a。判断之前记录的起始Key是否与潜在目标Key一致,如果不一致,即记录的起始Key为a,潜在目标Key为b,则进一步判断当前存储单元的交易修改的数据的版本号是否小于或等于第一迭代器的版本号(尝试找到交易修改的数据的版本号小于或等于迭代器版本号的存储单元);若存在交易修改的数据的版本号小于或等于第一迭代器的版本号的存储单元(即从当前存储单元开始,存在至少一个原始Key为潜在目标Key的存储单元),则将当前存储单元作为潜在目标存储单元。然后判断该潜在目标存储单元的账本数据是否带有删除标识;若不存在删除标识,则该潜在目标存储单元即为本次迭代需要的存储单元,并将该存储单元对应的交易修改的数据的实际值Value作为第一迭代结果返回。
A13,若当前存储单元不为空,且当前存储单元的交易修改的数据对应的原始数据标识与记录的起始数据标识相同,则基于有序数据结构获取第一存储架构中的下一个存储单元。
示例性的,若当前存储单元不为空,且当前存储单元的交易修改的数据对应的原始数据标识与记录的起始数据标识相同,例如记录的起始Key为a,访问到的当前存储单元对应的原始键也为a,则说明在上一轮次迭代操作时已经返回相应的值,则继续基于有序数据结构访问下一个存储单元,例如下一个数据标识为b的节点2。
A14,若当前存储单元不为空,且当前存储单元的交易修改的数据的版本号大于第一迭代器的版本号或者当前存储单元带有删除标识,则重新记录交易修改的数据对应的起始数据标识,并基于有序数据结构获取第一存储架构中的下一个存储单元。
示例性的,若当前存储单元不为空,当前存储单元的交易修改的数据的版本号大于第一迭代器的版本号,即不存在交易修改的数据的版本号小于或等于第一迭代器的版本号的当前存储单元,说明原始Key等于潜在目标Key所有存储单元对应的账本数据版本号都大于第一迭代器的版本号,即这些存储单元的交易修改的数据均为在第一迭代器创建后写入的,该第一迭代器无法访问之后写入的数据,则重新返回记录起始数据标识的步骤,并基于记录的起始数据标识以及有序数据结构继续访问下一个存储单元。
相应地,若当前存储单元不为空,且当前存储单元作为潜在目标存储单元,带有删除标识,说明该存储单元的账本数据被执行了删除操作,被删除的账本数据不能被第一迭代器访问到;即存在删除标识时,重新返回记录起始数据标识的步骤,并基于记录的起始数据标识以及有序数据结构继续访问下一个存储单元。
A15,若当前存储单元为空或为迭代范围对应的末尾存储单元,则返回迭代结束标识。
需要说明的是,对交易修改的数据的迭代,目的在于寻找与当前记录的起始数据标识不同、账本数据的版本号小于或等于第一迭代器的版本号且不带删除标识的存储单元,而且在找到该存储单元后,则将该存储单元的账本数据返回并结束本轮次的迭代。其中,当基于迭代范围开始迭代时,该记录的起始数据标识可以为迭代范围对应的起始start存储单元的数据标识的前一个存储单元的数据标识,例如迭代范围为[a,e],a为起始存储单元的Key,则起始存储单元的前一个存储单元的Key可以为m,则在开始迭代时,起始Key可以记录为m。起始Key还可以为上一迭代轮次迭代出的账本数据对应的Key,例如上一轮次迭代过程,键为a的迭代结果的不符合上述迭代要求,则继续对下一存储单元迭代,若键为b的迭代结果符合上述要求,则返回键为b的账本数据,该上一轮次的迭代结束;进而在当前轮次迭代时,记录的起始Key为b,并对b以后的账本数据进行迭代。即每轮次的迭代只针对在每次记录的起始数据标识(起始Key)之后的数据标识(Key)对应的存储单元的账本数据进行迭代,直到经过多轮的迭代,迭代完迭代范围内的账本数据。如图3所示,节点1至节点7,其对应的账本数据的键可以为a到g,相应的迭代顺序如图3中的虚线所示,可以基于账本数据中的数据标识(键)的序号,按序号的顺序进行依次迭代。
下面针对区块修改的数据进行迭代处理的具体过程进行描述。
在一些实施例中,在迭代范围内,基于第二迭代器对区块修改的数据进行迭代处理,包括:
A21,获取当前存储单元,当前存储单元为第二存储架构中的任一个位于迭代范围内的存储单元。
A22,若当前存储单元不为空,且当前存储单元的区块修改的数据无删除标识,则将当前存储单元的区块修改的数据作为第二迭代器的迭代结果。
A23,若当前存储单元不为空,且当前存储单元的区块修改的数据带有删除标识,则基于有序数据结构获取第二存储架构中的下一个存储单元。
A24,若当前存储单元为空或为迭代范围对应的末尾存储单元,则返回迭代结束标识。
示例性的,由于区块修改的数据在交易执行过程中并不会发生修改,只会在交易执行后将交易修改的数据写入;针对区块修改的数据的迭代器迭代操作,每次迭代只要找到第一个无删除标识的存储单元即可,即访问到一个无删除标识的存储单元,返回该存储单元的账本数据,结束本轮次的迭代;如果访问到当前存储单元为空或为迭代范围对应的末尾存储单元,直接返回迭代结束标识。
需要说明的是,区块修改的数据对应的存储架构与交易修改的数据的存储架构相同,对区块修改的数据的迭代顺序与交易修改的数据的迭代顺序原理相同,可以基于存储单元中账本数据的数据标识的排序依次进行迭代,并在返回一个实际值Value时,结束本轮次的迭代。
在一些实施例中,在基于第三迭代器对持久化账本数据进行迭代处理之后,该方法还包括:
基于第一迭代器的迭代结果、第二迭代器的迭代结果和第三迭代器的迭代结果,确定所述迭代范围内的所述账本数据的目标返回值。
在一些实施例中,将每轮次迭代处理得到的第一迭代结果的数据标识、第二迭代结果的数据标识和第三迭代结果的数据标识进行比较,得到数据标识的序号最小的迭代结果;将数据标识的序号最小的迭代结果作为每轮次迭代处理的目标返回值,并清空目标返回值对应所在的存储单元。
示例性的,在账本数据迭代器对应的当前迭代轮次的迭代结果包括:第一存储单元的第一迭代结果为b=201,第二存储单元的第二迭代结果为a=200,第三存储单元的第三迭代结果为c=300,则基于各个迭代结果的键的序号,将序号最小(或排在最前)的账本数据作为迭代过程最终返回的目标返回值,例如将a=200作为目标返回值,相应地,第二迭代结果的存储单元作为目标存储单元,并将返回最终迭代的目标返回值后,清空目标存储单元的值,完成本轮次的迭代;继续下一轮次的迭代,直到第一迭代结果、第二迭代结果、第三迭代结果均为空,且交易修改的数据、区块修改的数据以及持久化账本数据分别对应在迭代范围的账本数据均迭代完,结束迭代。
需要说明的是,当存在多个迭代器时,基于不同版本的迭代器对应迭代得到的结果不同。第一迭代结果、第二迭代结果和第三迭代结果可以存储在内存中的临时存储单元,并基于最终迭代结果的返回,清空相应的存储单元。
下面结合图4和表1,对账本数据迭代器的迭代流程进行举例说明。
表1
如表1所示,假设某笔合约交易n执行时账本的数据如下所示。数据写入和迭代器创建的流程如下:
当前区块前n-1笔交易写入了a=101,b=200,删除了e;
开始执行当前交易,初始化的交易的版本快照为0;
写入b=201,对应到交易修改的写入为b_0=201;
创建迭代器1,迭代范围为[a,g],其迭代器版本号为0;创建成功后交易的版本快照为1;
创建迭代器2,迭代范围为[a,g],其迭代器版本号为1;创建成功后交易的版本快照为2;
写入a=102,对应到交易修改的写入为a_2=102。
如图4所示,通过账本数据迭代器进行迭代处理的过程,分别基于内存中第一迭代结果、第二迭代结果和第三迭代结果的状态,针对交易修改的数据、区块修改的数据以及持久化数据分别进行多轮次的迭代处理,并在每一轮次的迭代处理后,将得到的第一迭代结果、第二迭代结果和第三迭代结果,进行比较,返回比较结果中键的序号最小或者排序最靠前的最终的目标返回值,作为当前迭代轮次的迭代结果;然后继续执行下一轮次的迭代,直到迭代范围内的账本数据全部迭代完,结束迭代。
基于上述实现流程,结合表1,针对迭代器1的迭代流程可以为:
第一次迭代:
1、第一迭代结果为空,迭代交易修改数据迭代器;
(a)迭代a_2,由于a_2的版本2大于迭代器版本号0。a_2对于迭代器1来说是不可见的。
(b)迭代b_0, 由于b_0的版本0小于等于迭代器版本号0。b_0对于迭代器1来说是可见的。b_0是原始Key为b所有存储单元中,对于迭代器1可见的存储单元中最大版本的数据标识,因此b_0就是目标存储单元的数据标识。赋值给第一迭代结果b_0。
2、第二迭代结果为空,迭代区块修改数据迭代器;
(a)迭代a,检查a是否存对于交易修改数据迭代器可见,由于a_2对于迭代器1的交易修改数据迭代器来说是不可见的。因此,将给第二迭代结果a=101赋值给第二迭代结果。
3、第三迭代结果为空,迭代磁盘迭代器;
(a)迭代a,由于a存在于区块修改的数据中,即区块修改数据中的a是比持久化账本数据a更新的数据,跳过a。
(b)迭代c,c不存在与区块修改的数据,也不存在于交易修改数据迭代器的范围。将c赋值给第三迭代结果c。
4、比较三个迭代结果的Key,第二迭代结果最小。因此第一次迭代的数据为(a,101)。将第二迭代结果置为空。
第二次迭代:
1、第一迭代结果b_0非空,跳过。
2、第二迭代结果为空,迭代区块修改数据迭代器;
(a)迭代b,b存在于交易修改的数据,即交易修改数据中的b是区块修改的数据b更新的数据,跳过b。
(b)迭代e,检查e是否存对于交易修改数据迭代器可见,由于e不存在与迭代器1的交易修改数据迭代器。因此进一步判断e是否是删除,由于e带有删除标志,迭代下一个存储单元。
(c)已经迭代完所有数据,结束。
3、第三迭代结果c非空,跳过。
4、比较三个迭代结果的Key,第一迭代结果最小。因此第二次迭代的数据为(b,201)。将第一迭代结果置为空。
第三次迭代:
1、第一迭代结果为空,迭代交易修改数据迭代器;发现已经迭代完所有数据,结束。
2、第二迭代结果为空,迭代区块修改数据迭代器;发现已经迭代完所有数据,结束。
3、第三迭代结果c非空,跳过。
4、比较三个迭代结果的Key,第三迭代结果最小。因此第二次迭代的数据为(c,300)。将第三迭代结果置为空。
第四次迭代:
1、第一迭代结果为空,迭代交易修改数据迭代器;发现已经迭代完所有数据,结束。
2、第二迭代结果为空,迭代区块修改数据迭代器;发现已经迭代完所有数据,结束。
3、第三迭代结果为空,迭代磁盘迭代器:
(a)迭代e,发现e存在于区块修改数据中,跳过。
(b)迭代z,发现z超出迭代范围,结束。
4、发现三个迭代结果都为空,返回迭代结束标识。
本申请实施例使用有序数据结构和多版本管理来维护交易修改的数据,使用有序数据结构来维护区块修改的数据,以及通过三个子迭代器来实现账本数据迭代器;迭代器创建和迭代效率高,不存在内存拷贝和排序开销;同时迭代器创建和迭代开销可控,开销与区块修改的数据的数据量无关,能够被工作量度量机制控制。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的区块链账本数据迭代方法,图5示出了本申请实施例提供的区块链账本数据迭代装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图5,该装置包括:
获取单元51,用于获取智能合约请求的迭代范围的账本数据,所述迭代范围的账本数据包括内存中以有序数据结构存储的交易修改的数据和区块修改的数据;
创建单元52,用于基于所述迭代范围,创建与所述交易修改的数据对应的第一迭代器,以及与所述区块修改的数据对应的第二迭代器;
迭代单元53,用于在所述迭代范围内,基于所述第一迭代器对所述交易修改的数据进行迭代处理,基于所述第二迭代器对所述区块修改的数据进行迭代处理;
输出单元54,用于基于所述第一迭代器的迭代结果和所述第二迭代器的迭代结果,确定所述迭代范围内的所述账本数据的目标返回值。
在一种可能的实现方式中,所述账本数据还包括磁盘中存储的持久化账本数据;创建单元52,还用于基于所述迭代范围,创建与所述持久化账本数据对应的第三迭代器;迭代单元53,还用于在所述迭代范围内,基于所述第三迭代器对所述持久化账本数据进行迭代处理。
在一种可能的实现方式中,该装置还包括写入单元,用于基于所述有序数据结构,确定所述交易修改的数据对应的第一存储架构中的存储单元;基于所述第一存储架构的存储单元以及所述第一迭代器的个数,确定待写入的交易修改的数据的最新版本号;将带有所述最新版本号的交易修改的数据写入所述第一存储架构的存储单元,得到以有序数据结构存储的交易修改的数据。
在一种可能的实现方式中,写入单元,还用于基于所述有序数据结构,确定所述区块修改的数据对应的第二存储架构的存储单元;将原始版本的区块修改的数据写入所述第二存储架构的存储单元,得到以有序数据结构存储的区块修改的数据。
在一种可能的实现方式中,迭代单元53,还用于获取当前存储单元,所述当前存储单元为所述第一存储架构中的任一个位于所述迭代范围内的存储单元;若所述当前存储单元不为空,且所述当前存储单元的交易修改的数据的版本号小于或等于所述第一迭代器的版本号,且所述当前存储单元无删除标识,则将所述当前存储单元的交易修改的数据作为所述第一迭代器的迭代结果;若所述当前存储单元不为空,且所述当前存储单元的交易修改的数据对应的原始数据标识与记录的起始数据标识相同,则基于所述有序数据结构获取所述第一存储架构中的下一个存储单元;若所述当前存储单元不为空,且所述当前存储单元的交易修改的数据的版本号大于所述第一迭代器的版本号或者所述当前存储单元的交易修改的数据带有所述删除标识,则重新记录交易修改的数据对应的起始数据标识,并基于所述有序数据结构获取所述第一存储架构中的下一个存储单元;若所述当前存储单元为空或为所述迭代范围对应的末尾存储单元,则返回迭代结束标识。
在一种可能的实现方式中,迭代单元53,还用于获取当前存储单元,所述当前存储单元为所述第二存储架构中的任一个位于所述迭代范围内的存储单元;若所述当前存储单元不为空,且所述当前存储单元的区块修改的数据无删除标识,则将所述当前存储单元的区块修改的数据作为所述第二迭代器的迭代结果;若所述当前存储单元不为空,且所述当前存储单元的区块修改的数据带有删除标识,则基于所述有序数据结构获取所述第二存储架构中的下一个存储单元;若所述当前存储单元为空或为所述迭代范围对应的末尾存储单元,则返回迭代结束标识。
在一种可能的实现方式中,输出单元54,还用于基于所述第一迭代器的迭代结果、所述第二迭代器的迭代结果和所述第三迭代器的迭代结果,确定所述迭代范围内的所述账本数据的目标返回值。
在一种可能的实现方式中,迭代单元53,还用于获取第一迭代结果,所述第一迭代结果为所述第一迭代器针对所述交易修改的数据的迭代结果;若所述第一迭代结果不为空,则确定所述第一迭代结果为所述第一迭代器上一次迭代的迭代结果,返回所述第一迭代结果;若所述第一迭代结果为空,则基于所述第一迭代器对所述交易修改的数据进行迭代处理,得到新的第一迭代结果并返回;获取第二迭代结果,所述第二迭代结果为所述第二迭代器针对所述区块修改的数据的迭代结果;若所述第二迭代结果不为空,则确定所述第二迭代结果为所述第二迭代器上一次迭代的迭代结果,返回所述第二迭代结果;若所述第二迭代结果为空,则基于所述第二迭代器对所述区块修改的数据进行迭代处理,得到新的第二迭代结果并返回;若所述第二迭代器对应的新的迭代结果的数据标识不在所述第一迭代器的迭代结果内,则返回所述第二迭代器对应的新的第二迭代结果;若第二迭代器对应的新的第二迭代结果的数据标识在所述第一迭代器的迭代结果内,则跳过;获取第三迭代结果,所述第三迭代结果为所述第三迭代器针对持久化账本数据的迭代结果;若所述第三迭代结果不为空,则确定所述第三迭代结果为所述第三迭代器上一次迭代的迭代结果,返回所述第三迭代结果;若所述第三迭代结果为空,则基于所述第三迭代器对所述持久化账本数据进行迭代处理,得到新的第三迭代结果;若所述第三迭代器对应的新的第三迭代结果的数据标识不在所述第一迭代器的迭代结果和所述第二迭代器的迭代结果内,则将所述第三迭代器对应的新的第三迭代结果返回;若所述第三迭代器对应的新的第三迭代结果的数据标识在所述第一迭代器的迭代结果或所述第二迭代器的迭代结果内,则跳过。
在一种可能的实现方式中,输出单元54,还用于将每轮次迭代处理得到的第一迭代结果的数据标识、第二迭代结果的数据标识和第三迭代结果的数据标识进行比较,得到数据标识的序号最小的迭代结果;将数据标识的序号最小的迭代结果作为每轮次迭代处理的所述目标返回值,并清空所述目标返回值对应所在的存储单元。
在一种可能的实现方式中,写入单元,还用于更新待写入所述第一存储架构的交易修改的数据的最新版本号;更新后的最新版本号用于指示所述第一迭代器创建完成之后写入所述第一存储架构的交易修改的数据的版本。
通过本申请实施例,使用有序数据结构和多版本管理来维护交易修改的数据,使用有序数据结构来维护区块修改的数据,以及通过三个子迭代器来实现账本数据迭代器;迭代器创建和迭代效率高,不存在内存拷贝和排序开销;同时迭代器创建和迭代开销可控,开销与区块修改的数据的数据量无关,能够被工作量度量机制控制。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
图6为本申请一实施例提供的电子设备6的结构示意图。如图6所示,该实施例的电子设备6包括:至少一个处理器60(图6中仅示出一个)、存储器61以及存储在所述存储器61中并可在所述至少一个处理器60上运行的计算机程序62,所述处理器60执行所述计算机程序62时实现上述实施例中的步骤。
所述电子设备6可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该电子设备6可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是电子设备6的举例,并不构成对电子设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器60可以是中央处理单元(Central Processing Unit,CPU),该处理器60还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路 (Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61在一些实施例中可以是所述电子设备6的内部存储单元,例如电子设备6的硬盘或内存。所述存储器61在另一些实施例中也可以是所述电子设备6的外部存储设备,例如所述电子设备6上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述电子设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (12)

1.一种区块链账本数据迭代方法,其特征在于,所述方法包括:
获取智能合约请求的迭代范围的账本数据,所述迭代范围的账本数据包括内存中以有序数据结构存储的交易修改的数据和区块修改的数据;
基于所述迭代范围,创建与所述交易修改的数据对应的第一迭代器,以及与所述区块修改的数据对应的第二迭代器;
在所述迭代范围内,基于所述第一迭代器对所述交易修改的数据进行迭代处理,基于所述第二迭代器对所述区块修改的数据进行迭代处理;
基于所述第一迭代器的迭代结果和所述第二迭代器的迭代结果,确定所述迭代范围内的所述账本数据的目标返回值;
所述账本数据还包括持久化账本数据,该方法还包括:基于所述迭代范围,创建与所述持久化账本数据对应的第三迭代器,将所述第一迭代器、所述第二迭代器和所述第三迭代器组合成账本数据迭代器。
2.如权利要求1所述的方法,其特征在于,所述账本数据还包括磁盘中存储的持久化账本数据;在所述获取智能合约请求的迭代范围的账本数据之后,所述方法还包括:
在所述迭代范围内,基于所述第三迭代器对所述持久化账本数据进行迭代处理。
3.如权利要求1所述的方法,其特征在于,在所述获取智能合约请求的迭代范围的账本数据之前,所述方法还包括:
基于所述有序数据结构,确定所述交易修改的数据对应的第一存储架构中的存储单元;
基于所述第一存储架构的存储单元以及所述第一迭代器的个数,确定待写入的交易修改的数据的最新版本号;
将带有所述最新版本号的交易修改的数据写入所述第一存储架构的存储单元,得到以有序数据结构存储的交易修改的数据。
4.如权利要求1所述的方法,其特征在于,在所述获取智能合约请求的迭代范围的账本数据之前,所述方法还包括:
基于所述有序数据结构,确定所述区块修改的数据对应的第二存储架构的存储单元;
将原始版本的区块修改的数据写入所述第二存储架构的存储单元,得到以有序数据结构存储的区块修改的数据。
5.如权利要求3所述的方法,其特征在于,所述在所述迭代范围内,基于所述第一迭代器对所述交易修改的数据进行迭代处理,包括:
获取当前存储单元,所述当前存储单元为所述第一存储架构中的任一个位于所述迭代范围内的存储单元;
若所述当前存储单元不为空,且所述当前存储单元的交易修改的数据的版本号小于或等于所述第一迭代器的版本号,且所述当前存储单元无删除标识,则将所述当前存储单元的交易修改的数据作为所述第一迭代器的迭代结果;
若所述当前存储单元不为空,且所述当前存储单元的交易修改的数据对应的原始数据标识与记录的起始数据标识相同,则基于所述有序数据结构获取所述第一存储架构中的下一个存储单元;
若所述当前存储单元不为空,且所述当前存储单元的交易修改的数据的版本号大于所述第一迭代器的版本号或者所述当前存储单元的交易修改的数据带有所述删除标识,则重新记录交易修改的数据对应的起始数据标识,并基于所述有序数据结构获取所述第一存储架构中的下一个存储单元;
若所述当前存储单元为空或为所述迭代范围对应的末尾存储单元,则返回迭代结束标识。
6.如权利要求4所述的方法,其特征在于,所述在所述迭代范围内,基于所述第二迭代器对所述区块修改的数据进行迭代处理,包括:
获取当前存储单元,所述当前存储单元为所述第二存储架构中的任一个位于所述迭代范围内的存储单元;
若所述当前存储单元不为空,且所述当前存储单元的区块修改的数据无删除标识,则将所述当前存储单元的区块修改的数据作为所述第二迭代器的迭代结果;
若所述当前存储单元不为空,且所述当前存储单元的区块修改的数据带有删除标识,则基于所述有序数据结构获取所述第二存储架构中的下一个存储单元;
若所述当前存储单元为空或为所述迭代范围对应的末尾存储单元,则返回迭代结束标识。
7.如权利要求2所述的方法,其特征在于,在所述基于所述第三迭代器对所述持久化账本数据进行迭代处理之后,所述方法还包括:
基于所述第一迭代器的迭代结果、所述第二迭代器的迭代结果和所述第三迭代器的迭代结果,确定所述迭代范围内的所述账本数据的目标返回值。
8.如权利要求7所述的方法,其特征在于,在基于所述迭代范围创建所述第一迭代器、所述第二迭代器和所述第三迭代器之后,所述方法还包括:
获取第一迭代结果,所述第一迭代结果为所述第一迭代器针对所述交易修改的数据的迭代结果;
若所述第一迭代结果不为空,则确定所述第一迭代结果为所述第一迭代器上一次迭代的迭代结果,返回所述第一迭代结果;
若所述第一迭代结果为空,则基于所述第一迭代器对所述交易修改的数据进行迭代处理,得到新的第一迭代结果并返回;
获取第二迭代结果,所述第二迭代结果为所述第二迭代器针对所述区块修改的数据的迭代结果;
若所述第二迭代结果不为空,则确定所述第二迭代结果为所述第二迭代器上一次迭代的迭代结果,返回所述第二迭代结果;
若所述第二迭代结果为空,则基于所述第二迭代器对所述区块修改的数据进行迭代处理,得到新的第二迭代结果并返回;
若所述第二迭代器对应的新的迭代结果的数据标识不在所述第一迭代器的迭代结果内,则返回所述第二迭代器对应的新的第二迭代结果;若第二迭代器对应的新的第二迭代结果的数据标识在所述第一迭代器的迭代结果内,则跳过;
获取第三迭代结果,所述第三迭代结果为所述第三迭代器针对持久化账本数据的迭代结果;
若所述第三迭代结果不为空,则确定所述第三迭代结果为所述第三迭代器上一次迭代的迭代结果,返回所述第三迭代结果;
若所述第三迭代结果为空,则基于所述第三迭代器对所述持久化账本数据进行迭代处理,得到新的第三迭代结果;
若所述第三迭代器对应的新的第三迭代结果的数据标识不在所述第一迭代器的迭代结果和所述第二迭代器的迭代结果内,则将所述第三迭代器对应的新的第三迭代结果返回;若所述第三迭代器对应的新的第三迭代结果的数据标识在所述第一迭代器的迭代结果或所述第二迭代器的迭代结果内,则跳过。
9.如权利要求8所述的方法,其特征在于,所述基于所述第一迭代器的迭代结果、所述第二迭代器的迭代结果和所述第三迭代器的迭代结果,确定所述迭代范围内的所述账本数据的目标返回值,包括:
将每轮次迭代处理得到的第一迭代结果的数据标识、第二迭代结果的数据标识和第三迭代结果的数据标识进行比较,得到数据标识的序号最小的迭代结果;
将数据标识的序号最小的迭代结果作为每轮次迭代处理的所述目标返回值,并清空所述目标返回值对应所在的存储单元。
10.如权利要求3所述的方法,其特征在于,在所述创建与所述交易修改的数据对应的第一迭代器之后,所述方法还包括:
更新待写入所述第一存储架构的交易修改的数据的最新版本号;更新后的最新版本号用于指示所述第一迭代器创建完成之后写入所述第一存储架构的交易修改的数据的版本。
11.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至10任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行实现如权利要求1至10任一项所述的方法。
CN202310936678.XA 2023-07-28 2023-07-28 区块链账本数据迭代方法、电子设备及可读存储介质 Active CN116664129B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310936678.XA CN116664129B (zh) 2023-07-28 2023-07-28 区块链账本数据迭代方法、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310936678.XA CN116664129B (zh) 2023-07-28 2023-07-28 区块链账本数据迭代方法、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN116664129A CN116664129A (zh) 2023-08-29
CN116664129B true CN116664129B (zh) 2023-11-10

Family

ID=87710044

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310936678.XA Active CN116664129B (zh) 2023-07-28 2023-07-28 区块链账本数据迭代方法、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN116664129B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109766722A (zh) * 2019-01-22 2019-05-17 苏州同济区块链研究院有限公司 一种区块链中构建智能合约的方法及其系统
CN110245190A (zh) * 2019-06-11 2019-09-17 南京荣链科技有限公司 一种区块数据分段存储方法、终端及介质
CN110428056A (zh) * 2018-04-30 2019-11-08 慧与发展有限责任合伙企业 使用区块链的分散式机器学习的系统和方法
CN111932215A (zh) * 2020-09-18 2020-11-13 杭州趣链科技有限公司 一种智能合约版本的管理方法、设备及可读存储介质
CN112035144A (zh) * 2020-09-01 2020-12-04 平安付科技服务有限公司 区块链系统的升级方法、装置、计算机设备及存储介质
WO2021093461A1 (zh) * 2019-11-11 2021-05-20 蚂蚁区块链科技(上海)有限公司 一种块链式账本中的聚合计算方法、装置及设备
CN113268546A (zh) * 2021-06-15 2021-08-17 中国电子科技网络信息安全有限公司 一种区块链账本数据抓取解析方法
CN113721963A (zh) * 2021-09-15 2021-11-30 上海卓繁信息技术股份有限公司 一种区块链自动化升级的方法、装置及电子设备
WO2022248849A1 (en) * 2021-05-24 2022-12-01 WRT Technologies Limited Blockchain, method for transmitting information between nodes of the blockchain, and methods for configuring and quering the blockchain
CN116155934A (zh) * 2022-12-05 2023-05-23 杭州趣链科技有限公司 智能合约调用账本的方法、装置、电子设备和存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170124464A1 (en) * 2015-10-28 2017-05-04 Fractal Industries, Inc. Rapid predictive analysis of very large data sets using the distributed computational graph
US10535411B2 (en) * 2017-05-26 2020-01-14 Western Digital Technologies, Inc. System and method for string-based erase verify to create partial good blocks
US10904009B2 (en) * 2018-05-30 2021-01-26 International Business Machines Corporation Blockchain implementing delta storage
FR3088740B1 (fr) * 2018-11-16 2021-09-17 Amadeus Sas Traitement de donnees iteratif
US10922309B2 (en) * 2018-11-19 2021-02-16 Dragonchain, Inc. Distributed ledger interaction system and methods
US11457066B2 (en) * 2019-06-12 2022-09-27 International Business Machines Corporation Splitting and merging of storages
US11671263B2 (en) * 2019-08-30 2023-06-06 T-Mobile Usa, Inc. Cryptographically securing data files in a collaborative environment

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110428056A (zh) * 2018-04-30 2019-11-08 慧与发展有限责任合伙企业 使用区块链的分散式机器学习的系统和方法
CN109766722A (zh) * 2019-01-22 2019-05-17 苏州同济区块链研究院有限公司 一种区块链中构建智能合约的方法及其系统
CN110245190A (zh) * 2019-06-11 2019-09-17 南京荣链科技有限公司 一种区块数据分段存储方法、终端及介质
WO2021093461A1 (zh) * 2019-11-11 2021-05-20 蚂蚁区块链科技(上海)有限公司 一种块链式账本中的聚合计算方法、装置及设备
CN112035144A (zh) * 2020-09-01 2020-12-04 平安付科技服务有限公司 区块链系统的升级方法、装置、计算机设备及存储介质
CN111932215A (zh) * 2020-09-18 2020-11-13 杭州趣链科技有限公司 一种智能合约版本的管理方法、设备及可读存储介质
WO2022248849A1 (en) * 2021-05-24 2022-12-01 WRT Technologies Limited Blockchain, method for transmitting information between nodes of the blockchain, and methods for configuring and quering the blockchain
CN113268546A (zh) * 2021-06-15 2021-08-17 中国电子科技网络信息安全有限公司 一种区块链账本数据抓取解析方法
CN113721963A (zh) * 2021-09-15 2021-11-30 上海卓繁信息技术股份有限公司 一种区块链自动化升级的方法、装置及电子设备
CN116155934A (zh) * 2022-12-05 2023-05-23 杭州趣链科技有限公司 智能合约调用账本的方法、装置、电子设备和存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Eleanna,et al..Legal smart contracts in Ethereum Block chain: Linking the dots.IEEE International Conference on Data Engineering Workshop.2020,第18-25页. *
Recommending Differentiated Code to Support Smart Contract Update;Huang et al.;IEEE;第260-270页 *
区块链系统中智能合约技术综述;范吉立;计算机科学;第46卷(第11期);第1-10页 *
编排图驱动的区块链业务过程管理框架;俞东进;通信学报;第42卷(第09期);第120-132页 *

Also Published As

Publication number Publication date
CN116664129A (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
US11474972B2 (en) Metadata query method and apparatus
US20220413706A1 (en) Data Storage Method, Apparatus and Storage System
US11080260B2 (en) Concurrent reads and inserts into a data structure without latching or waiting by readers
US10552378B2 (en) Dividing a dataset into sub-datasets having a subset of values of an attribute of the dataset
CN111090663B (zh) 事务并发控制方法、装置、终端设备及介质
CN110018998B (zh) 一种文件管理方法、系统及电子设备和存储介质
CN106980665B (zh) 数据字典实现方法、装置及数据字典管理系统
US20010051954A1 (en) Data updating apparatus that performs quick restoration processing
CN110837584B (zh) 一种分块并行构造后缀数组的方法及系统
WO2021129151A1 (zh) 文件备份方法、装置及终端设备
CN111522502B (zh) 数据去重方法、装置、电子设备及计算机可读存储介质
US20210349866A1 (en) Deduplication-Adapted Casedb For Edge Computing
CN110352410B (zh) 跟踪索引节点的访问模式以及预提取索引节点
CN110780814B (zh) 一种存储数据整理方法与装置
CN111522791A (zh) 一种分布式文件重复数据删除系统及方法
US8719274B1 (en) Method, system, and apparatus for providing generic database services within an extensible firmware interface environment
US20180011897A1 (en) Data processing method having structure of cache index specified to transaction in mobile environment dbms
CN114490060A (zh) 内存分配方法、装置、计算机设备和计算机可读存储介质
CN111488483B (zh) 曲库更新方法、装置、终端和非临时性计算机可读存储介质
CN111143113A (zh) 复制元数据的方法、电子设备和计算机程序产品
CN116664129B (zh) 区块链账本数据迭代方法、电子设备及可读存储介质
EP3343395B1 (en) Data storage method and apparatus for mobile terminal
CN112506651B (zh) 一种大数据量环境中数据运算的方法和设备
CN114385657A (zh) 数据存储方法、装置及存储介质
CN114675995A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20231013

Address after: No. 03, 8th Floor, T1 Office Building, Vanke Future Center, No. 408 Hanyang Avenue, Hanyang District, Wuhan City, Hubei Province, 430000

Applicant after: Wuhan Qulian Digital Technology Co.,Ltd.

Address before: Room 2001, building a, building 2, 399 Danfeng Road, Binjiang District, Hangzhou, Zhejiang 310000

Applicant before: HANGZHOU HYPERCHAIN TECHNOLOGIES Co.,Ltd.

Applicant before: Wuhan Qulian Digital Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant