【技术实现步骤摘要】
一种基于符号执行对智能合约功能属性进行形式化验证的方法及系统
[0001]本专利技术涉及计算机安全
,尤其涉及一种基于符号执行对智能合约功能属性进行形式化验证的方法及系统。
技术介绍
[0002]智能合约是一种无需中介、自我验证、自动执行合约条款的计算机交易协议。区块链技术去中心化和数据防篡改等特性,解决了智能合约的信任问题,因此使得智能合约更适合在区块链上进行实现。智能合约作为一种能自动执行合约条款的计算机程序,对于正确性及其他属性具有较高要求,需要尽量避免语法和语义错误,以保证用户的财产安全。目前的审计实践通常检测两类问题:1.通用安全错误,例如重入和溢出;2.自定义功能属性,例如“存款总额永远不会超过合约的余额”和“代币总额不会发生变化”。前者主要通过自动化测试的方法检测,后者则需要形式化方法来验证。
[0003]形式化方法的本质是基于数学的方法来描述目标软件系统属性的一种技术,适用于计算机软硬件系统的规范、开发和验证。形式化验证是使用基于数学变换的静态分析方法来确定程序规范和代码行为,如从协议规约出发验 ...
【技术保护点】
【技术特征摘要】
1.一种基于符号执行对智能合约功能属性进行形式化验证的方法,首先将自定义功能属性形式化为属性断言,然后抽象该属性断言通过符号执行尝试可归纳性验证,若其具有可归纳性,则可直接证明;若其不具有可归纳性,则通过深度的符号执行不断扩充可达抽象状态集,迭代计算可达抽象状态的不动点,最终从不动点去尝试推导属性断言,若均能成功推导,则已证明了该属性断言,否则,尝试构造反例输出;具体包括如下步骤:1)接收一个或多个合约C1,C2…
C
m
以及输入一系列自定义属性断言φ1,φ2…
φ
n
,将属性断言进行等价变换,变换为
□
φ1’
,
□
φ2’…□
φ
n
’
的形式,其中
□
φ
i
’
表示属性断言φ
i
’
恒成立,m、n、i代表自然数;2)将输入的一系列合约合并为一个合约C0;3)根据属性断言在合约相应的位置添加新属性变量,插入监测代码,得到插桩合约C
φ
,其包含函数{f1,f2…
f
k
},其中k代表自然数;4)根据插桩合约C
φ
及等价变换后的属性断言
□
φ1’
,
□
φ2’…□
φ
n
’
解析所需的抽象状态α;5)对于一条需要验证的属性断言φ
’
,通过init来构建初始化的抽象状态α
init
,检查在α
init
下属性断言是否成立,若成立则进入步骤6,不成立则插桩合约C
φ
不满足属性断言φ
’
,即证明了输入合约C1,C2…
C
m
不满足属性断言φ;6)将初始化的抽象状态α
init
转换为初始符号状态集S0{s
10
,s
20
…
s
m0
};7)以初始符号状态集中各状态为初始状态,执行函数f
i
,得到符号状态集S
i
{s
1i
,s
2i
…
s
mi
},并转化为抽象状态集A
i
{α
1i
,α
2i
…
α
mi
};8)若对于某属性断言φ
’
生成的初始符号状态集S0分别执行{f1,f2…
f
k
}得到的符号状态集S
i
及其对应的抽象状态集A
i
,若φ
’
均仍然成立,则φ
’
是可归纳证明属性断言且φ
’
恒成立,即证明了输入合约C1,C2…
C
m
满足属性断言φ;若不成立,则进入步骤9;9)根据步骤5)中构建的初始化的抽象状态α
init
,初始化可达抽象状态集合reach(C
φ
)0={α
init
};10)以符号方式执行一次while循环,调用f
i
,并在交易结束后计算精确的符号状态s,s实际上是不同路径约束p1∪p2∪
…
∪p
k
的所有可能,包括s1,s2…
s
...
【专利技术属性】
技术研发人员:文伟平,肖遥,刘宇航,胡叶舟,刘军杰,方莹,
申请(专利权)人:北京大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。