CN111666216B - 一种智能合约分析方法及装置 - Google Patents

一种智能合约分析方法及装置 Download PDF

Info

Publication number
CN111666216B
CN111666216B CN202010505480.2A CN202010505480A CN111666216B CN 111666216 B CN111666216 B CN 111666216B CN 202010505480 A CN202010505480 A CN 202010505480A CN 111666216 B CN111666216 B CN 111666216B
Authority
CN
China
Prior art keywords
processed
intelligent
intelligent contract
data flow
keywords
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.)
Active
Application number
CN202010505480.2A
Other languages
English (en)
Other versions
CN111666216A (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.)
Bank of China Ltd
Original Assignee
Bank of China Ltd
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 Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202010505480.2A priority Critical patent/CN111666216B/zh
Publication of CN111666216A publication Critical patent/CN111666216A/zh
Application granted granted Critical
Publication of CN111666216B publication Critical patent/CN111666216B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种智能合约分析方法及装置,具体为,获取待处理智能合约对应的代码,并对该代码进行预编译处理,获得预编译处理的结果。当预编译处理的结果正确时,表明该代码符合编写语言的规则,则从该代码中提取关键词,该关键词表示给智能合约的触发条件。当提取到关键词后,根据关键词之间的逻辑关系获取该智能合约对应的数据流向。由于智能合约是一个事务处理模块和状态机构成的协议。当满足触发条件时,数据走向一个分支,当不满足触发条件时,数据走向另一分支,通过分析关键词之间的处理逻辑,可以获知数据的流向。然后,根据当前获取的数据流向以及预设的数据流向确定该待处理智能合约是否存在缺陷,获得分析结果。

Description

一种智能合约分析方法及装置
技术领域
本申请涉及区块链技术领域,具体涉及一种智能合约分析方法及装置。
背景技术
区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。基于区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可攥改。
在现有技术中,智能合约一旦上传至区块链中,便很难撤销和修改。当该智能合约存在一些安全漏洞或其他缺陷时,可能造成巨大损失。因此,在上传智能合约之前,需要对智能合约的代码进行分析处理,以及时发现问题、解决问题。然而,目前主要采用人工对智能合约的代码进行分析检查,该种分析方法主要依赖于测试人员的技术水平,人工费用较高且效率较低。
发明内容
有鉴于此,本申请实施例提供一种智能合约分析方法及装置,以实现更为高效地对智能合约进行分析检查,保证智能合约的安全性。
为解决上述问题,本申请实施例提供的技术方案如下:
在本申请实施例第一方面,提供了一种智能合约分析方法,该方法包括:
获取待处理智能合约对应的代码,并对所述代码进行预编译处理;
当预编译结果为正确时,提取所述代码的关键词,所述关键词至少包括if/else;
根据所述关键词之间的逻辑关系获取所述智能合约对应的数据流向;
根据所述数据流向以及预设的数据流向确定所述待处理智能合约的分析结果。
在一种可能的实现方式中,当预编译结果为正确时,提取所述代码的关键词,包括:
根据所述代码对应的编程语言确定对应的关键词,并从所述代码中提取所述关键词,所述关键词还包括保留字。
在一种可能的实现方式中,所述代码对应的编程语言为Go语言或Solidity语言。
在一种可能的实现方式中,所述方法还包括:
根据所述数据流向构造数据流向图,以在显示屏上进行显示。
在一种可能的实现方式中,当所述待处理智能合约的代码编译时调用其它智能合约时,所述方法还包括:
根据调用顺序对所述其它智能合约进行缓存处理;
当所述待处理智能合约处理完成后,将缓存中的智能合约依次确定为待处理智能合约,并对所述待处理智能合约进行分析。
在本申请实施例第二方面,提供了一种智能合约分析装置,其特征在于,所述装置包括:
处理单元,用于获取待处理智能合约对应的代码,并对所述代码进行预编译处理;
提取单元,用于当预编译结果为正确时,提取所述代码的关键词,所述关键词至少包括if/else;
获取单元,用于根据所述关键词之间的逻辑关系获取所述智能合约对应的数据流向;
第一确定单元,用于根据所述数据流向以及预设的数据流向确定所述待处理智能合约的分析结果。
在一种可能的实现方式中,所述提取单元,具体用于根据所述代码对应的编程语言确定对应的关键词,并从所述代码中提取所述关键词,所述关键词还包括保留字。
在一种可能的实现方式中,所述代码对应的编程语言为Go语言或Solidity语言。
在一种可能的实现方式中,所述装置还包括:
构造单元,用于根据所述数据流向构造数据流向图,以在显示屏上进行显示。
在一种可能的实现方式中,当所述待处理智能合约的代码编译时调用其它智能合约时,所述装置还包括:
缓存单元,用于根据调用顺序对所述其它智能合约进行缓存处理;
第二确定单元,用于当所述待处理智能合约处理完成后,将缓存中的智能合约依次确定为待处理智能合约,并对所述待处理合约进行分析。
在本申请实施例第三方面,提供了一种实现智能合约分析的设备,包括:处理器和存储器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述指令或计算机程序,执行上述第一方面所述的方法。
在本申请实施例第四方面,提供了一种计算机可读存储介质,包括指令或计算机程序,当其在计算机上运行时,使得计算机执行以上第一方面所述的智能合约分析方法。
由此可见,本申请实施例具有如下有益效果:
本申请实施例首先获取待处理智能合约对应的代码,并对该代码进行预编译处理,获得预编译处理的结果。当预编译处理的结果正确时,表明该代码符合编写语言的规则,则从该代码中提取关键词,该关键词表示给智能合约的触发条件,可以包括if/else。当提取到关键词后,根据关键词之间的逻辑关系获取该智能合约对应的数据流向。由于智能合约是一个事务处理模块和状态机构成的协议。当满足触发条件时,数据走向一个分支,当不满足触发条件时,数据走向另一分支,通过分析关键词之间的处理逻辑,可以获知整个数据的流向。然后,根据当前获取的数据流向以及预设的数据流向确定该待处理智能合约是否存在缺陷,获得分析结果。可见,通过本申请实施例的方案,可以对智能合约进行自动的分析处理,无需手动检查,降低维护成本且提高维护效率。
附图说明
图1为本申请实施例提供的一种智能合约分析方法的流程图;
图2为本申请实施例提供的一种分析框架图;
图3为本申请实施例提供的一种智能合约分析装置结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。
为便于理解本申请实施例提供的技术方案,下面将先对本申请实施例涉及的技术进行说明。
目前,区块链产业有两大平台,分别为以太坊(Ethereum)和超级账本架构(Hyperledger Fabric)。两大平台上的区块链应用都通过智能合约来控制,其中以太坊对应的智能合约采用Solidity语言编写,超级账本架构的智能合约使用Go语言编写。由于智能合约一旦上传,便很难撤销和修改。当上传的智能合约本身存在危险漏洞时,将带来严重损失。因此,在将智能合约上传之前,需要对智能合约的代码进行检审核,以确保其安全性。
传统的针对代码进行审核的方法有静态分析,其中,静态分析是代码审计的一种常用方法,是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。传统的静态分析方法主要应用于传统的编程语言,例如C++、JAVA等,由于智能合约的特殊性,编写智能合约代码的语言并非为传统的编程语言,由于传统的编程语言与Solidity语言以及Go语言存在差别,传统的静态分析方法无法对智能合约的代码进行审核。目前针对智能合约的审核主要依赖人工查看代码,由于检测人员的技术水平不同,导致审核结果参差不齐且人工费用较高。
基于此,本申请实施例提供了一种智能合约分析方法,具体地,首先获取待处理智能合约对应的代码,并对该代码进行预编译处理,以检测该代码的相关定义满足规则。当预编译结果为正确时,提取该代码的关键词,该关键词为该智能合约对应的各种触发条件的语句。然后,根据各个关键词之间的逻辑关系获得该智能合约对应的数据流向,进而根据该数据流向和预设的数据流向进行比对,从而得到分析结果。即,通过本申请实施例提供的方法,可以实现对智能合约进行自动分析处理,通过将实际的数据流向与预设的数据流向比对的方法来确定该智能合约的是否存在缺陷,减少维护成本且提高审核效率。
为便于理解本申请实施例提供的方法,下面将结合附图对本申请实施例提供的智能合约分析方法进行说明。
参见图1,该图为本申请实施例提供的一种智能合约分析方法的流程图,该方法可以包括:
S101:获取待处理智能合约对应的代码,并对代码进行预编译处理。
本实施例中,首先确定待处理智能合约,并获取该智能合约对应的代码,对该代码进行预编译处理,以通过预编译处理检测该代码是否符合预设规则,确保该代码符合基本的编程语言的要求。
其中,待处理智能合约对应的代码编程语言可以为Solidity语言或Go语言。Go语言(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,该Go语言编写的智能合约主要运行在超级账本架构对应区块链中。Solidity语言是一门面向合约的、专门为实现智能合约创建的高级编程语言,Solidity语言编写的智能合约主要运行在以太坊的虚拟机中。
S102:当预编译结果为正确时,提取所代码的关键词。
当确定代码的预编译结果为正确时,即不存在错误提示时,从该代码中提取响应的关键词,该关键词至少包括if/else。
具体地,在提取关键词时,还可以先根据该代码对应的编写语言确定可能存在的关键词。当需要从代码中提取关键词,按照预设确定的关键词从代码中依次提取,从而获得该智能合约对应的关键词。例如,可以根据Go语言的特点预先确定可能存在的关键词,例如if/else/struct/for/goto/break/continue等,并进行存储,当需要提取Go语言编写的智能合约时,根据预先存储的关键词进行提取。
S103:根据关键词之间的逻辑关系获取智能合约对应的数据流向。
当获取到该代码对应的各个关键词后,根据各个关键词之间的逻辑关系确定该智能合约对应的数据流向。由于智能合约由各个事务和条件组成的协议,在满足触发条件时,将进入该触发条件对应的事务处理流程;当不满足触发条件时,将进入另一事务处理流程。具体地,当进入某一事务处理流程后,该处理流程内还可以包括条件判断,经判断后再次进入下一事务处理流程。因此,通过分析关键词之间的处理逻辑,可以获取数据流的具体流向。
S104:根据数据流向以及预设的数据流向确定待处理智能合约的分析结果。
当确定该智能合约对应的数据流向后,可以将该数据流向与预设的数据流向进行比对分析,从而根据分析结果确定该智能合约是否存在缺陷或漏洞。具体地,当获取的数据流向与预设的数据流向一致时,表明该智能合约满足实际需求,该智能合约不存在缺陷或漏洞。当获取的数据流向与预设的数据流向不一致时,表明该智能合约无法满足实际需求,存在偏差,可能存在缺陷或漏洞。其中,预设的数据流向可以为在编写该待处理智能合约之前,根据任务需求所制定的数据流向。
在一些实施例中,当获取待处理智能合约的数据流向后,为便于用户直观地观察该数据流向,可以根据该数据流向构造数据流向图,以在显示屏上进行显示,便于用户查看。
在一些实施例中,可能存在待处理智能合约在进行实际运行时,调用其它智能合约的情况,为保证其所调用的智能合约的安全性,在对待处理智能合约进行分析时,也需对所调用的智能合约进行分析。具体地,当所述待处理智能合约的代码编译时调用其它智能合约时,根据待处理智能合约调用其它智能合约的调用顺序,将该其它智能合约依次进行缓存。当待处理智能合约处理完成后,将缓存中的智能合约依次确定为待处理智能合约,利用上述分析方法对该待处理智能合约进行分析,以确定被调用的其它智能合约的安全性。
可见,通过上述实施例可知,获取待处理智能合约对应的代码,并对该代码进行预编译处理,获得预编译处理的结果。当预编译处理的结果正确时,表明该代码符合编写语言的规则,则从该代码中提取关键词,该关键词表示给智能合约的触发条件,可以包括if/else。当提取到关键词后,根据关键词之间的逻辑关系获取该智能合约对应的数据流向。由于智能合约是一个事务处理模块和状态机构成的协议。当满足触发条件时,数据走向一个分支,当不满足触发条件时,数据走向另一分支,通过分析关键词之间的处理逻辑,可以获知整个数据的流向。然后,根据当前获取的数据流向以及预设的数据流向确定该待处理智能合约是否存在缺陷,获得分析结果。可见,通过本申请实施例的方案,可以对智能合约进行自动的分析处理,无需手动检查,降低维护成本且提高维护效率。
为便于理解,参见图2所示框架图,执行该分析方法的系统可以包括批处理模块和静态分析模块。其中,批处理模块用于缓存待处理的各个智能合约,并将队列首个智能合约输入静态分析模块中,由静态分析模块对该智能合约进行预编译、提取关键词、获取数据流向以及根据数据流向构造数据流向图。
基于上述方法实施例,本申请实施例还提供了一种智能合约分析装置,如图3所示,该装置可以包括:
处理单元301,用于获取待处理智能合约对应的代码,并对所述代码进行预编译处理;
提取单元302,用于当预编译结果为正确时,提取所述代码的关键词,所述关键词至少包括if/else;
获取单元303,用于根据所述关键词之间的逻辑关系获取所述智能合约对应的数据流向;
第一确定单元304,用于根据所述数据流向以及预设的数据流向确定所述待处理智能合约的分析结果。
在一种可能的实现方式中,所述提取单元,具体用于根据所述代码对应的编程语言确定对应的关键词,并从所述代码中提取所述关键词,所述关键词还包括保留字。
在一种可能的实现方式中,所述代码对应的编程语言为Go语言或Solidity语言。
在一种可能的实现方式中,所述装置还包括:
构造单元,用于根据所述数据流向构造数据流向图,以在显示屏上进行显示。
在一种可能的实现方式中,当所述待处理智能合约的代码编译时调用其它智能合约时,所述装置还包括:
缓存单元,用于根据调用顺序对所述其它智能合约进行缓存处理;
第二确定单元,用于当所述待处理智能合约处理完成后,将缓存中的智能合约依次确定为待处理智能合约,并对所述待处理合约进行分析。
需要说明的是,本实施例中,各个单元的实现可以参见上述方法实施例,本实施例在此不做限定。
另外,本申请实施例还提供了一种实现智能合约分析的设备,包括:处理器和存储器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述指令或计算机程序,执行上述智能合约分析方法。
本申请实施例还提供了一种计算机可读存储介质,包括指令或计算机程序,当其在计算机上运行时,使得计算机执行以上所述的智能合约分析方法。
通过上述描述可知,首先获取待处理智能合约对应的代码,并对该代码进行预编译处理,以检测该代码的相关定义满足规则。当预编译结果为正确时,提取该代码的关键词,该关键词为该智能合约对应的各种触发条件的语句。然后,根据各个关键词之间的逻辑关系获得该智能合约对应的数据流向,进而根据该数据流向和预设的数据流向进行比对,从而得到分析结果。即,通过本申请实施例提供的方法,可以实现对智能合约进行自动分析处理,通过将实际的数据流向与预设的数据流向比对的方法来确定该智能合约的是否存在缺陷,减少维护成本且提高审核效率。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种智能合约分析方法,其特征在于,所述方法包括:
获取待处理智能合约对应的代码,并对所述代码进行预编译处理;
当预编译结果为正确时,依次提取所述代码的关键词,所述关键词至少包括if/else;
根据所述关键词之间的逻辑关系获取所述智能合约对应的数据流向;
根据所述数据流向以及预设的数据流向确定所述待处理智能合约的分析结果,所述分析结果为确定所述待处理智能合约存在缺陷或漏洞,或者确定所述待处理智能合约未存在缺陷或漏洞;
所述待处理智能合约包括各个事务和条件组成的协议,当所述协议满足触发条件时,进入所述触发条件对应的事务处理流程;当所述协议未满足触发条件时,进入另一事务处理流程。
2.根据权利要求1所述的方法,其特征在于,当预编译结果为正确时,提取所述代码的关键词,包括:
根据所述代码对应的编程语言确定对应的关键词,并从所述代码中提取所述关键词,所述关键词还包括保留字。
3.根据权利要求1或2所述的方法,其特征在于,所述代码对应的编程语言为Go语言或Solidity语言。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述数据流向构造数据流向图,以在显示屏上进行显示。
5.根据权利要求1所述的方法,其特征在于,当所述待处理智能合约的代码编译时调用其它智能合约时,所述方法还包括:
根据调用顺序对所述其它智能合约进行缓存处理;
当所述待处理智能合约处理完成后,将缓存中的智能合约依次确定为待处理智能合约,并对所述待处理智能合约进行分析。
6.一种智能合约分析装置,其特征在于,所述装置包括:
处理单元,用于获取待处理智能合约对应的代码,并对所述代码进行预编译处理;
提取单元,用于当预编译结果为正确时,依次提取所述代码的关键词,所述关键词至少包括if/else;
获取单元,用于根据所述关键词之间的逻辑关系获取所述智能合约对应的数据流向;
第一确定单元,用于根据所述数据流向以及预设的数据流向确定所述待处理智能合约的分析结果,所述分析结果为确定所述待处理智能合约存在缺陷或漏洞,或者确定所述待处理智能合约未存在缺陷或漏洞;
所述待处理智能合约包括各个事务和条件组成的协议,当所述协议满足触发条件时,进入所述触发条件对应的事务处理流程;当所述协议未满足触发条件时,进入另一事务处理流程。
7.根据权利要求6所述的装置,其特征在于,所述提取单元,具体用于根据所述代码对应的编程语言确定对应的关键词,并从所述代码中提取所述关键词,所述关键词还包括保留字。
8.根据权利要求6或7所述的装置,其特征在于,所述代码对应的编程语言为Go语言或Solidity语言。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
构造单元,用于根据所述数据流向构造数据流向图,以在显示屏上进行显示。
10.根据权利要求6所述的装置,其特征在于,当所述待处理智能合约的代码编译时调用其它智能合约时,所述装置还包括:
缓存单元,用于根据调用顺序对所述其它智能合约进行缓存处理;
第二确定单元,用于当所述待处理智能合约处理完成后,将缓存中的智能合约依次确定为待处理智能合约,并对所述待处理合约进行分析。
CN202010505480.2A 2020-06-05 2020-06-05 一种智能合约分析方法及装置 Active CN111666216B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010505480.2A CN111666216B (zh) 2020-06-05 2020-06-05 一种智能合约分析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010505480.2A CN111666216B (zh) 2020-06-05 2020-06-05 一种智能合约分析方法及装置

Publications (2)

Publication Number Publication Date
CN111666216A CN111666216A (zh) 2020-09-15
CN111666216B true CN111666216B (zh) 2024-01-23

Family

ID=72386669

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010505480.2A Active CN111666216B (zh) 2020-06-05 2020-06-05 一种智能合约分析方法及装置

Country Status (1)

Country Link
CN (1) CN111666216B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112968930B (zh) * 2021-01-29 2022-08-19 东南大学 区块链键值对智能合约及其设计方法

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261602A (zh) * 2008-04-08 2008-09-10 杭州电子科技大学 一种基于语法树的程序正确性验证方法
CN104021075A (zh) * 2014-05-22 2014-09-03 小米科技有限责任公司 用于程序代码的评估方法和装置
JP2016051367A (ja) * 2014-09-01 2016-04-11 日本電気通信システム株式会社 データ解析装置、データ解析方法、および、プログラム。
CN107967426A (zh) * 2017-11-27 2018-04-27 华中科技大学 一种Linux内核数据攻击的检测方法、防御方法及系统
CN109063477A (zh) * 2018-07-18 2018-12-21 成都链安科技有限公司 一种自动化的智能合约代码缺陷检测系统和方法
CN109684838A (zh) * 2018-11-23 2019-04-26 电子科技大学 一种针对以太坊智能合约的静态代码审计系统及方法
CN109783195A (zh) * 2019-01-16 2019-05-21 杭州趣链科技有限公司 一种基于容器的智能合约实时调试方法
CN109948345A (zh) * 2019-03-20 2019-06-28 杭州拜思科技有限公司 一种智能合约漏洞检测的方法、系统
CN110309660A (zh) * 2019-07-09 2019-10-08 佛山市伏宸区块链科技有限公司 一种智能合约代码的自动化审计系统及方法
CN110659494A (zh) * 2019-09-27 2020-01-07 重庆邮电大学 一种可扩展的智能合约漏洞检测方法
CN110889574A (zh) * 2018-09-11 2020-03-17 富士通株式会社 用于智能合约的不确定性因素检测装置、方法及介质
CN111062038A (zh) * 2019-11-23 2020-04-24 同济大学 一种基于状态空间的智能合约形式化验证系统及方法
CN111159012A (zh) * 2019-12-10 2020-05-15 中国科学院深圳先进技术研究院 一种基于深度学习的智能合约漏洞检测方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021416B2 (en) * 2007-05-16 2015-04-28 Accenture Global Service Limited Recommended application evaluation system

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261602A (zh) * 2008-04-08 2008-09-10 杭州电子科技大学 一种基于语法树的程序正确性验证方法
CN104021075A (zh) * 2014-05-22 2014-09-03 小米科技有限责任公司 用于程序代码的评估方法和装置
JP2016051367A (ja) * 2014-09-01 2016-04-11 日本電気通信システム株式会社 データ解析装置、データ解析方法、および、プログラム。
CN107967426A (zh) * 2017-11-27 2018-04-27 华中科技大学 一种Linux内核数据攻击的检测方法、防御方法及系统
CN109063477A (zh) * 2018-07-18 2018-12-21 成都链安科技有限公司 一种自动化的智能合约代码缺陷检测系统和方法
CN110889574A (zh) * 2018-09-11 2020-03-17 富士通株式会社 用于智能合约的不确定性因素检测装置、方法及介质
CN109684838A (zh) * 2018-11-23 2019-04-26 电子科技大学 一种针对以太坊智能合约的静态代码审计系统及方法
CN109783195A (zh) * 2019-01-16 2019-05-21 杭州趣链科技有限公司 一种基于容器的智能合约实时调试方法
CN109948345A (zh) * 2019-03-20 2019-06-28 杭州拜思科技有限公司 一种智能合约漏洞检测的方法、系统
CN110309660A (zh) * 2019-07-09 2019-10-08 佛山市伏宸区块链科技有限公司 一种智能合约代码的自动化审计系统及方法
CN110659494A (zh) * 2019-09-27 2020-01-07 重庆邮电大学 一种可扩展的智能合约漏洞检测方法
CN111062038A (zh) * 2019-11-23 2020-04-24 同济大学 一种基于状态空间的智能合约形式化验证系统及方法
CN111159012A (zh) * 2019-12-10 2020-05-15 中国科学院深圳先进技术研究院 一种基于深度学习的智能合约漏洞检测方法

Also Published As

Publication number Publication date
CN111666216A (zh) 2020-09-15

Similar Documents

Publication Publication Date Title
JP5791698B2 (ja) アバップソースコードのコード検査遂行システム
CN111104335B (zh) 一种基于多层次分析的c语言缺陷检测方法及装置
CN104899147A (zh) 一种面向安全检查的代码静态分析方法
US20140304680A1 (en) Systems and methods for handling database deadlocks induced by database-centric applications
Reimer et al. Saber: Smart analysis based error reduction
US20100199355A1 (en) Method of protecting digital documents against unauthorized uses
CN116431476A (zh) 一种基于代码上下文变异的jvm模糊测试方法
Nam et al. A bug finder refined by a large set of open-source projects
CN111666216B (zh) 一种智能合约分析方法及装置
CN105354035A (zh) 用于编写web工程测试用例的方法
Harzevili et al. Automatic Static Vulnerability Detection for Machine Learning Libraries: Are We There Yet?
CN111258562B (zh) Java代码质量检查方法、装置、设备和存储介质
CN115495745B (zh) 一种基于风险函数的工业软件源代码静态检测方法及系统
CN116841906A (zh) 智能合约的检测方法、装置及电子设备
Beksultanova et al. Analysis tools for smart contract security
US11544179B2 (en) Source traceability-based impact analysis
CN114691197A (zh) 代码分析方法、装置、电子设备和存储介质
CN110321130B (zh) 基于系统调用日志的不可重复编译定位方法
Shin et al. Automatic static bug detection for machine learning libraries: Are we there yet?
Xiao et al. Performing high efficiency source code static analysis with intelligent extensions
Huihui et al. Optimizing demand‐driven null dereference verification via merging branches
Zhang et al. ReInstancer: An automatic refactoring approach for Instanceof pattern matching
CN118502732B (zh) 字节码程序的分析方法、装置、设备和介质
Xu et al. A simplified-syntax-based static structure model for embedded software analysis
CN115757119A (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