[发明专利]智能合约数据提取和同步方法、系统有效
申请号: | 202010031809.6 | 申请日: | 2020-01-13 |
公开(公告)号: | CN111400303B | 公开(公告)日: | 2023-07-21 |
发明(设计)人: | 卢暾;王泓机;张绍华;顾宁;戴炳荣;李超 | 申请(专利权)人: | 复旦大学;上海计算机软件技术开发中心 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/23;G06F16/27;G06Q40/04 |
代理公司: | 上海伯瑞杰知识产权代理有限公司 31227 | 代理人: | 孟旭彤 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 智能 合约 数据 提取 同步 方法 系统 | ||
1.一种智能合约数据提取和同步方法,其特征在于,包括:
步骤一、对所述智能合约数据进行词法分析和语法分析,生成抽象语法树,删除抽象语法树中与智能合约数据提取和同步无关的冗余节点,得到与智能合约数据提取和同步相关的保留节点;
步骤二、对所述抽象语法树进行逐步遍历分析,针对每个智能合约中的状态变量记录其序号及类型,并根据状态变量的序号及类型计算出该智能合约中的数据对应于存储MPT树中的索引值,并且对保留节点进行遍历分析;
步骤三、对抽象语法树进行逐步遍历分析,针对每个智能合约中的方法节点,解析出所有该方法涉及到的状态变量;
步骤四、当有新的交易产生时,根据交易关联合约的abi和交易载荷解析出交易所执行的方法,并根据交易所执行的方法涉及到的状态变量生成待更新列表,
同时,根据交易所在的区块头的状态MPT树根重构存储MPT树,对待更新列表中的状态变量,根据索引值获取到状态变量实际值,并将该数据同步到外部存储层中;
其中,对智能合约中状态变量的序号和类型的记录方式为,设立两个参数,分别保存在智能合约中出现的状态变量信息和结构体信息,遍历抽象语法树时根据节点的不同类型将信息存储到对应的参数中;
解析状态变量的方法是,遍历抽象语法树,进入到函数节点时判断函数内的赋值语句中的被赋值变量是否在曾在状态变量中定义过,且没有在函数内部声明,若是,则将该状态变量与该方法关联起来;
所述生成待更新列表的方法步骤包括:
1)获取到智能合约对应的abi;
2)获取到智能合约生成的交易,对该交易的载荷进行解析,确定生成该交易所调用的智能合约函数名;
3)从步骤1)中的abi里找到步骤2)中解析出的函数名对应的函数参数和返回值规则;
4)将步骤2)中交易载荷去除函数名后的部分,按照步骤3)中的函数参数和返回值规则进行解析,获得函数的参数以及返回值列表,获得完整的函数签名;
5)使用所述生成待更新列表的方法中步骤1)至4)找到的函数签名,找到与该函数相关的状态变量,将这些状态变量加入到待更新列表中;
生成合约状态变量对应的存储MPT树索引值的方式为,根据状态变量的不同类型,维护一个当前槽位序号和槽位中序号,分别采用顺序取序号和哈希取序号方式更新上述序号,并计算索引值;
重构存储MPT树的方式为:
从当前交易中获取的状态根,该状态根是状态MPT树的hash,
连接到客户端的底层levelDB数据库中,使用该hash获取到根节点的RLP编码,
使用RLP解码后获得真实的节点数据,逐级下探还原出整棵状态MPT树;
使用智能合约的地址作为key,查询该棵状态MPT树,获取到该智能合约的存储MPT树的hash,使用状态MPT树的方法重构出整棵存储MPT树;
对于每个节点的RLP解码后的对象,将其按照(hash值,RLP编码)的形式存储到key-value内存数据库中。
2.一种智能合约数据提取和同步系统,其特征在于,包含合约解析器、交易分析器、交易监听器、数据更新器、变量序号映射、方法变量映射、MPT树缓存,其中,
合约解析器,解析用户提供的智能合约,并根据变量序号生成变量序号映射;
交易监听器监听客户端上发送的交易事件,并将获取到的交易数据交由交易分析器进行进一步的分析;
交易分析器分析出智能合约中所调用的方法,并查询方法变量映射获取到待更新列表;
数据更新器根据所述待更新列表确定要增量更新的变量,读取存储在MPT树缓存的数据,并更新数据到数据库中;
所述系统采用如权利要求1所述的方法实现智能合约数据提取和同步。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学;上海计算机软件技术开发中心,未经复旦大学;上海计算机软件技术开发中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010031809.6/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置