[发明专利]智能合约数据提取和同步方法、系统有效
申请号: | 202010031809.6 | 申请日: | 2020-01-13 |
公开(公告)号: | CN111400303B | 公开(公告)日: | 2023-07-21 |
发明(设计)人: | 卢暾;王泓机;张绍华;顾宁;戴炳荣;李超 | 申请(专利权)人: | 复旦大学;上海计算机软件技术开发中心 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/23;G06F16/27;G06Q40/04 |
代理公司: | 上海伯瑞杰知识产权代理有限公司 31227 | 代理人: | 孟旭彤 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 智能 合约 数据 提取 同步 方法 系统 | ||
本发明公开了一种基于抽象语法树的智能合约数据提取和同步方法。首先对智能合约源代码进行词法分析和语法分析,生成抽象语法树;对该抽象语法树进行由顶至下的遍历分析,针对每个合约中的状态变量记录其序号及类型,并据此计算出该智能合约中的数据对应于存储MPT树中的索引值;当有新的交易产生时,根据交易所在的区块头的状态MPT树根重构存储MPT树,根据索引值查询存储MPT树获取到状态变量实际值,并将该数据同步到外部存储层中。使用本发明能够有效提取和同步智能合约应用中变量的数据,用于后续查询和分析。
技术领域
本发明涉及区块链技术领域,特别涉及一种智能合约数据提取和同步方法、系统。
背景技术
同时,智能合约中的数据是与应用强相关的。在用户使用和管理者维护时,智能合约中的业务数据被频繁读取和使用。 现有的一些区块链数据抽取方案关注于区块链本身数据的读取和查询,比如区块数据、交易数据等。但目前却鲜有对智能合约中的数据进行直接查询的方法。
发明内容
有鉴于此,本发明提供了一种基于抽象语法树的智能合约数据抽取和同步方法,能够有效提取和同步智能合约内部状态变量的值,方便后续的查询与分析。
本发明的有益效果包括:
本发明提出的基于抽象语法树的智能合约数据抽取和同步方法,能够自动地分析和计算出智能合约中状态变量的存储键值,并直接方便地读取智能合约中的变量数据,简化了操作过程,提高了读取效率。
本发明能够通过对交易载荷的分析,智能识别当前交易调用的是哪一个合约方法,并结合抽象语法树,自动判断出该合约方法对哪部分状态变量进行了更新,从而形成待更新列表,进行增量更新,减小了更新负担,保证了同步效率。
本发明能够快速、方便地提取和同步智能合约内部数据,在保证数据准确的同时解决了去中心化应用数据查询困难、分析困难的问题。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1为根据本发明实施例之一的智能合约数据提取和同步方法流程图。
图2为根据本发明实施例之一的智能合约数据提取和同步系统模块示意图。
实施方式
根据一个或者多个实施例,一种基于抽象语法树的智能合约数据提取和同步方法,包括:
步骤一、利用ANTLR4对智能合约进行词法分析和语法分析,生成抽象语法树;
步骤二、对抽象语法树进行逐步遍历分析,针对每个合约中的状态变量记录其序号及类型,并据此计算出该智能合约中的数据对应于存储MPT树中的索引值;
步骤三、对抽象语法树进行逐步遍历分析,针对每个合约中的方法节点,解析出所有该方法涉及到的状态变量;
步骤四、当有新的交易产生时,根据交易关联合约的ABI和交易载荷解析出交易所执行的方法,并根据交易所执行的方法涉及到的状态变量生成待更新列表;
步骤五、当有新的交易产生时,根据交易所在的区块头的状态MPT树根重构存储MPT树,对待更新列表中的状态变量,根据索引值获取到状态变量实际值,并将该数据同步到外部存储层中。
优选的,步骤一获得抽象语法树后,进一步删除抽象语法树中与智能合约数据提取和同步无关的冗余节点,得到与智能合约数据提取和同步相关的保留节点;步骤二对保留节点进行遍历分析。
优选的,所述冗余节点包括:说明编译版本的节点、导入外部源文件的节点、合约种类为Library的合约节点,其他节点归为保留节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学;上海计算机软件技术开发中心,未经复旦大学;上海计算机软件技术开发中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010031809.6/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置