CN111400303A - 智能合约数据提取和同步方法、系统和平台 - Google Patents

智能合约数据提取和同步方法、系统和平台 Download PDF

Info

Publication number
CN111400303A
CN111400303A CN202010031809.6A CN202010031809A CN111400303A CN 111400303 A CN111400303 A CN 111400303A CN 202010031809 A CN202010031809 A CN 202010031809A CN 111400303 A CN111400303 A CN 111400303A
Authority
CN
China
Prior art keywords
intelligent contract
transaction
tree
state
data
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.)
Granted
Application number
CN202010031809.6A
Other languages
English (en)
Other versions
CN111400303B (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.)
SHANGHAI DEVELOPMENT CENTER OF COMPUTER SOFTWARE TECHNOLOGY
Fudan University
Original Assignee
SHANGHAI DEVELOPMENT CENTER OF COMPUTER SOFTWARE TECHNOLOGY
Fudan University
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 SHANGHAI DEVELOPMENT CENTER OF COMPUTER SOFTWARE TECHNOLOGY, Fudan University filed Critical SHANGHAI DEVELOPMENT CENTER OF COMPUTER SOFTWARE TECHNOLOGY
Priority to CN202010031809.6A priority Critical patent/CN111400303B/zh
Publication of CN111400303A publication Critical patent/CN111400303A/zh
Application granted granted Critical
Publication of CN111400303B publication Critical patent/CN111400303B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/23Updating
    • 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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Development Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Technology Law (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于抽象语法树的智能合约数据提取和同步方法。首先对智能合约源代码进行词法分析和语法分析,生成抽象语法树;对该抽象语法树进行由顶至下的遍历分析,针对每个合约中的状态变量记录其序号及类型,并据此计算出该智能合约中的数据对应于存储MPT树中的索引值;当有新的交易产生时,根据交易所在的区块头的状态MPT树根重构存储MPT树,根据索引值查询存储MPT树获取到状态变量实际值,并将该数据同步到外部存储层中。使用本发明能够有效提取和同步智能合约应用中变量的数据,用于后续查询和分析。

Description

智能合约数据提取和同步方法、系统和平台
技术领域
本发明涉及区块链技术领域,特别涉及一种智能合约数据提取和同步方法、系统和平台。
背景技术
智能合约是区块链2.0的核心,具有图灵完备性,它是由事件驱动的、具有状态的、运行在可复制的共享区块链数据账本上的计算机程序,能够实现自主调用或被调用的处理数据,接受、储存和转发数字货币对应的价值,以及控制和管理各类在区块链上的智能数字资产等功能。
同时,智能合约中的数据是与应用强相关的。对于以太坊上的去中心化应用而言,大量的业务数据都被保存在智能合约中,比如在医疗记录交换的去中心化应用中,智能合约中保存了用户访问医疗记录的权限信息,医疗记录的元数据信息等。在用户使用和管理者维护时,智能合约中的业务数据被频繁读取和使用。
然而,以太坊对于这部分内容的查询却并不友好。若要从外界读取合约中的数据,需要合约的编写者主动在合约中定义和实现读取函数,其次,用户在读取时需要向以太坊客户端发起交易请求,在以太坊交易完成后才能从该交易的返回值中获取到需要读取的值,最后,以太坊本身采用的底层数据组织方式和数据结构对于智能合约中数据的查询也并不友好。
由于以太坊在每次执行交易进行读取时需要先构建MPT树并进行读取,MPT的读取类似于前缀树,时间复杂度为O(m)(其中m为前缀长度),其效率也受到一定影响。最后,由于部分已部署在区块链上的合约并没有对所有的合约内的状态变量建立读取函数,因此难以获取这部分变量的状态,对应用用户与应用管理者都造成了困扰。
现有的一些区块链数据抽取方案关注于区块链本身数据的读取和查询,比如区块数据、交易数据等。其原因在于区块数据和交易数据可以直接通过以太坊提供的事件机制进行订阅,以太坊会自动推送其数据,因而其实现难度较低。但目前却鲜有对以太坊智能合约中的数据进行直接查询的方法。
发明内容
有鉴于此,本发明提供了一种基于抽象语法树的智能合约数据抽取和同步方法,能够有效提取和同步智能合约内部状态变量的值,方便后续的查询与分析。
本发明的有益效果包括:
(1)本发明提出的基于抽象语法树的智能合约数据抽取和同步方法,能够自动地分析和计算出智能合约中状态变量的存储键值,并直接方便地读取智能合约中的变量数据,简化了操作过程,提高了读取效率。
(2)本发明能够通过对交易载荷的分析,智能识别当前交易调用的是哪一个合约方法,并结合抽象语法树,自动判断出该合约方法对哪部分状态变量进行了更新,从而形成待更新列表,进行增量更新,减小了更新负担,保证了同步效率。
(3)本发明能够快速、方便地提取和同步基于以太坊的去中心化应用的智能合约内部数据,在保证数据准确的同时解决了去中心化应用数据查询困难、分析困难的问题。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1为根据本发明实施例之一的智能合约数据提取和同步方法流程图。
图2为根据本发明实施例之一的智能合约数据提取和同步系统模块示意图。
具体实施方式
根据一个或者多个实施例,一种基于抽象语法树的智能合约数据提取和同步方法,包括:
步骤一、利用ANTLR4对智能合约进行词法分析和语法分析,生成抽象语法树;
步骤二、对抽象语法树进行逐步遍历分析,针对每个合约中的状态变量记录其序号及类型,并据此计算出该智能合约中的数据对应于存储MPT树中的索引值;
步骤三、对抽象语法树进行逐步遍历分析,针对每个合约中的方法节点,解析出所有该方法涉及到的状态变量;
步骤四、当有新的交易产生时,根据交易关联合约的ABI和交易载荷解析出交易所执行的方法,并根据交易所执行的方法涉及到的状态变量生成待更新列表;
步骤五、当有新的交易产生时,根据交易所在的区块头的状态MPT树根重构存储MPT树,对待更新列表中的状态变量,根据索引值获取到状态变量实际值,并将该数据同步到外部存储层中。
优选的,步骤一获得抽象语法树后,进一步删除抽象语法树中与智能合约数据提取和同步无关的冗余节点,得到与智能合约数据提取和同步相关的保留节点;步骤二对保留节点进行遍历分析。
优选的,所述冗余节点包括:说明编译版本的节点、导入外部源文件的节点、合约种类为Library的合约节点,其他节点归为保留节点。
优选的,删除冗余节点,留下保留节点的过程为:
1)遍历根节点的子节点,检测每个子节点的nodeType(节点类型)属性,将属性值为ContractDefinition的节点归为保留节点,其他属性值对应的节点归为冗余节点;
2)进入保留节点进一步遍历,检测合约类型属性contractKind,将属性值为Contract的节点归为保留节点,其他节点归为冗余节点。
优选的,重构存储MPT树的方式如下:
从当前交易中获取到状态根,该状态根即为状态MPT树的根节点哈希,使用该哈希可以获取到根节点对象,使用根节点可以访问到其子节点,依照此方式可以还原出整棵状态MPT树;查询该棵状态MPT树,获取到智能合约账户的存储MPT树的树根,使用类似方式重构出整棵存储MPT树。
在整颗存储MPT树重构完成之后,对于每笔交易,本发明将重新查询并同步该交易所更新的数据值,将最新的数据值同步到外部数据库中以备后续查询和分析使用。
根据一个或者多个实施例,一种基于抽象语法树的智能合约数据提取与同步方法:
利用开源的词法分析与语法分析工具ANTLR4获取源代码程序的抽象语法树;
直接对抽象语法树进行逐步遍历分析,针对每个合约检测其合约中的状态变量所在当前合约中的序号和类型;
结合上述当前合约中的序号和类型两部分信息计算出每个状态变量在状态MPT树中对应的Key值;
对抽象语法树进行逐步遍历分析,针对每个合约检测其合约中的函数,并分析出合约中每个函数对应当前合约中的状态变量的待更新列表;
监听以太坊中新交易的事件,并筛选出对应于当前合约的所有交易事件;
对于每一笔当前合约的交易事件,分析其交易载荷,判断该交易对应于当前智能合约的哪一个方法调用,并结合前述待更新列表对外部数据库的数据进行增量更新。
根据一个或者多个实施例,如图1所示,基于抽象语法树的智能合约数据提取与同步方法包括如下步骤:
步骤(1),利用ANTLR4对智能合约涉及的源代码进行词法分析和语法分析生成抽象语法树。本步骤中,使用Solidity语言编写智能合约,并使用定义好的Solidity语言语法文件Solidity.g4,其中,该文件包括词法规范内容与语法规范内容。使用Java的ANTLR4SDK对Solidity源代码文件与语法文件进行解析,构建抽象语法树对象Parsed Tree。
步骤(2),对抽象语法树进行逐步遍历分析,针对每个合约中的状态变量记录其序号及类型,并据此计算出该智能合约中的数据对应于存储MPT树中的索引值。
设立如下参数:
stateVariablesList:类型为列表,保存在合约中的所有出现过的状态变量的标识符和类型。
structDefinitionList:类型为列表,保存在合约中出现过的结构体定义。
在对抽象语法树进行顺序遍历的过程中,当遇到节点为StateVariableDeclaration时,获取该节点的子节点TypeName(类型)和Identifier(标识符),并保存到stateCariablesList中。如果该类型为uint8,uint16,uint32等,则同时保存其具体大小;如果类型为映射类型mapping,则访问其子节点elementaryTypeName和typeName,分别表示映射的from类型和to类型,同时保存该状态变量的from类型和to类型;如果类型为定长数组,则记录该数组长度。
通过上述过程,在获得了智能合约中的状态变量的声明序号和类型后,计算出每个状态变量对应于状态MPT树中的序号:
设置如下变量:
slotPos:256位整型,storage空间中槽位的序号,从0开始。
inSlotPos:32位整型,表示了在storage空间中每一个槽位中从该槽位最右端起字节的序号。
identifierToIndexMap:哈希表类型,表示合约中状态变量与其在存储MPT树上的索引值。
遍历stateVariableList,获取到每个状态变量在stateVariableList中的序号index,判断该状态变量的类型:
1)假如该状态变量为静态类型的基本变量(如uint8,uint16等),则按照其类型所对应的字节数移动inSlotPos。若inSlotPos大于31,则表明当前slot槽位已满,将slotPos加一,并将inSlotPos重置为0,重复步骤1)。最终记录下当前变量所在的slotPos,并将keccak256(slotPos)存储到identifierToIndexMap中。
2)假如该状态变量为静态变量中的定长数组和结构体,则直接将slotPos加一后,将keccak256(slotPos)存储到identifierToIndexMap中。定长数组和结构体中的属性则依照1)所述的方案以keccak256(slotPos)为起始位置向后放置。
3)假如该变量为动态变量中的map,则首先将slotPos加一,作为该map的独有槽位,并按照keccak256(key·slotPos)的方式计算出该map中的某一个特定的key所对应的值的存储位置,该值将唯一地存在此槽位中。
4)假如该变量为动态变量中的变长数组,则首先将slotPos加一,作为该变长数组的独有槽位,其上的元素的起始位置为keccak256(slotPos)。
5)若动态变量中的map或者变长数组嵌套了map或者其他复杂类型,则递归使用上述规则计算索引值。
步骤(3),对抽象语法树进行逐步遍历分析,针对每个合约中的方法节点,解析出所有该方法涉及到的状态变量。在遍历抽象语法树的过程中,当遍历至节点functionDefinition时,首先记录该函数的标识符,并创建以该标识符命名的集合,并遍历该节点的expressionStatement子节点,当expressionStatement子节点包含了赋值号“=”时,即判断赋值号“=”左边的表达式是否为primaryExpression,若是,则记录其子节点中的identifier,并判断该identifier是否存在于前述stateVariablesList,且不存在于当前方法的本地变量列表中,则将该变量记录为该函数的关联变量,并加入到集合中。
步骤(4)生成待更新列表的方法如下:
1)通过solc工具获取到合约对应的abi
2)获取到交易,对该交易的载荷进行解析,确定生成该交易所调用的智能合约函数名
3)从1)中的abi里找到2)中解析出的函数名对应的函数参数和返回值规则。
4)将2)中交易载荷去除函数名后的部分,按照3)中的函数参数和返回值规则进行解析,获得函数的参数以及返回值列表,至此,可以获得完整的函数签名。
5)使用上述流程找到的函数签名,找到与该函数相关的状态变量,将这些状态变量加入到待更新列表中。
步骤(4)中,生成合约状态变量对应的存储MPT树的索引值,其方式如下:
设置如下变量:
slotPos:256位整型,storage空间中槽位的序号,从0开始。
inSlotPos:32位整型,表示了在storage空间中每一个槽位中从该槽位最右端起字节的序号。
identifierToIndexMap:哈希表类型,表示合约中状态变量与其在存储MPT树上的索引值。
遍历stateVariableList,获取到每个状态变量在stateVariableList中的序号index,判断该状态变量的类型:
1)假如该状态变量为静态类型的基本变量(如uint8,uint16等),则按照其类型所对应的字节数移动inSlotPos。若inSlotPos大于31,则表明当前slot槽位已满,将slotPos加一,并将inSlotPos重置为0,重复步骤1)。最终记录下当前变量所在的slotPos,并将keccak256(slotPos)存储到identifierToIndexMap中。
2)假如该状态变量为静态变量中的定长数组和结构体,则直接将slotPos加一后,将keccak256(slotPos)存储到identifierToIndexMap中。定长数组和结构体中的属性则依照1)所述的方案以keccak256(slotPos)为起始位置向后放置。
3)假如该变量为动态变量中的map,则首先将slotPos加一,作为该map的独有槽位,并按照keccak256(key·slotPos)的方式计算出该map中的某一个特定的key所对应的值的存储位置,该值将唯一地存在此槽位中。
4)假如该变量为动态变量中的变长数组,则首先将slotPos加一,作为该变长数组的独有槽位,其上的元素的起始位置为keccak256(slotPos)。
5)若动态变量中的map或者变长数组嵌套了map或者其他复杂类型,则递归使用上述规则计算索引值。
本步骤还涉及到MPT树(Merkle Patricia Trie)。MPT是一种专为以太坊设计的压缩前缀树,结合了默克尔树和前缀树的特点。在以太坊中有四种默克尔树,分别为状态默克尔树(状态MPT树),存储默克尔树(存储MPT树),交易默克尔树(transaction MPT树)以及收据默克尔树(receipt MPT树)。其中storage默克尔树负责存储以太坊上账户的数据与状态。由于以太坊客户端并没有直接开放访问该默克尔树的接口,要获取以太坊智能合约的数据,则需要还原出这棵存储MPT树。
重构存储MPT树的方式如下:
从当前交易中获取的state root,该state root是状态MPT树的根节点hash。连接到以太坊客户端的底层levelDB数据库中,使用该hash获取到根节点的RLP编码。使用RLP解码后获得真实的节点数据,逐级下探还原出整颗状态MPT树;使用智能合约的地址作为key,查询该棵状态MPT树,即可获取到该智能合约的存储MPT树的根节点hash,使用与状态MPT树类似的方式重构出整棵存储MPT树。对于每个节点的RLP解码后的对象,将其按照(hash值,RLP编码)的形式存储到key-value内存数据库中,以便下次读取使用。
对待更新列表中的状态变量,依次查询重构出的存储MPT树,并将该数据同步到外部数据库中,供后续查询分析使用。
根据一个或者多个实施例,一种智能合约数据提取与同步系统,如图2所示,包含合约解析器、交易分析器、交易监听器、数据更新器、变量序号映射、方法变量映射、MPT树缓存等多个部分。其中合约解析器解析用户提供的智能合约,并根据变量序号生成变量序号映射。交易监听器监听以太坊上发送的交易事件,并将获取到的交易数据交由交易分析器进行进一步的分析。交易分析器分析出该合约中所调用的方法,并查询方法变量映射获取到待更新列表。数据更新器根据该待更新列表确定要增量更新的变量,读取存储MPT树缓存,并更新到数据库中保存数据。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (9)

1.一种智能合约数据提取和同步方法,其特征在于,包括:
步骤一、对所述智能合约数据进行词法分析和语法分析,生成抽象语法树;
步骤二、对所述抽象语法树进行逐步遍历分析,针对每个智能合约中的状态变量记录其序号及类型,并根据状态变量的序号及类型计算出该智能合约中的数据对应于存储MPT树中的索引值;
步骤三、对抽象语法树进行逐步遍历分析,针对每个智能合约中的方法节点,解析出所有该方法涉及到的状态变量
步骤四、当有新的交易产生时,根据交易关联合约的abi和交易载荷解析出交易所执行的方法,并根据交易所执行的方法涉及到的状态变量生成待更新列表,
同时,根据交易所在的区块头的状态MPT树根重构存储MPT树,对待更新列表中的状态变量,根据索引值获取到状态变量实际值,并将该数据同步到外部存储层中。
2.根据权利要求1所述的方法,其特征在于,在步骤一中获得抽象语法树后,进一步删除抽象语法树中与智能合约数据提取和同步无关的冗余节点,得到与智能合约数据提取和同步相关的保留节点,在步骤二中进一步对保留节点进行遍历分析。
3.根据权利要求1所述的方法,其特征在于,对智能合约中状态变量的序号和类型的记录方式为,设立两个参数,分别保存在智能合约中出现的状态变量信息和结构体信息,遍历抽象语法树时根据节点的不同类型将信息存储到对应的参数中。
4.根据权利要求1所述的方法,其特征在于,解析状态变量的方法是,
遍历抽象语法树,进入到函数节点时判断函数内的赋值语句中的被赋值变量是否在曾在状态变量中定义过,且没有在函数内部声明,若是,则将该状态变量与该方法关联起来。
5.根据权利要求1所述的方法,其特征在于,所述生成待更新列表的方法为:
1)获取到智能合约对应的abi;
2)获取到智能合约生成的交易,对该交易的载荷进行解析,确定生成该交易所调用的智能合约函数名;
3)从步骤1)中的abi里找到步骤2)中解析出的函数名对应的函数参数和返回值规则;
4)将步骤2)中交易载荷去除函数名后的部分,按照步骤3)中的函数参数和返回值规则进行解析,获得函数的参数以及返回值列表,获得完整的函数签名;
5)使用上述流程找到的函数签名,找到与该函数相关的状态变量,将这些状态变量加入到待更新列表中。
6.根据权利要求1所述的方法,其特征在于,生成合约状态变量对应的存储MPT树索引值的方式为,根据状态变量的不同类型,维护一个当前槽位序号和槽位中序号,分别采用顺序取序号和哈希取序号等方式更新上述序号,并计算索引值。
7.根据权利要求1所述的方法,其特征在于,重构存储MPT树的方式为,
从当前交易中获取到状态根,该状态根即为状态MPT树的根节点哈希,使用该哈希获取到根节点对象,
使用根节点访问到其子节点,还原出整棵状态MPT树;
查询该棵状态MPT树,获取到智能合约账户的存储MPT树的树根,使用类似方式重构出整棵存储MPT树。
8.一种智能合约数据提取和同步系统,其特征在于,包含合约解析器、交易分析器、交易监听器、数据更新器、变量序号映射、方法变量映射、MPT树缓存,其中,
合约解析器,解析用户提供的智能合约,并根据变量序号生成变量序号映射;
交易监听器监听以太坊上发送的交易事件,并将获取到的交易数据交由交易分析器进行进一步的分析;
交易分析器分析出智能合约中所调用的方法,并查询方法变量映射获取到待更新列表;
数据更新器根据所述待更新列表确定要增量更新的变量,读取存储在MPT树缓存的数据,并更新数据到数据库中。
9.一种智能合约数据提取和同步平台,其特征在于,所述平台包括服务器,服务器具有存储器;以及
耦合到所述存储器的处理器,该处理器被配置为执行存储在所述存储器中的指令,所述处理器执行以下操作。
CN202010031809.6A 2020-01-13 2020-01-13 智能合约数据提取和同步方法、系统 Active CN111400303B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010031809.6A CN111400303B (zh) 2020-01-13 2020-01-13 智能合约数据提取和同步方法、系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010031809.6A CN111400303B (zh) 2020-01-13 2020-01-13 智能合约数据提取和同步方法、系统

Publications (2)

Publication Number Publication Date
CN111400303A true CN111400303A (zh) 2020-07-10
CN111400303B CN111400303B (zh) 2023-07-21

Family

ID=71431999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010031809.6A Active CN111400303B (zh) 2020-01-13 2020-01-13 智能合约数据提取和同步方法、系统

Country Status (1)

Country Link
CN (1) CN111400303B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113268544A (zh) * 2021-05-31 2021-08-17 新华三技术有限公司 一种数据处理方法及装置
CN115344647A (zh) * 2022-10-20 2022-11-15 中国信息通信研究院 区块链数据的处理方法、装置、设备和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108876610A (zh) * 2018-05-31 2018-11-23 深圳市零度智控科技有限公司 智能合约实施方法、用户设备、存储介质及装置
CN109359159A (zh) * 2018-09-30 2019-02-19 深圳前海微众银行股份有限公司 分布式存储方法、系统及设备
CN110060064A (zh) * 2019-04-26 2019-07-26 深圳市网心科技有限公司 一种交易信息验证方法及相关装置
CN110162474A (zh) * 2019-05-10 2019-08-23 北京理工大学 一种基于抽象语法树的智能合约重入漏洞检测方法
CN110263091A (zh) * 2019-05-20 2019-09-20 阿里巴巴集团控股有限公司 结合代码标注与用户、事件类型的收据存储方法和节点

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108876610A (zh) * 2018-05-31 2018-11-23 深圳市零度智控科技有限公司 智能合约实施方法、用户设备、存储介质及装置
CN109359159A (zh) * 2018-09-30 2019-02-19 深圳前海微众银行股份有限公司 分布式存储方法、系统及设备
CN110060064A (zh) * 2019-04-26 2019-07-26 深圳市网心科技有限公司 一种交易信息验证方法及相关装置
CN110162474A (zh) * 2019-05-10 2019-08-23 北京理工大学 一种基于抽象语法树的智能合约重入漏洞检测方法
CN110263091A (zh) * 2019-05-20 2019-09-20 阿里巴巴集团控股有限公司 结合代码标注与用户、事件类型的收据存储方法和节点

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113268544A (zh) * 2021-05-31 2021-08-17 新华三技术有限公司 一种数据处理方法及装置
CN115344647A (zh) * 2022-10-20 2022-11-15 中国信息通信研究院 区块链数据的处理方法、装置、设备和介质

Also Published As

Publication number Publication date
CN111400303B (zh) 2023-07-21

Similar Documents

Publication Publication Date Title
US10324909B2 (en) Omega names: name generation and derivation utilizing nested three or more attributes
US9116968B2 (en) Methods and apparatus related to graph transformation and synchronization
JP5525541B2 (ja) データ管理システム内のデータセットのインスタンスのマッピング
US7386575B2 (en) System and method for synchronizing related data elements in disparate storage systems
US10089374B2 (en) Meta model driven data base replication and synchronization
US20080126397A1 (en) RDF Object Type and Reification in the Database
US7769719B2 (en) File system dump/restore by node numbering
US20070271227A1 (en) Apparatus and method for recursively rationalizing data source queries
CN113420026B (zh) 数据库表结构变更方法、装置、设备及存储介质
CN111400303A (zh) 智能合约数据提取和同步方法、系统和平台
WO2007044826A2 (en) Xml schema template builder
CN113204571B (zh) 涉及写入操作的sql执行方法、装置及存储介质
CN114579408A (zh) 一种实时数据库实时方程式的解析系统及方法
CN115543402A (zh) 一种基于代码提交的软件知识图谱增量更新方法
CN112463149A (zh) 一种面向软件定义卫星的可复用代码库构建方法与装置
CN107239568B (zh) 分布式索引实现方法及装置
US20060129521A1 (en) System and method for restoring a file directory structure
JP4309818B2 (ja) 構造化文書管理装置、検索装置、記憶方法、検索方法及びプログラム
CN111125129A (zh) 数据处理方法和装置、存储介质及处理器
CN110209885B (zh) 一种图查询方法及系统
CN106469086B (zh) 事件处理方法和装置
CN113626423B (zh) 业务数据库的日志管理方法、装置、系统
WO2014118560A1 (en) Method and system for data storage
Syamsiyah et al. Process discovery using in-database minimum self distance abstractions
CN117950720A (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