以太坊代币交易中不一致行为的检测方法技术

技术编号:23289305 阅读:33 留言:0更新日期:2020-02-08 19:03
本发明专利技术涉及以太坊代币交易中不一致行为的检测方法,A.获取执行轨迹:客户端全同步时捕获执行轨迹;B.提取每个交易标准方法集合;C.提取标准事件集合,记录交易的数据结构对以太坊数据库的修改;D.对每个交易与修改的数据集合对比,识别出核心数据结构和以太坊代币合约,记录映射关系;E.再次扫描所有交易信息,当发现有已识别出的以太坊代币合约,提取核心数据结构和以太坊数据库的修改;F.将每个交易调用的标准方法集合、标准事件集合和修改后的数据集合对比,任意两个不同则判断交易行为不一致。本发明专利技术能够识别出单个或多个联动的代币合约是否为以太坊代币合约,并自动化识别以太坊代币交易的实现是否符合交易行为标准。

Detection method of inconsistent behavior in token transaction of Ethereum

【技术实现步骤摘要】
以太坊代币交易中不一致行为的检测方法
本专利技术涉及计算机数据安全的检测方法,具体讲是以太坊代币交易中不一致行为的检测方法。
技术介绍
比特币的成功激励了许多加密货币的诞生,其中绝大部分的加密货币都是以智能合约的形式部署并运行于以太坊上。智能合约是在以太坊虚拟机(以太坊客户端的一个程序模块)上运行的一种表示合约性质的程序。而智能合约的应用范围很广,其具体合约内容可以涉及代币、赌博或其他用途。代币合约则是智能合约的一种具体合约形式,专门针对代币交易。为了规范代币与用户以及第三方工具(例如区块链钱包,区块链的交易所市场等)之间的交互,一些代币合约实现的规范及标准应运而生,例如以太坊代币标准包括有ERC20、ERC223、ERC667、ERC777、ERC995等众多标准。在每个标准中都定义了多个标准方法(函数)和标准事件。用户可以通过给代币合约的账户地址发送一串数字,来调用该代币合约中的某个标准方法(函数)。这些代币涉及了大量的资金,与标准不一致的行为可能就会导致用户对资金真实状况的误解甚至是财产的损失。因此,对代币的分析至关重要。在文献《DetectingTokenSystemsonEthereum》中,等人提出了两种通过分析以太坊虚拟机(EVM)的字节码来识别代币合约的方法:(1)通过标准接口的方法编码来识别;(2)使用符号执行和污点分析技术来检测代币的交易行为。这些方法有如下缺点:(1)方法编码识别的方案很容易产生误报,例如,如果智能合约代码中的某个常量等于标准接口的编码,就会产生误报。(3)两种方法都无法检测跨合约协作的代币交易行为。(4)两种方法的重心仅仅是识别某个智能合约是否是代币合约,并没有识别代币合约的实现是否符合标准。在文献《NetworkAnalysisofERC20TokensTradingonEthereumBlockchain》中,Somin等人通过解析Transfer事件来识别代币的交易行为进而进行交易网络分析,该方法存在如下问题:Transfer事件并不一定反映真实的代币行为,不符合标准的合约代码实现,可以导致Transfer事件与真实的代币交易行为截然不同,Somin等人并没有关注Transfer事件的实现是否与标准的定义不一致。在文献《SmartCheck:StaticAnalysisofEthereumSmartContracts》中,SergeiTikhomirov等人将Solidity编写的智能合约源代码转换为基于XML的中间表示形式,并根据XPath模式进行检查,检测了源码中的21种漏洞。它无法轻松扩展以检测以太坊虚拟机(EVM)字节码中的不一致,因为(1)它需要智能合约的源代码;(2)不一致的检测需要了解程序的语义,但模式搜索不支持这种语义。
技术实现思路
本专利技术提供了一种以太坊代币交易中不一致行为的检测方法,可以识别出单个或多个联动的智能合约是否为以太坊代币合约,并对已发生的以太坊代币交易进行不一致行为的检测,自动化识别以太坊代币交易的实现是否符合交易行为标准。本专利技术以太坊代币交易中不一致行为的检测方法,包括:第一阶段:提取核心数据结构和识别以太坊代币合约:A.获取执行轨迹:当客户端在全同步时,会在客户端上重放的历史上执行过的所有交易,此时通过客户端捕获每个交易的交易信息,包括每个交易在执行时调用的操作指令和调用的智能合约的信息,将所有交易的交易信息的集合作为执行轨迹;B.对执行轨迹中的每个交易信息,根据所检测的以太坊代币标准提取出每个交易调用的标准方法,形成标准方法集合;例如,需要根据以太坊代币ERC20标准对代币交易进行检测,在ERC20标准中定义了六个标准方法与两个标准事件,其中,只有transfer和transferfrom两个标准方法是和代币交易相关的。因此在分析一笔交易的时候,就判断在这个交易中调用的方法是否是transfer或者transferfrom。假如是transfer或transferfrom方法,则判断其调用了ERC20的标准方法,并将交易中的标准方法提取出来。如果这笔交易里所有调用的方法都与ERC20标准里的标准方法无关,这笔交易则不是本次检测需要的交易,跳过该交易,对执行轨迹中的下个交易进行判断。C.对执行轨迹中每个交易的操作指令与操作数进行分析,根据所检测的以太坊代币标准提取出每个交易调用的标准事件,形成标准事件集合,并记录每个交易的数据结构对以太坊数据库的修改;D.逐一将每个交易根据其数据结构对以太坊数据库修改后的数据集合与该交易通过智能合约调用的标准方法集合或标准事件集合进行比较,如果二者完全一致,则认为该数据结构为该交易的核心数据结构,并且该交易调用的智能合约为以太坊代币合约,记录该交易的<以太坊代币合约地址-核心数据结构>映射关系。因为在智能合约中有许多种数据结构,因此需要先在步骤C中记录下来每一种数据结构对以太坊数据库的修改,然后再逐一将修改后的数据集合和该交易调用的标准方法集合或标准事件集合进行比较,当发现一致的那个数据结构,即为符合所检测的以太坊代币标准的核心数据数据结构。核心数据结构表示的是(账户地址—余额)的映射关系,通过核心数据结构对以太坊数据库修改后的数据集合为通过交易后余额的变化量,而标准方法集合来自用户对交易发起的消息调用,表示要交易的代币数量,标准事件集合来自以太坊客户端的指令,表示以太坊客户端根据用户的交易要求进行的操作。因此,在正确的交易中,以太坊数据库修改后的数据集合(余额的变化量)、标准方法集合(用户要求交易的代币数量)和标准事件集合(以太坊客户端的指令)三者应当一致。第二阶段:根据所述的映射关系检测以太坊代币交易行为的一致性:E.再次扫描所述重放的所有交易的交易信息,当发现某个交易信息中交易接收方为步骤D中已识别出的以太坊代币合约,则通过该以太坊代币合约对应的映射关系,根据以太坊代币合约地址提取出对应的核心数据结构,再查找在本次交易中是否涉及到该核心数据结构对以太坊数据库的修改,如果有则记录下来;F.对步骤E记录下的所述交易,将每个交易各自通过以太坊代币合约调用的标准方法集合、标准事件集合和根据核心数据结构对以太坊数据库修改后的数据集合的内容进行对比,如果其中任意两个不相同,则判断该交易对以太坊代币合约的实现与以太坊代币标准不一致,输出交易行为不一致的信息。在对以太坊代币交易行为的一致性进行检测时,必须要先确定出标准的交易行为,因此需要在第一次对历史的所有交易(数量可以是成千上万)进行扫描来搜集执行轨迹,从中提取到他的核心结构,然后确定哪些交易调用的智能合约是以太坊代币合约,并记录下这些交易的<以太坊代币合约地址-核心数据结构>映射关系。然后再对历史的所有交易进行第二次扫描,根据每个交易的根据核心数据结构,判断该交易是否符合以太坊代币标准。因为在每个交易调用的代币合约里会去实现不同的方法(函数),有的方法是符合以太坊代币标准里定义的标准方法的,有方法属于自定义方法,不符合标准方法。因本文档来自技高网
...

【技术保护点】
1.以太坊代币交易中不一致行为的检测方法,其特征包括:/n第一阶段:提取核心数据结构和识别以太坊代币合约:/nA.获取执行轨迹:当客户端在全同步时,会在客户端上重放的历史上执行过的所有交易,此时通过客户端捕获每个交易的交易信息,包括每个交易在执行时调用的操作指令和调用的智能合约的信息,将所有交易的交易信息的集合作为执行轨迹;/nB.对执行轨迹中的每个交易信息,根据所检测的以太坊代币标准提取出每个交易调用的标准方法,形成标准方法集合;/nC.对执行轨迹中每个交易的操作指令与操作数进行分析,根据所检测的以太坊代币标准提取出每个交易调用的标准事件,形成标准事件集合,并记录每个交易的数据结构对以太坊数据库的修改;/nD.逐一将每个交易根据其数据结构对以太坊数据库修改后的数据集合与该交易通过智能合约调用的标准方法集合或标准事件集合进行比较,如果二者完全一致,则认为该数据结构为该交易的核心数据结构,并且该交易调用的智能合约为以太坊代币合约,记录该交易的<以太坊代币合约地址-核心数据结构>映射关系;/n第二阶段:根据所述的映射关系检测以太坊代币交易行为的一致性:/nE.再次扫描所述重放的所有交易的交易信息,当发现某个交易信息中交易接收方为步骤D中已识别出的以太坊代币合约,则通过该以太坊代币合约对应的映射关系,根据以太坊代币合约地址提取出对应的核心数据结构,再查找在本次交易中是否涉及到该核心数据结构对以太坊数据库的修改,如果有则记录下来;/nF.对步骤E记录下的所述交易,将每个交易各自通过以太坊代币合约调用的标准方法集合、标准事件集合和根据核心数据结构对以太坊数据库修改后的数据集合的内容进行对比,如果其中任意两个不相同,则判断该交易对以太坊代币合约的实现与以太坊代币标准不一致,输出交易行为不一致的信息。/n...

【技术特征摘要】
1.以太坊代币交易中不一致行为的检测方法,其特征包括:
第一阶段:提取核心数据结构和识别以太坊代币合约:
A.获取执行轨迹:当客户端在全同步时,会在客户端上重放的历史上执行过的所有交易,此时通过客户端捕获每个交易的交易信息,包括每个交易在执行时调用的操作指令和调用的智能合约的信息,将所有交易的交易信息的集合作为执行轨迹;
B.对执行轨迹中的每个交易信息,根据所检测的以太坊代币标准提取出每个交易调用的标准方法,形成标准方法集合;
C.对执行轨迹中每个交易的操作指令与操作数进行分析,根据所检测的以太坊代币标准提取出每个交易调用的标准事件,形成标准事件集合,并记录每个交易的数据结构对以太坊数据库的修改;
D.逐一将每个交易根据其数据结构对以太坊数据库修改后的数据集合与该交易通过智能合约调用的标准方法集合或标准事件集合进行比较,如果二者完全一致,则认为该数据结构为该交易的核心数据结构,并且该交易调用的智能合约为以太坊代币合约,记录该交易的<以太坊代币合约地址-核心数据结构>映射关系;
第二阶段:根据所述的映射关系检测以太坊代币交易行为的一致性:
E.再次扫描所述重放的所有交易的交易信息,当发现某个交易信息中交易接收方为步骤D中已识别出的以太坊代币合约,则通过该以太坊代币合约对应的映射关系,根据以太坊代币合约地址提取出对应的核心数据结构,再查找在本次交易中是否涉及到该核心数据结构对以太坊数据库的修改,如果有则记录下来;
F.对步骤E记...

【专利技术属性】
技术研发人员:陈厅张愉菲李子豪罗夏朴王挺曹蓉肖修卓张小松牛伟纳
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1