火星链 火星链
Ctrl+D收藏火星链

CHE:一个案例说明高层属性形式化验证-ODAILY

作者:

时间:1900/1/1 0:00:00

验证软件功能介绍

01

Beosin-VaaS的业务逻辑验证软件,是一款用来检测智能合约上层业务逻辑漏洞的软件。

基于合约的白皮书,软件利用形式化方法,首先对单个函数进行属性的描述,在对单个函数进行属性的验证并通过后,基于这些已验证属性,抽取出高层的状态属性,进而对上层属性进行自动推理和验证,若属性不满足,则会返回一条反例路径。

案例介绍

02

我们可以以下面这个案例来举例说明。

法国总统马克龙:欧洲的文化机构应该制定一个NFT政策:金色财经报道,法国加密网站The Big Whale周五发表了对总统Emmanuel Macron的采访,马克龙表示,法国将密切关注该案文不会阻碍创新,并在技术方面尽可能保持中立。正在发生的事情也应该让我们在数字欧元的主题上更快地采取行动。马克龙还对欧洲人在web3和元宇宙的发展中不被落下表示关注。马克龙称,我的愿望是让欧洲成为一个核心参与者,我想特别确保欧洲的参与者掌握与web3和元宇宙相关的技术构件,以便不依赖美国或中国的巨头。马克龙还称,欧洲的文化机构应该制定一个NFT政策。[2022/4/25 14:46:16]

Coincaex交易所或将成为第一个在萨尔瓦多推出的海外加密交易所:一家名为Coincaex的危地马拉加密货币交易所或将成为第一个在萨尔瓦多推出的海外加密交易平台。该交易所计划在本月底之前向萨尔瓦多的交易者开放。(Cryptonews)[2021/6/23 0:00:48]

这里我们考虑进行一次众筹,目标是在部署后deadline时间内,收集fundingGoal个以太币。如果在该期间收集到相应数额个以太币,则表明众筹成功,在这种情况下,受益人可以提取资金。否则,将认为众筹失败,并允许用户要求退款。众筹合约本身继承了token合约,并直接收集众筹期间投入的所有资金。

“shib会是下一个狗狗币吗“登上知乎热搜榜第二名:知乎热搜榜显示,“shib”登上知乎热搜榜,目前“shib会是下一个狗狗币吗“以1532万热度位居热搜榜第二名。[2021/5/9 21:41:09]

具体合约和函数说明

03

我们可以进一步得知,该项目包含了一个Crowdsale合约,继承一个token合约。

在众筹合约中,构造函数会初始化设置众筹的截止时间deadline,并添加众筹目标额度fundingGoal,并在合约中硬编码受益人的地址beneficiary;

然后会提供回调函数,提供给用户来参与投资,在开放众筹期间,只要未达到目标额度,就允许所有用户进行投资;

国家邮政局发展研究中心主任助理:在快递物流领域,区块链也可以建成一个可信任的联盟体系:国家邮政局发展研究中心主任助理方玺在一个会议上分享了中国快递物流领域区块链发展及未来趋势。他表示,区块链可以实现实时交互,降低成本,保证数据安全,这为中国快递物流广泛应用区块链技术形成了很好的机遇和空间。在快递物流领域,区块链也可以建成一个可信任的联盟体系,发挥合力降低信任成本,推动区块链技术应用和商业模式创新,促进区块链技术在中国快递物流领域又快、又稳、又好地发展。[2018/5/18]

提供一个checkGoalReached()函数,如果达到众筹目标,或者达到了截止时间,就可以修改状态标识,关闭众筹;

然后会提供响应的transfer()和issue()函数接口,用于在众筹分配代币,以及能够进行代币的交易

提供一个safeWithdrawal()函数,如果众筹成功,受益人能够取出投资人的钱;

最后还提供一个safeClaimRefund()退款接口,如果众筹失败,用户可以通过该接口完成撤资。

结果分析和说明

04

我们这里已经完成了单个函数的属性验证,可以确认单个函数的功能是符合其属性规范的,在此基础上,编写上层属性进行验证。

以下,我们编写的上层属性有两条,一条是p1,含义是总是能够满足,一旦调用了safeWithdrawal()或者safeClaimRefund(),另一个函数就不能够被成功调用。

P1:

得到输出结果,可以看到属性2是满足的,而属性1并不满足。我们查看一下反例的可视化路径,可以看到,确实存在一条路径,safeWithdrawal()函数和safeClaimRefund()函数可以先后被执行成功。

回到合约中,根据所提供的反例路径,可以看到,发生该情况是调用回调函数一段时间后,当前时间超过了众筹的截止时间,众筹的资金总量没有达到目标fundingGoal,在checkGoalReached()关闭众筹之后,此时的合约状态,用户是可以调用safeClaimRefund选择退款的。

但是我们可以从结果中发现,此时依旧可以调用成功回调函数投资,那么就出现了后面的状态可能,在众筹失败之后,依旧有用户有意或者无意参与了投资,导致投资的总额超过了目标。

此时,能够再次调用checkGoalReached()函数结束众筹,改变状态标识,最终受益人能够在按原始需求,众筹失败的情况下,且有用户选择退款之后,依旧调用checkGoalReached()取出了所有的投资资金。

最终回到合约,我们发现,其实是由于用于投资的回调函数缺少了检查当前事件是否超过了截止日期,进而导致的合约漏洞。

可以看到,在该例子中,所有的函数其实是满足其自身的属性并实现了相应的功能的,但是由于在合约之间、函数之间的调用和关联关系,才导致出现了这样一个漏洞。而该属性验证工具的作用也在于此,它能够更加高效地发现逻辑属性漏洞。

标签:CHEFUNUNDGOALCHEDDA币YFUNI FinanceSundaeSwapGOALS价格

比特币价格今日行情热门资讯
COIN:1.17比特币实时行情分析:币圈套路哪家强?-ODAILY

减半行情开始了吗?让我们来看看其他的减半币种:3月减半的ETC,1月1日4.5美元,最高价7.9美元,涨幅75%;4月减半的BCH,1月1日204.6美元,最高价369美元.

1900/1/1 0:00:00
GMT:行情分析:减半与销毁,牛市的催化剂?-ODAILY

摘要:昨日至今,大盘有所反弹,山寨币的表现略显强势,但场外资金流入放缓,短时区间震荡为主。对比主流平台币的K线可以发现,销毁对项目自身利好的影响,在大盘上涨的背景下更为明显,而且销毁力度越大,市.

1900/1/1 0:00:00
UNIT:3.21比特币行情分析:为何你一直在亏损?-ODAILY

都知道今年是减半行情,想着在减半行情的时候大赚一笔,但是从历史减半行情来看,大家都忘记减半行情之前都会有一波大跌行情吗?苏哲之前就和朋友说过.

1900/1/1 0:00:00
EFI:DeFi峰会:DeFi Discussions-ODAILY

缩小知识鸿沟,帮助开发者构建更好的DeFi产品,让交易者使用DeFi,而不仅仅是空谈。DeFiDiscussions是由DystopiaLabs举办的一次线上DeFi峰会.

1900/1/1 0:00:00
比特币:大盘涨跌变化间,你被震下车了吗?-ODAILY

一夜之间,大盘形势骤变。BTC和ETH一举收复之前的回撤空间,市场多头力量强劲。但减产币BCH、BSV、ETC并未有效反弹,只是稍微有所跟随,之前的下跌幅度依旧没有修复.

1900/1/1 0:00:00
RUM:脸肿了一天,熟悉的狗庄又回来了-ODAILY

首先跟各位道个歉,我昨晚看多,结果今天脸都被打肿了行情总是无法预测,睡觉前行情还算稳定,看起来要要继续冲击7000了.

1900/1/1 0:00:00