(19)国家知识产权局
(12)发明 专利
(10)授权公告 号
(45)授权公告日
(21)申请 号 202210745036.7
(22)申请日 2022.06.29
(65)同一申请的已公布的文献号
申请公布号 CN 114840545 A
(43)申请公布日 2022.08.02
(73)专利权人 北京大学
地址 100871 北京市海淀区颐和园路5号北
京大学
专利权人 博雅正链 (北京) 科技有限公司
(72)发明人 关志 陈钟 王珂 杨璧鸿
李青山
(74)专利代理 机构 北京君尚知识产权代理有限
公司 11200
专利代理师 司立彬(51)Int.Cl.
G06F 16/23(2019.01)
G06F 16/22(2019.01)
G06F 16/27(2019.01)
G06Q 40/04(2012.01)
(56)对比文件
CN 113536389 A,2021.10.2 2
CN 112541195 A,2021.0 3.23
CN 111198895 A,2020.0 5.26
US 2019244306 A1,2019.08.08
任艳丽 等.可修改的区块链方案. 《软件学
报》 .2020,第31卷(第12期),第3909- 3922页.
审查员 陈雅萍
(54)发明名称
一种支持状态快速更新的区块链细粒度编
辑方法
(57)摘要
本发明公开了一种支持状态快速更新的区
块链细粒度编辑方法, 其步骤包括: 对于可编辑
区块链每一首次执行的交易, 根据该交易的执行
过程信息生成该交易的快速执行代码并记录该
交易执行过程的读集与写集; 在区块链编辑权限
拥有者编辑区块链上某个历史交易的编辑事件
发生后, 乐观 地并行执行读集元素的状态相较于
初次执行时发生改变的交易, 并用该交易在首次
执行时生 成的快速执行代码加速交易的执行。 在
更新完某区块B中的所有交易后, 并行更新区块B
及其之前被此次更新影响的所有区块的块头中
的状态树、 交易树和收据树信息。 本发明可以降
低可编辑区块链节点进行编辑操作之后, 区块链
节点更新状态所需的时间和计算 资源, 提高了可
编辑区块链的性能。
权利要求书1页 说明书3页 附图3页
CN 114840545 B
2022.10.14
CN 114840545 B
1.一种支持状态快速更新的区块链细粒度编辑方法, 其 步骤包括:
1) 对于可编辑区块链每一首次执行的交易, 根据 该交易的执行过程信息生成该交易的
快速执行代码; 记录该交易执行过程的读集与写集, 并生成该交易的所有读集元素指向该
交易的逆向索引;
2) 在可编辑区块链发生编辑事 件之后, 执 行如下操作:
21) 选取各待编辑交易并将其加入待执 行元素集合P;
22) 从待执行元素集合P中挑选出可编辑区块链上顺序最早的交易并将其从待执行元
素集合P中删除; 根据该交易的快速执行代码并行地重新执行该交易并根据重新执行 的交
易生成新的写集, 将该新的写集打包作为该交易的执 行结果加入待 写入集合Q;
23) 从待写入集合Q中挑选出可编辑区块链上顺序最早的交易Txt, 若待执行元素集合P
中当前有比交易Txt更早的交易, 则重复步骤2 2)~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所述的方法, 其特征在于, 所述元数据包括状态树根、 交易树根、 收据
树根、 随机数n once。
7.根据权利要求1所述的方法, 其特 征在于, 写集的变动WCt=(W’t⋃Wt)‑(W’t⋂Wt)。权 利 要 求 书 1/1 页
2
CN 114840545 B
2一种支持状态快速更新的区块链细粒度编辑方 法
技术领域
[0001]本发明属于区块链技术领域, 涉及 区块链交易的执行流程、 区块链数据的存储流
程与存储结构, 具体涉及一种支持状态快速更新的区块链细粒度编辑方法。
背景技术
[0002]区块链是一个共享数据库, 存储于其中的数据或信息, 具有 “不可伪造 ” “全程留
痕” “可以追溯 ” “公开透明 ” “集体维护 ”等特征。 但传统区块链技术缺乏对上链数据的监管
能力, 部分不法信息在上传到区块链之后无法被删改, 因此, 衍生出了可编辑区块链的概念
与技术。
[0003]对于可编辑区块链, 按照数据编辑对象的不同, 可以分为区块级、 交易级和数据项
级编辑操作。 区块级编辑技术粒度最大, 只可以替换完整的区块而无法精准定位和 修改区
块中的特定数据; 交易级和数据项级编辑技术粒度相对较小, 前者重点针对区块中的金融
交易数据 (例如交易金额和接收方地址等), 而后者则侧重于非金融文本数据 (例如OP_
RETURN类交易附言或其他文本数据) 。 通常来说, 交易级编辑技术将会改变区块链内部的交
易逻辑流和价值分配体系, 是强上下文相关的编辑操作, 因而难度更高。 例如, 简单的修改
一笔交易的金额可能就会凭空 “创造”或者“燃烧”一定数量的加密货币、 进而导致其后续交
易失效。
[0004]因此在执行过较细粒度的交易级和数据项级编辑操作, 从编辑的交易处开始, 需
要重新执行之后的交易来进行状态更新, 以保证区块链状态的正确 性。 在区块链节点重新
执行交易以更新状态的过程中, 区块链全局状态数据的稳定性和 正确性无法被保证。 因此
在状态更新期间, 区块链无法进行正常的出块操作, 这影响到了可编辑区块链的性能和可
用性。
[0005]但现有可编辑区块链研究, 只涉及对于一个编辑行为达成全网共识的协议, 对于
实际执行中状态更新行为并没有提出成型的高效策略。
发明内容
[0006]为了克服上述现有技术的不足, 本发明提供一种支持状态快速更新的区块链细粒
度编辑方法, 用以在可编辑区块链执行完编辑操作之后, 快速且节 能地更新区块链节点持
有的状态数据, 以提高可编辑区块链的性能和可用性。
[0007]本发明的原理是: 在交易第一遍正常执行的时候, 记录每个交易在执行过程中读
取过和写入过的智能合约存储变量 (storage) 的集合 (简称读集和写集) , 并基于实际运行
时记录的控制流转换和交易内部的数据依赖关系信息, 生成一段可以在控制流和交易内部
数据依赖关系发生少量变动的情况下省略大量计算过程直接得出正确计算结果的快速执
行代码, 以加速交易的二次执行; 在在区块链编辑权限拥有者编辑区块链上某个历史交易
的编辑事件发生后, 乐观地并行执行读集元素 的状态相较于初次执行时发生改变的交易,
并用该交易在首次执行时生成的快速执行代码加速交易的执行。 在更新完某 区块B中的所说 明 书 1/3 页
3
CN 114840545 B
3
专利 一种支持状态快速更新的区块链细粒度编辑方法
文档预览
中文文档
8 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共8页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-02-24 00:49:22上传分享