CN117436091B - 基于模型检测的区块链众筹合约形式化验证方法 - Google Patents
基于模型检测的区块链众筹合约形式化验证方法 Download PDFInfo
- Publication number
- CN117436091B CN117436091B CN202311771980.0A CN202311771980A CN117436091B CN 117436091 B CN117436091 B CN 117436091B CN 202311771980 A CN202311771980 A CN 202311771980A CN 117436091 B CN117436091 B CN 117436091B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- contract
- library
- code
- crowd
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000012795 verification Methods 0.000 title claims abstract description 44
- 238000001514 detection method Methods 0.000 title claims abstract description 24
- 230000004069 differentiation Effects 0.000 claims abstract description 9
- 238000012038 vulnerability analysis Methods 0.000 claims abstract description 7
- 230000008569 process Effects 0.000 claims description 35
- 230000007704 transition Effects 0.000 claims description 33
- 230000006870 function Effects 0.000 claims description 22
- 238000010586 diagram Methods 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 230000009471 action Effects 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 4
- 230000003068 static effect Effects 0.000 claims description 4
- 238000001914 filtration Methods 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims description 3
- 230000036962 time dependent Effects 0.000 claims description 2
- 238000011835 investigation Methods 0.000 abstract description 3
- 238000007689 inspection Methods 0.000 abstract description 2
- 238000012512 characterization method Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002730 additional effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/22—Design optimisation, verification or simulation using Petri net models
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)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于模型检测的区块链众筹合约形式化验证方法,涉及众筹类区块链智能合约安全技术领域,解决了众筹合约应用场景缺少专用的安全解决方案的技术问题。本发明包括:对获取的智能合约代码进行漏洞分析,对存在漏洞的智能合约代码进行优化;对优化的智能合约代码或不存在漏洞的智能合约代码进行模块分化,对分化的模块进行形式化建模,得到智能合约代码模型;声明智能合约满足的性质规约,性质规约包括可达性、有界性和安全性;根据性质规约,通过智能合约代码模型对智能合约进行形式化验证。本发明快速、有效实现众筹合约上链前的漏洞排查,为众筹合约的形式检查提供了专业的解决方案。
Description
技术领域
本发明涉及众筹类区块链智能合约安全技术领域,尤其涉及一种基于模型检测的区块链众筹合约形式化验证方法。
背景技术
区块链3.0智能化物联网时代为各种行业提供去中心化解决方案,其应用领域扩展到人类生活的方方面面,在各类社会活动中实现信息的兹证明,不再依靠某个第三人或者机构获取信任或者建立信任,实现信息的共享,包括在司法、医疗、物流等各个领域,区块链技术可以解决信任问题,提高整个系统的运转效率。
在区块链3.0时代,基于区块链技术的应用场景层出不穷,智能合约的重要性进一步彰显。然而,部署在区块链上的智能合约具有不可修改、与高价值数字资产紧密相关等特点,因此在智能合约上链之前的正确性显得尤为重要。由于区块链去中心化的特性,众筹类型的合约应用范围十分广泛,然而目前业内缺少有针对众筹合约应用场景专用的安全解决方案,导致这些智能合约容易在开发时出现安全漏洞。
发明内容
本发明的目的在于提供一种基于模型检测的区块链众筹合约形式化验证方法,以解决上述技术问题。本发明提供的诸多技术方案中的优选技术方案所能产生的诸多技术效果详见下文阐述。
为实现上述目的,本发明提供了以下技术方案:
本发明提供的一种基于模型检测的区块链众筹合约形式化验证方法,包括如下步骤:
对获取的智能合约代码进行漏洞分析,对存在漏洞的所述智能合约代码进行优化;
对优化的所述智能合约代码或不存在漏洞的所述智能合约代码进行模块分化,对分化的模块进行形式化建模,得到智能合约代码模型;
声明智能合约满足的性质规约;所述性质规约包括可达性、有界性和安全性;所述可达性、有界性为功能属性;
根据所述性质规约,通过所述智能合约代码模型对所述智能合约进行形式化验证。
进一步地,所述对获取的智能合约代码进行漏洞分析,包括如下步骤:
采用静态分析方法对所述智能合约代码进行分析,画出所述智能合约的流程图;将所述智能合约代码与所述流程图相结合,排查所述智能合约代码的漏洞。
进一步地,所述对存在漏洞的所述智能合约代码进行优化,包括:
在所述智能合约的代码中添加对时间戳的验证和过滤机制,排除时间戳依赖漏洞;采用断言语句来检查智能合约执行过程中的状态,在关键节点添加断言语句,排除异常处理漏洞;在所述智能合约代码中对输入的数值进行范围检查和边界验证,排除整数溢出漏洞。
进一步地,所述对优化的所述智能合约代码进行模块分化,对分化的模块进行形式化建模,包括:
将所述智能合约代码中的每个函数和函数的方法对应模块化的事件和用户操作;确定触发每个所述事件的动作对象和接收位置的目标对象;确定每个动作对象和每个目标对象所有的状态;理清所述事件的先后顺序和所述事件之间的交互情况,绘制出每个所述事件和所述用户操作的Petri网状态模型图。
进一步地,所述对优化的所述智能合约代码进行模块分化,对分化的模块进行形式化建模,还包括:
为每个模块化的所述用户操作设置不同的名字,并在作用域内进行参数、变量声明;将每个所述用户操作抽象成所处的状态;声明定义所述Petri网状态模型图的相关库所、变迁;创建所述用户操作相关进程,编写进程体;初始化进程;其中,所述所处的状态为所述用户操作在某个时间段内变量对应的值。
进一步地,所述库所包括用户账户库所、用户账户代币数目库所、缓冲库所、合约账户库所。
进一步地,所述库所包括令牌,所述令牌用于表示变迁的条件是否满足。
进一步地,所述可达性通过所述库所是否拥有相应的令牌来确定所述智能合约是否具有可达性;所述有界性通过所述库所的令牌的最大值来确定所述智能合约是否具有有界性;若所述智能合约受到攻击,所述库所的令牌值出现异常,表明所述智能合约在所述安全性方面存在问题;其中,每一个库所都会在某个阶段或者各个阶段都拥有令牌。
进一步地,所述编写进程体包括:
在进程体内,赋予各个所述库所的令牌的令牌数;将所述令牌数与相关库所进行关联;编写触发各个所述变迁的变迁条件及变迁结果;其中,所述变迁结果为所述库所的令牌的变化数。
进一步地,在通过所述智能合约代码模型对所述智能合约进行形式化验证过程中,采用时序逻辑规约刻画所述智能合约的对应的可达性、有界性和安全性;所述时序逻辑规约能时刻表现出所述智能合约随时间的变化,用于保证所述智能合约的整体的安全属性和功能属性。
实施本发明上述技术方案中的一个技术方案,具有如下优点或有益效果:
本发明提供了一种基于模型检测的区块链众筹智能合约形式化验证方法,针对众筹智能合约存在的安全与可信问题,将基于模型检测的形式化方法用于众筹智能合约的验证,从形式化建模和性质刻画方面建立了安全的形式规范,并转化为可形式化验证的模型,进而快速、有效实现众筹合约上链前的漏洞排查,为众筹智能合约的形式检查提供了专业的解决方案。
另一方面,本方法不仅对智能合约代码明显漏洞进行检查,还从模型检查角度对智能合约进行安全和功能方面进行了形式检查。因此,保障了智能合约形式检查的全面性,更为进一步保障了智能合约上链前的安全性能。
本发明能有效提升区块链众筹智能合约的安全性和可靠性,对于同类智能合约的形式验证具有良好的通用性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,附图中:
图1是本发明实施例的一种基于模型检测的区块链众筹合约形式化验证方法的流程图;
图2是本发明实施例的一种区块链众筹合约的模型检测方法的流程图;
图3是本发明实施例的众筹智能合约的存款操作的形式验证Petri网络图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下文将要描述的各种示例性实施例将要参考相应的附图,这些附图构成了示例性实施例的一部分,其中描述了实现本发明可能采用的各种示例性实施例。除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。应明白,它们仅是与如所附权利要求书中所详述的、本发明公开的一些方面相一致的流程、方法和装置等的例子,还可使用其他的实施例,或者对本文列举的实施例进行结构和功能上的修改,而不会脱离本发明的范围和实质。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明,仅示出了与本发明实施例相关的部分。
如图1-图2所示,本发明提供了一种基于模型检测的区块链众筹合约形式化验证方法,包括如下步骤:
S1、对获取的智能合约代码进行漏洞分析,对存在漏洞的智能合约代码进行优化;
S2、对优化的智能合约代码或不存在漏洞的智能合约代码进行模块分化,对分化的模块进行形式化建模,得到智能合约代码模型;
S3、声明智能合约满足的性质规约;性质规约包括可达性、有界性和安全性;
S4、根据性质规约,通过智能合约代码模型对智能合约进行形式化验证。其中,对不符合形式化验证的智能合约,定位到智能合约代码中的错误代码并指明错误原因;对符合形式化验证的智能合约显示验证通过。进一步地,对于不符合形式化验证的智能合约,可能是由于建模或刻画性质的方法有漏洞,需要进行相应的研究并修复错误,并对修复的智能合约进行迭代验证。
本实施例提供了一种基于模型检测的区块链众筹合约形式化验证方法,针对众筹的智能合约存在的安全与可信问题,将基于模型检测的形式化方法用于智能合约的验证,从形式化建模和性质刻画方面建立了安全的形式规范,并转化为可形式化验证的模型,进而快速而有效实现智能合约上链前的漏洞排查;另一方面,本方法不仅对智能合约代码明显漏洞进行检查,还从模型检查角度对智能合约进行安全和功能方面进行形式检查,因此,保障了智能合约形式检查的全面性,更为进一步保障了智能合约上链前的安全性能。此外,本方法的应用不限于区块链众筹的智能合约形式化验证,与区块链众筹的智能合约类似的其他合约均可适用本方法。
需说明的是,对于智能合约的修复,可以增加一些辅助性质或约束条件来修复原有建模或刻画性质的方法的漏洞。这些附加性质可以辅助证明原本难以证明的主要性质,通过验证这些附加性质来间接验证目标性质。
需说明的是,步骤S3的执行顺序可以是在步骤S2之前,也可是在步骤S4之前。
本实施例中,众筹对应的智能合约包含的对象包括筹款接受机构、筹款目标、筹款人、其对应的筹款金额、总筹款金额等数据项。智能合约的功能流程为筹款组织者发起筹款合约对特定机构或项目进行筹款,多用户可以参与到该筹款合约中进行代币的存取。进一步地,本示例的智能合约基本由五个方法构成:
(1)构造函数(constructor),主要用来在创建智能合约对象时初始化对象,当合约本身附带有代币时,该合约必须有构造函数存在;
(2)转账函数(withDraw),该函数中主要采用call.value()方法进行代币转账,其他合约可通过外部调用该函数从该合约中往自己的账户中转入以太币;
(3)接收函数(receiveEther)用于用户向当前合约存入代币时,更新该用户的账户余额;
(4)显示余额函数(showAccount)用于显示当前合约中剩余的代币数量;
(5)回调函数(fallback)是合约中的无名函数,当一个合约能够接收代币时,其合约中必须带有回调函数。需重点注意合约中的回调函数,智能合约中很多漏洞都是由于回调函数机制引起的。
作为一种可选的实施方式,对获取的智能合约代码进行漏洞分析,包括如下步骤:
采用静态分析方法对智能合约代码进行分析,画出智能合约的流程图;将智能合约代码与流程图相结合,排查智能合约代码的漏洞。其中,漏洞包括时间戳依赖、错误的异常处理、整数溢出。
本示例中使用静态分析的方法用于画出合约的流程图,明确流程的功能。将源代码和流程图相结合,排除直观的错误,如上述时间戳依赖、错误的异常处理、整数溢出等常见智能合约漏洞。若合约代码中存在明显的安全漏洞,则需要对合约代码进行优化。
作为一种可选的实施方式,针对智能合约的时间戳依赖漏洞,可在智能合约代码中添加对时间戳的验证和过滤机制,以排除异常或不合理的时间戳。这样可以确保智能合约只接受合理范围内的时间戳,减少可能得攻击或异常情况的影响。
作为一种可选的实施方式,针对智能合约异常处理漏洞,可使用断言语句来检查智能合约执行过程中的状态。通过在关键节点添加断言语句,可以确保在预期情况下,智能合约不会出现其他意外的状态,进而减少异常情况的发生。
作为一种可选的实施方式,针对智能合约的整数溢出漏洞,可在智能合约代码中对输入的数值进行范围检查和边界验证。确保输入的数值在合理的范围内,避免超出数据类型表示范围的数值进入计算过程。
作为一种可选的实施方式,步骤2中,对优化的智能合约代码进行模块分化,对分化的模块进行形式化建模,包括:
将智能合约代码中的每个函数(转账函数、接收函数、显示余额函数、回调函数)和函数的方法对应模块化的事件和用户操作;确定触发每个事件的动作对象和接收位置的目标对象;确定每个动作对象和每个目标对象所有的状态;理清事件的先后顺序和事件之间的交互情况,绘制出每个事件和用户操作的Petri网状态模型图(以下简称Petri网)。
需说明的是,本实施例中的Petri网状态模型图中包括库所和变迁,库所的作用是决定是否发生迁移,库所用圆形表示;变迁的作用是改变状态,变迁用矩形表示。两者之间可以通过有方向的弧进行相互连接,有向弧代表各个状态之间的转移。
作为一种可选的实施方式,对优化的智能合约代码进行模块分化,对分化的模块进行形式化建模,还包括:
为每个模块化的用户操作设置不同的名字,并在作用域内进行参数、变量声明;将每个用户操作抽象成所处的状态;声明定义Petri网状态模型图的相关库所、变迁;创建用户操作相关进程,编写进程体;初始化进程。其中,所处的状态为用户操作在某个时间段内变量对应的值。需说明的是,本步骤是将状态模型图转换为Promela模型,为了得到正确的智能合约模型,需要在建模的每个阶段进行多次修改和完善。
进一步地,编写进程体包括:
在进程体内,赋予各个库所的令牌的令牌数;将令牌数与相关库所进行关联;编写触发各个变迁的变迁条件及变迁结果;其中,变迁结果为库所的令牌的变化数。
进一步地,库所包括用户账户库所、用户账户代币数目库所、缓冲库所、合约账户库所。其中,库所包括令牌,令牌用于表示变迁的条件是否满足。
作为一种可选的实施方式,步骤S3中,可达性通过库所是否拥有相应的令牌来确定智能合约是否具有可达性;有界性通过库所的令牌的最大值来确定智能合约是否具有有界性;若智能合约受到攻击,库所的令牌值出现异常,表明智能合约在安全性方面存在问题;其中,每一个库所都会在某个阶段或者各个阶段都拥有令牌。
作为一种可选的实施方式,步骤S4中,在通过智能合约代码模型对智能合约进行形式化验证过程中,采用时序逻辑规约刻画智能合约的对应的可达性、有界性和安全性;时序逻辑规约能时刻表现出智能合约随时间的变化,用于保证智能合约的整体的安全属性(安全性)和功能属性(可达性、有界性)。
需说明的是,在步骤S4中,利用S3步骤中的性质规约以及模型检测工具(如SPIN)对所建立的智能合约代码模型进行形式化验证,发现智能合约中存在的安全漏洞,并验证智能合约的关键属性。
作为一种示例,如图3所示,对众筹智能合约中的存款操作(Save操作)进行Petri网建模。圆圈代表Petri网中的库所,方框代表变迁,有向弧代表各个状态之间的转移,库所中的令牌作用是表示条件是否满足。具体的,Save操作的Petri网包含P1用户账户库所、P2用户账户代币数目库所、P3缓冲库所、P4合约账户库所。其中T1和T2是两个变迁,T1为满足两个必要条件的变迁,T2为Save操作变迁。本示例形式验证模型的原理如下:
若一个用户想要将代币存入智能合约,其要满足两个必要条件(T1):一是该用户账户存在且合理,二是该用户账户中的代币数量大于0。若满足这两个必要条件,则该合约执行存入操作,将代币存入该合约账户,并及时更新该账户的代币的余额数。
通过Promela语言对Save操作的Petri网进行建模,建模过程可以分为以下四步,分别为:
(1)声明定义相关库所、变迁,其中,库所以通道关键字(chan)进行声明,例如chanp=[] of {byte},变迁通过字节关键字(byte)进行声明;
(2)创建操作相关进程,以关键字proctype声明进程,设定进程名,并通过关键字active修饰进程,可创建进程实例,例如active proctype Name(){};
(3)编写进程体,在进程体内,首先要赋予各个库所令牌的令牌数,然后将其与相关库所进行关联,最后编写触发各个变迁的变迁条件及变迁结果,即库所令牌的变化数;
(4)初始化进程,以关键字init初始化进程,Promela中的关键字可等价于C语言中的main(),决定进程的开始运行,并在init()中创建进程实例。
在Petri网中,智能合约有多种性质,比如可达性、有界性、安全性等,其中可达性和有界性是系统中的关键性质,可达性决定系统是否可以正常运行完成各个流程,有界性决定系统是否会产生爆炸性空间。针对众筹合约,在步骤3中,使用线性时序逻辑规约公式LTL刻画智能合约应满足的可达性及有界性。具体的:
可达性可通过是否拥有库所令牌来确定智能合约是否具有可达性,即每一个库所都会在某个阶段或者各个阶段都拥有库所令牌,用LTL公式可描述为:![](pt==0),其中pt可代表任意库所的库所令牌。
以上描述的含义为pt不是总是为0,若该结果验证正确,则说明pt不总是为0,也就证明库所在某个阶段或者各个阶段都拥有库所令牌,即具有可达性;若以上结果验证错误,则说明pt总是为0,即不具有可达性。
有界性可通过库所令牌的最大值来确定智能合约是否具有有界性,在众筹合约中,库所令牌的最大值为1,用LTL公式可描述为:[](pt<=1),其中pt可代表所有库所的库所令牌集合。
以上描述的含义为:pt总是小于等于1的,若该结果验证正确,则说明智能合约具有有界性;若以上结果验证错误,则说明智能合约不具有有界性,甚至会产生爆炸空间。
若智能合约没有面临攻击,合约能够正常执行并结果无误;若智能合约受到攻击,库所的令牌值出现异常,说明合约存在安全漏洞。
综上所述,本实施例提供了一种基于模型检测的区块链众筹智能合约形式化验证方法,针对众筹智能合约存在的安全与可信问题,将基于模型检测的形式化方法用于众筹智能合约的验证,从形式化建模和性质刻画方面建立了安全的形式规范,并转化为可形式化验证的模型,进而快速而有效实现众筹合约上链前的漏洞排查。
以上所述仅为本发明的较佳实施例而已,本领域技术人员知悉,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等同替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明的保护范围。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
Claims (8)
1.一种基于模型检测的区块链众筹合约形式化验证方法,其特征在于,包括如下步骤:
对获取的智能合约代码进行漏洞分析,对存在漏洞的所述智能合约代码进行优化;
对优化的所述智能合约代码或不存在漏洞的所述智能合约代码进行模块分化,对分化的模块进行形式化建模,得到智能合约代码模型;
声明智能合约满足的性质规约;所述性质规约包括可达性、有界性和安全性;所述可达性、有界性为功能属性;
根据所述性质规约,通过所述智能合约代码模型对所述智能合约进行形式化验证;
所述对优化的所述智能合约代码进行模块分化,对分化的模块进行形式化建模,包括:
将所述智能合约代码中的每个函数和函数的方法对应模块化的事件和用户操作;确定触发每个所述事件的动作对象和接收位置的目标对象;确定每个动作对象和每个目标对象所有的状态;理清所述事件的先后顺序和所述事件之间的交互情况,绘制出每个所述事件和所述用户操作的Petri网状态模型图;为每个模块化的所述用户操作设置不同的名字,并在作用域内进行参数、变量声明;将每个所述用户操作抽象成所处的状态;声明定义所述Petri网状态模型图的相关库所、变迁;创建所述用户操作相关进程,编写进程体;初始化进程;
其中,所述所处的状态为所述用户操作在某个时间段内变量对应的值。
2.根据权利要求1所述的一种基于模型检测的区块链众筹合约形式化验证方法,其特征在于,所述对获取的智能合约代码进行漏洞分析,包括如下步骤:
采用静态分析方法对所述智能合约代码进行分析,画出所述智能合约的流程图;将所述智能合约代码与所述流程图相结合,排查所述智能合约代码的漏洞。
3.根据权利要求1所述的一种基于模型检测的区块链众筹合约形式化验证方法,其特征在于,所述对存在漏洞的所述智能合约代码进行优化,包括:
在所述智能合约的代码中添加对时间戳的验证和过滤机制,排除时间戳依赖漏洞;采用断言语句来检查智能合约执行过程中的状态,在关键节点添加断言语句,排除异常处理漏洞;在所述智能合约代码中对输入的数值进行范围检查和边界验证,排除整数溢出漏洞。
4.根据权利要求1所述的一种基于模型检测的区块链众筹合约形式化验证方法,其特征在于,所述库所包括用户账户库所、用户账户代币数目库所、缓冲库所、合约账户库所。
5.根据权利要求1所述的一种基于模型检测的区块链众筹合约形式化验证方法,其特征在于,所述库所包括令牌,所述令牌用于表示变迁的条件是否满足。
6.根据权利要求5所述的一种基于模型检测的区块链众筹合约形式化验证方法,其特征在于,所述可达性通过所述库所是否拥有相应的令牌来确定所述智能合约是否具有可达性;
所述有界性通过所述库所的令牌的最大值来确定所述智能合约是否具有有界性;
若所述智能合约受到攻击,所述库所的令牌值出现异常,表明所述智能合约在所述安全性方面存在问题;
其中,每一个库所都会在某个阶段或者各个阶段都拥有令牌。
7.根据权利要求5所述的一种基于模型检测的区块链众筹合约形式化验证方法,其特征在于,所述编写进程体包括:
在进程体内,赋予各个所述库所的令牌的令牌数;将所述令牌数与相关库所进行关联;编写触发各个所述变迁的变迁条件及变迁结果;其中,所述变迁结果为所述库所的令牌的变化数。
8.根据权利要求1所述的一种基于模型检测的区块链众筹合约形式化验证方法,其特征在于,在通过所述智能合约代码模型对所述智能合约进行形式化验证过程中,采用时序逻辑规约刻画所述智能合约的对应的可达性、有界性和安全性;所述时序逻辑规约能时刻表现出所述智能合约随时间的变化,用于保证所述智能合约的整体的安全属性和功能属性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311771980.0A CN117436091B (zh) | 2023-12-21 | 2023-12-21 | 基于模型检测的区块链众筹合约形式化验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311771980.0A CN117436091B (zh) | 2023-12-21 | 2023-12-21 | 基于模型检测的区块链众筹合约形式化验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117436091A CN117436091A (zh) | 2024-01-23 |
CN117436091B true CN117436091B (zh) | 2024-04-12 |
Family
ID=89548422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311771980.0A Active CN117436091B (zh) | 2023-12-21 | 2023-12-21 | 基于模型检测的区块链众筹合约形式化验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117436091B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062038A (zh) * | 2019-11-23 | 2020-04-24 | 同济大学 | 一种基于状态空间的智能合约形式化验证系统及方法 |
CN111179056A (zh) * | 2019-12-20 | 2020-05-19 | 杭州趣链科技有限公司 | 一种众筹智能合约的形式验证方法 |
CN112699375A (zh) * | 2020-12-30 | 2021-04-23 | 杭州趣链科技有限公司 | 基于网络嵌入相似性的区块链智能合约安全漏洞检测方法 |
CN115470498A (zh) * | 2022-09-23 | 2022-12-13 | 辽宁工程技术大学 | 一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法 |
CN116820468A (zh) * | 2022-03-21 | 2023-09-29 | 郑州轻工业大学 | 智能合约代码转化与检测方法、装置、设备和介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11481499B2 (en) * | 2019-08-05 | 2022-10-25 | Visa International Service Association | Blockchain security system |
-
2023
- 2023-12-21 CN CN202311771980.0A patent/CN117436091B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062038A (zh) * | 2019-11-23 | 2020-04-24 | 同济大学 | 一种基于状态空间的智能合约形式化验证系统及方法 |
CN111179056A (zh) * | 2019-12-20 | 2020-05-19 | 杭州趣链科技有限公司 | 一种众筹智能合约的形式验证方法 |
CN112699375A (zh) * | 2020-12-30 | 2021-04-23 | 杭州趣链科技有限公司 | 基于网络嵌入相似性的区块链智能合约安全漏洞检测方法 |
CN116820468A (zh) * | 2022-03-21 | 2023-09-29 | 郑州轻工业大学 | 智能合约代码转化与检测方法、装置、设备和介质 |
CN115470498A (zh) * | 2022-09-23 | 2022-12-13 | 辽宁工程技术大学 | 一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法 |
Non-Patent Citations (3)
Title |
---|
众筹区块链上的智能合约设计;黄洁华;高灵超;许玉壮;白晓敏;胡凯;;信息安全研究;20170305(03);第21-29页 * |
区块链智能合约安全的逆向实时模型检测方法;李书霞 等;《小型微型计算机系统》;20201015(第10期);第2030-2035页 * |
区块链智能合约安全的逆向实时模型检测方法;李书霞;王国卿;庄雷;;小型微型计算机系统;20201015(10);第2030-2035页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117436091A (zh) | 2024-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Abdellatif et al. | Formal verification of smart contracts based on users and blockchain behaviors models | |
Wassermann et al. | An analysis framework for security in web applications | |
Yu et al. | Relational string verification using multi-track automata | |
Carmona et al. | New region-based algorithms for deriving bounded Petri nets | |
US9760469B2 (en) | Analysis of program code | |
Bodden | The secret sauce in efficient and precise static analysis: The beauty of distributive, summary-based static analyses (and how to master them) | |
Namjoshi et al. | On the completeness of compositional reasoning methods | |
Weidlich et al. | Efficient computation of causal behavioural profiles using structural decomposition | |
David et al. | Unrestricted termination and non-termination arguments for bit-vector programs | |
Naeem et al. | Scalable mutation testing using predictive analysis of deep learning model | |
CN117436091B (zh) | 基于模型检测的区块链众筹合约形式化验证方法 | |
US8849626B1 (en) | Semantic translation of stateflow diagrams into input/output extended finite automata and automated test generation for simulink/stateflow diagrams | |
Ayav et al. | Identifying critical architectural components with spectral analysis of fault trees | |
Bérard et al. | Non-interference in partial order models | |
Abdulla et al. | Universal safety for timed Petri nets is PSPACE-complete | |
US8572594B2 (en) | Invasion analysis to identify open types | |
Yu et al. | A Points-to-Sensitive Model Checker for C Programs in IoT Firmware | |
Focardi et al. | Proofs methods for bisimulation based information flow security | |
Mohamed et al. | A control flow representation for component-based software reliability analysis | |
Thacker et al. | A new verification method for embedded systems | |
CN115037648B (zh) | 基于数据流约简的智能合约测试用例生成方法及系统 | |
Ge et al. | Time properties dedicated semantics for uml-marte safety critical real-time system verification | |
Westland et al. | Semi-Automatic Bug Generation Using Test Case Negation | |
Cerna et al. | Better space bounds for future-looking stream monitors | |
Chu | Blockchain Smart Contract Threat Detection Technology Based on Symbolic Execution |
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 |