CN114840545B - 一种支持状态快速更新的区块链细粒度编辑方法 - Google Patents
一种支持状态快速更新的区块链细粒度编辑方法 Download PDFInfo
- Publication number
- CN114840545B CN114840545B CN202210745036.7A CN202210745036A CN114840545B CN 114840545 B CN114840545 B CN 114840545B CN 202210745036 A CN202210745036 A CN 202210745036A CN 114840545 B CN114840545 B CN 114840545B
- Authority
- CN
- China
- Prior art keywords
- transaction
- executed
- block
- execution
- transactions
- 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
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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
-
- 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
-
- 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
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
- 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)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Software Systems (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种支持状态快速更新的区块链细粒度编辑方法,其步骤包括:对于可编辑区块链每一首次执行的交易,根据该交易的执行过程信息生成该交易的快速执行代码并记录该交易执行过程的读集与写集;在区块链编辑权限拥有者编辑区块链上某个历史交易的编辑事件发生后,乐观地并行执行读集元素的状态相较于初次执行时发生改变的交易,并用该交易在首次执行时生成的快速执行代码加速交易的执行。在更新完某区块B中的所有交易后,并行更新区块B及其之前被此次更新影响的所有区块的块头中的状态树、交易树和收据树信息。本发明可以降低可编辑区块链节点进行编辑操作之后,区块链节点更新状态所需的时间和计算资源,提高了可编辑区块链的性能。
Description
技术领域
本发明属于区块链技术领域,涉及区块链交易的执行流程、区块链数据的存储流程与存储结构,具体涉及一种支持状态快速更新的区块链细粒度编辑方法。
背景技术
区块链是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。但传统区块链技术缺乏对上链数据的监管能力,部分不法信息在上传到区块链之后无法被删改,因此,衍生出了可编辑区块链的概念与技术。
对于可编辑区块链,按照数据编辑对象的不同,可以分为区块级、交易级和数据项级编辑操作。区块级编辑技术粒度最大,只可以替换完整的区块而无法精准定位和修改区块中的特定数据;交易级和数据项级编辑技术粒度相对较小,前者重点针对区块中的金融交易数据(例如交易金额和接收方地址等),而后者则侧重于非金融文本数据(例如OP_RETURN类交易附言或其他文本数据)。通常来说,交易级编辑技术将会改变区块链内部的交易逻辑流和价值分配体系,是强上下文相关的编辑操作,因而难度更高。例如,简单的修改一笔交易的金额可能就会凭空“创造”或者“燃烧”一定数量的加密货币、进而导致其后续交易失效。
因此在执行过较细粒度的交易级和数据项级编辑操作,从编辑的交易处开始,需要重新执行之后的交易来进行状态更新,以保证区块链状态的正确性。在区块链节点重新执行交易以更新状态的过程中,区块链全局状态数据的稳定性和正确性无法被保证。因此在状态更新期间,区块链无法进行正常的出块操作,这影响到了可编辑区块链的性能和可用性。
但现有可编辑区块链研究,只涉及对于一个编辑行为达成全网共识的协议,对于实际执行中状态更新行为并没有提出成型的高效策略。
发明内容
为了克服上述现有技术的不足,本发明提供一种支持状态快速更新的区块链细粒度编辑方法,用以在可编辑区块链执行完编辑操作之后,快速且节能地更新区块链节点持有的状态数据,以提高可编辑区块链的性能和可用性。
本发明的原理是:在交易第一遍正常执行的时候,记录每个交易在执行过程中读取过和写入过的智能合约存储变量(storage)的集合(简称读集和写集),并基于实际运行时记录的控制流转换和交易内部的数据依赖关系信息,生成一段可以在控制流和交易内部数据依赖关系发生少量变动的情况下省略大量计算过程直接得出正确计算结果的快速执行代码,以加速交易的二次执行;在在区块链编辑权限拥有者编辑区块链上某个历史交易的编辑事件发生后,乐观地并行执行读集元素的状态相较于初次执行时发生改变的交易,并用该交易在首次执行时生成的快速执行代码加速交易的执行。在更新完某区块B中的所有交易后,并行更新区块B及其之前被此次更新影响的所有区块的块头中的状态树、交易树和收据树信息。
本发明提供的技术方案是:
一种支持状态快速更新的区块链细粒度编辑方法,包括如下步骤:
A.在可编辑区块链正常运行,初次执行某交易的过程中,附加如下两项额外操作:
A1. 生成并记录交易的快速执行代码;
A2. 获取并记录交易的读集与写集,同时记录该交易的所有读集元素指向该交易的逆向索引;
B.在可编辑区块链发生编辑事件之后,执行如下操作:
B1. 将管理员指定的待编辑交易加入待执行元素集合。
B2. 持续监控待执行元素集合,不断从中挑选可编辑区块链上顺序更早的交易并行地重新执行,为被执行的交易生成新的写集,将新的写集打包作为该交易的执行结果加入待写入集合。
B3. 不断从待写入集合挑选链上顺序最早的交易,若待执行元素集合没有更早的交易,则将该交易新生成的写集与该交易原来的写集作对比,识别出变动的写集元素;并利用A2中记录下来的逆向索引,找到本次写集变动影响到的交易,将这些被影响到的交易加入待执行元素集合,若这些交易存在于待执行元素集合,则从待写入集合清除。
B4. 当一个被本次编辑操作影响到的区块需要重新执行的交易都重新执行完毕之后,重新计算区块头中的发生改变的元数据(如状态树根、交易树根、收据树根、随机数nonce)
B5. 重复执行B2、B3、B4直到待执行集合与待写入集合都为空,更新顺序晚于B4更新的最后一个区块之后的所有区块的元数据。完成此步骤后可编辑区块链状态更新到了最新。
与现有技术相比,本发明的有益效果是:
利用本发明提供的技术方案,可以降低可编辑区块链节点进行编辑操作之后,区块链节点更新状态所需的时间和计算资源,提高了可编辑区块链的性能和可用性。
附图说明
图1为交易初次执行流程。
图2为编辑行为发生后交易二次执行流程。
图3为编辑行为发生后区块元数据更新流程图。
具体实施方式
下面结合附图对本发明进行进一步详细描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
A.在可编辑区块链正常执行时,以执行到交易Txi的时候为例,除区块链正常操作之外,执行如下额外操作(如图1所示):
A1. 在执行交易Txi过程中,记录交易执行的重要中间状态,重要条件判断,并依赖条件判断与触发条件判断时的上下文生成可以跳过部分代码执行过程,直接获得结果的捷径。并将这些快速执行信息记录下来,整合成可快速执行,且可应对部分变化的快速执行代码Fi。以便后续发生编辑事件后,第二次执行交易Txi时,可依赖该信息快速获得交易Txi的执行结果。关于快速执行代码的生成方法可以参考Chen Y, Guo Z, Li R, et al.Forerunner: Constraint-based Speculative Transaction Execution for Ethereum[C]//Proceedings of the ACM SIGOPS 28th Symposium on Operating SystemsPrinciples. 2021: 570-587.的内容。
A2. 在执行完交易Txi之后,记录交易Txi所有用到的存储变量(storage)及其版本,记为读集Ri,记录交易Txi所有写入与更改的存储变量(storage)及其版本,记为写集Wi={<C1,S1,B1,T1>,<C2,S2,B2,T2>,…,<Cn,Sn,Bn,Tn>}(该表示意涵:C:这个变量为哪个合约的状态;S:这个变量为合约中哪个状态;B:区块标识,这个变量被使用的版本在哪个区块中确立;T:交易标识,这个变量被使用的版本由哪个交易确立。总和<Cj,Sj,Bj,Tj>即代表具体合约Cj中的具体状态Sj的一个具体版本,为写集中的一个元素,j取值为1~n,n为执行完交易Txi所更改的存储变量的总个数;读集中的元素也是这样的标识方法)。记录交易Txi的读集与写集之后,构造并记录从每个读集元素指向交易Txi的逆向索引。
B.在区块链发生编辑事件之后,二次执行某交易时,执行如下操作:
B1. (如图2)假设这次编辑要编辑的交易集合为P={Tx1, Tx2,…, Txn,},则这一步的工作为把集合P中所有交易加入到一个依据交易先后顺序排序的最小堆He中,这个堆He为待执行堆,充当待执行元素集合的职能,且具有快速获得最早交易的能力。
B2. (如图2)不断从He顶部取元素(最小堆顶的元素即为最早的交易)开启新的线程利用快速执行代码执行所取出的元素,此过程为乐观的并行过程。以交易Txm的执行为例,在交易Txm执行完成之后,获取其新的写集W’m。将W’m与本次执行Txm所产生的上下文信息打包写入待写入堆Hw,该堆同样是一个据交易先后顺序排序的最小堆。
B3. (如图2)不断从待写入堆Hw选链上顺序最早的交易,假设其为Txt,若待执行堆He中有比Txt更早的交易,则等待待写入堆Hw更新之后,重新挑选元素;若He中没有更早的元素,则进行如下操作:重新执行交易Txt,将其通过二次执行记录下来的写集信息W’t与其之前的写集Wt做对比,找到本次写集的变动WCt=(W’t⋃Wt)-(W’t⋂Wt)。之后利用A2中记录的逆向索引信息,找到所有读集元素被改变的交易的集合PIt={Tx’1, Tx’2,…, Tx’n,},把所有PIt中交易加入到待执行堆He中。若待执行堆Hw中存在PIt中的元素,则将其从Hw中清除。
B4. (如图3)设已更新过区块头元信息的最高区块为B’,若没有任何区块头被更新过,则B’取本次区块链编辑事件要编辑的最早交易所属于的区块Bs的前一个区块,即(Bs-1)。当写入一个交易TxB时,若交易TxB是区块B被更改的第一个交易,则并行地重新计算B’到B之间的所有区块的块头元数据。
B5. (如图2、图3)重复执行B2、B3、B4直到待执行堆He与待写入堆Hw都为空,假设现在更新过的最后一个区块为B’,最新区块为BN,则更新B’之后的所有区块头的元数据,即从(B’+1)一直更新到BN。完成此步骤之后,可编辑区块链状态更新到了最新。
尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (7)
1.一种支持状态快速更新的区块链细粒度编辑方法,其步骤包括:
1)对于可编辑区块链每一首次执行的交易,根据该交易的执行过程信息生成该交易的快速执行代码;记录该交易执行过程的读集与写集,并生成该交易的所有读集元素指向该交易的逆向索引;
2)在可编辑区块链发生编辑事件之后,执行如下操作:
21)选取各待编辑交易并将其加入待执行元素集合P;
22)从待执行元素集合P中挑选出可编辑区块链上顺序最早的交易并将其从待执行元素集合P中删除;根据该交易的快速执行代码并行地重新执行该交易并根据重新执行的交易生成新的写集,将该新的写集打包作为该交易的执行结果加入待写入集合Q;
23)从待写入集合Q中挑选出可编辑区块链上顺序最早的交易Txt,若待执行元素集合P中当前有比交易Txt更早的交易,则重复步骤22)~23);否则执行步骤24);
24)根据该交易Txt的快速执行代码并行的重新执行交易Txt,并根据重新执行交易Txt所生成新的写集W’t与该Txt首次执行所生成的写集Wt进行对比,找到写集的变动WCt;然后利用交易Txt的逆向索引找到写集变动WCt影响到的交易集合PIt,将交易集合PIt中的交易加入到待执行元素集合P,并对待写入元素集合Q进行去重处理;
25)当一区块所涉及的需要重新执行的交易全部重新执行完毕之后,重新计算该区块头中的发生改变的元数据;
26)重复执行22)~25)直到待执行元素集合P与待写入集合Q均为空;更新顺序晚于最后一次执行步骤25)所更新区块之后的所有区块的元数据。
2.根据权利要求1所述的方法,其特征在于,对于交易Txi,首次执行完交易Txi之后,记录交易Txi所有用到的存储变量及其版本,作为交易Txi的读集Ri;记录交易Txi所有写入与更改的存储变量及其版本,作为交易Txi的写集Wi。
3.根据权利要求2所述的方法,其特征在于,所述写集Wi={<C1,S1,B1,T1>,<C2,S2,B2,T2>,…,<Cn,Sn,Bn,Tn>};其中,Cn表示执行交易Txi所更改的第n个存储变量所属合约,Sn为第n个存储变量在合约Cn的状态,Bn为合约Cn所属的区块,Tn为交易Txi在区块Bn中的序号。
4.根据权利要求2所述的方法,其特征在于,所述读集Ri={<C1’,S1’,B1’,T1’>,<C2’,S2’,B2’,T2’>,…,<Cn’,Sn’,Bn’,Tn’>};其中,Cn’表示执行交易Txi所用的第n个存储变量所属合约,Sn’为第n个存储变量在合约Cn’的状态,Bn’为合约Cn’的所属的区块,Tn’为交易Txi在区块Bn’的区块标识。
5.根据权利要求1所述的方法,其特征在于,步骤22)的具体实现方法为:将待执行元素集合P中所有交易加入到一个依据交易先后顺序排序的最小堆He;从He顶部取元素并开启新的线程利用所取元素的快速执行代码执行所取出的元素,据重新执行的所取出元素生成新的写集,将该新的写集打包作为所取出元素的执行结果写入一个据交易先后顺序排序的最小堆Hw;步骤23)中,从Hw顶部取元素为Txt,若He中有比Txt更早的交易,则重复步骤22)~23);否则执行步骤24)。
6.根据权利要求1所述的方法,其特征在于,所述元数据包括状态树根、交易树根、收据树根、随机数nonce。
7.根据权利要求1所述的方法,其特征在于,写集的变动WCt=(W’t⋃Wt)-(W’t⋂Wt)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210745036.7A CN114840545B (zh) | 2022-06-29 | 2022-06-29 | 一种支持状态快速更新的区块链细粒度编辑方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210745036.7A CN114840545B (zh) | 2022-06-29 | 2022-06-29 | 一种支持状态快速更新的区块链细粒度编辑方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114840545A CN114840545A (zh) | 2022-08-02 |
CN114840545B true CN114840545B (zh) | 2022-10-14 |
Family
ID=82574538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210745036.7A Active CN114840545B (zh) | 2022-06-29 | 2022-06-29 | 一种支持状态快速更新的区块链细粒度编辑方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114840545B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111198895A (zh) * | 2020-02-18 | 2020-05-26 | 夏南南 | 一种区块链更新方法 |
CN112541195A (zh) * | 2020-12-21 | 2021-03-23 | 清华大学 | 一种可编辑区块链的构建方法及装置 |
CN113536389A (zh) * | 2021-06-15 | 2021-10-22 | 复旦大学 | 一种细粒度可控的去中心化可编辑区块链构造方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11176101B2 (en) * | 2018-02-05 | 2021-11-16 | Bank Of America Corporation | System and method for decentralized regulation and hierarchical control of blockchain architecture |
-
2022
- 2022-06-29 CN CN202210745036.7A patent/CN114840545B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111198895A (zh) * | 2020-02-18 | 2020-05-26 | 夏南南 | 一种区块链更新方法 |
CN112541195A (zh) * | 2020-12-21 | 2021-03-23 | 清华大学 | 一种可编辑区块链的构建方法及装置 |
CN113536389A (zh) * | 2021-06-15 | 2021-10-22 | 复旦大学 | 一种细粒度可控的去中心化可编辑区块链构造方法和系统 |
Non-Patent Citations (1)
Title |
---|
可修改的区块链方案;任艳丽 等;《软件学报》;20201231;第31卷(第12期);第3909-3922页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114840545A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8667029B2 (en) | Optimized startup verification of file system integrity | |
US7873683B2 (en) | File system having transaction record coalescing | |
CA2549917C (en) | File system storing transaction records in a storage media | |
US7809777B2 (en) | File system having deferred verification of data integrity | |
EP2199935A2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
US20070250517A1 (en) | Method and Apparatus for Autonomically Maintaining Latent Auxiliary Database Structures for Use in Executing Database Queries | |
CN103412803A (zh) | 数据恢复的方法及装置 | |
EP3961431B1 (en) | Method and apparatus for grouping transactions that need to be serially executed based on a sequence of transactions in one block of a blockchain | |
CN110597821B (zh) | 数据仓库表结构变更方法及装置 | |
CN113253932B (zh) | 一种分布式存储系统的读写控制方法和系统 | |
CN114840545B (zh) | 一种支持状态快速更新的区块链细粒度编辑方法 | |
CN102495838B (zh) | 数据处理方法及装置 | |
CN115086757B (zh) | 一种历史剪辑操作的回撤方法、装置、设备及存储介质 | |
CN111752909A (zh) | 一种多版本文件的操作方法、系统及装置 | |
CN101398774B (zh) | 逻辑卷管理器的数据备份方法 | |
CN111488496A (zh) | 一种基于滑动窗口的Tango树构建方法及系统 | |
CN113495679B (zh) | 基于非易失存储介质的大数据存储访问与处理的优化方法 | |
US20220245123A1 (en) | Fast Skip List Purge | |
CN113821485B (zh) | 一种数据变更方法、装置、设备及计算机可读存储介质 | |
EP3989074A1 (en) | Method for optimizing execution of high-performance computing workflows | |
CN114490879A (zh) | 一种分布式数据库的并发导出数据的方法及系统 | |
US20110153929A1 (en) | Disk memory utilization management using available slot clusters | |
CN115543935A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |