验证软件功能介绍
01
Beosin-VaaS的业务逻辑验证软件,是一款用来检测智能合约上层业务逻辑漏洞的软件。
基于合约的白皮书,软件利用形式化方法,首先对单个函数进行属性的描述,在对单个函数进行属性的验证并通过后,基于这些已验证属性,抽取出高层的状态属性,进而对上层属性进行自动推理和验证,若属性不满足,则会返回一条反例路径。
案例介绍
02
我们可以以下面这个案例来举例说明。
OpenAI正考虑为AI软件创建一个应用商店:金色财经报道,据The Information援引知情人士消息,OpenAI正考虑为AI软件创建一个应用商店,供客户向企业销售定制的人工智能模型。目前尚不清楚OpenAI是否会从这些销售中收取佣金或者以其他方式创收。知情人士表示,这个市场可能是OpenAI版的App Store。[2023/6/20 21:50:24]
Optimism实施Bedrock升级后将超5.4亿美元的ETH转移到一个新的智能合约:金色财经报道,据Arkham监测,Optimism实施Bedrock升级几个小时后,将293288枚ETH(价值约5.49亿美元)从他们的L1网关转移到一个新的智能合约。这目前是在过去一周内记录的最大的单笔链上交易。
金色财经此前报道,Optimism已于北京时间6月7日凌晨2点50分完成主网Bedrock升级,Bedrock测序器已经启动。存取款服务已恢复,关键的外部OP主网基础设施已重新运行。[2023/6/7 21:21:42]
这里我们考虑进行一次众筹,目标是在部署后deadline时间内,收集fundingGoal个以太币。如果在该期间收集到相应数额个以太币,则表明众筹成功,在这种情况下,受益人可以提取资金。否则,将认为众筹失败,并允许用户要求退款。众筹合约本身继承了token合约,并直接收集众筹期间投入的所有资金。
印度央行:加密货币是一个明显的危险:6月30日消息,印度央行表示,加密货币是一个明显的危险。加密资产生态系统的威胁越来越大,需要印度当局采取严厉措施。(金十)[2022/6/30 1:42:20]
具体合约和函数说明
03
我们可以进一步得知,该项目包含了一个Crowdsale合约,继承一个token合约。
在众筹合约中,构造函数会初始化设置众筹的截止时间deadline,并添加众筹目标额度fundingGoal,并在合约中硬编码受益人的地址beneficiary;
然后会提供回调函数,提供给用户来参与投资,在开放众筹期间,只要未达到目标额度,就允许所有用户进行投资;
现场 | MixMarvel联合创始人:以太坊仍是一个最公平的生态:金色财经现场报道,3月8日,MixMarvel联合创始人Yiyi在由金色财经主办的金色沙龙圆桌论坛环节指出,现在以太坊是内忧外患,内忧就是决策权比较分散,他们都有各自的利益驱动;外患就是有更多公链在侵蚀以太坊的市场。同时,她还指出,以太坊还是一个最公平的生态,长远来看还是看好以太坊。[2019/3/8]
提供一个checkGoalReached()函数,如果达到众筹目标,或者达到了截止时间,就可以修改状态标识,关闭众筹;
然后会提供响应的transfer()和issue()函数接口,用于在众筹分配代币,以及能够进行代币的交易
提供一个safeWithdrawal()函数,如果众筹成功,受益人能够取出投资人的钱;
最后还提供一个safeClaimRefund()退款接口,如果众筹失败,用户可以通过该接口完成撤资。
结果分析和说明
04
我们这里已经完成了单个函数的属性验证,可以确认单个函数的功能是符合其属性规范的,在此基础上,编写上层属性进行验证。
以下,我们编写的上层属性有两条,一条是p1,含义是总是能够满足,一旦调用了safeWithdrawal()或者safeClaimRefund(),另一个函数就不能够被成功调用。
P1:
得到输出结果,可以看到属性2是满足的,而属性1并不满足。我们查看一下反例的可视化路径,可以看到,确实存在一条路径,safeWithdrawal()函数和safeClaimRefund()函数可以先后被执行成功。
回到合约中,根据所提供的反例路径,可以看到,发生该情况是调用回调函数一段时间后,当前时间超过了众筹的截止时间,众筹的资金总量没有达到目标fundingGoal,在checkGoalReached()关闭众筹之后,此时的合约状态,用户是可以调用safeClaimRefund选择退款的。
但是我们可以从结果中发现,此时依旧可以调用成功回调函数投资,那么就出现了后面的状态可能,在众筹失败之后,依旧有用户有意或者无意参与了投资,导致投资的总额超过了目标。
此时,能够再次调用checkGoalReached()函数结束众筹,改变状态标识,最终受益人能够在按原始需求,众筹失败的情况下,且有用户选择退款之后,依旧调用checkGoalReached()取出了所有的投资资金。
最终回到合约,我们发现,其实是由于用于投资的回调函数缺少了检查当前事件是否超过了截止日期,进而导致的合约漏洞。
可以看到,在该例子中,所有的函数其实是满足其自身的属性并实现了相应的功能的,但是由于在合约之间、函数之间的调用和关联关系,才导致出现了这样一个漏洞。而该属性验证工具的作用也在于此,它能够更加高效地发现逻辑属性漏洞。
标签:CHEUNDSAFEGOALcoincheck交易平台Pundi X NEMSAFETESLA币topgoal币怎么样
AMA主题:Stafi如何融入波卡生态分享嘉宾:波卡生态开发者计划负责人Eric主持人:Stafi联合创始人向阳Part1-Self-introduction:hello~大家好.
1900/1/1 0:00:00内容摘要:反弹做空今晚20:00直播活动预告:今晚20:00一直播例行每周一解读行情及全品种交易策略,提前10-15分钟进场,有持仓答疑整体行情:BTC整体预期如昨日,昨日下杀仍有大量买盘介入.
1900/1/1 0:00:00如果用一个词来形用这几年的币圈市场,那么2017年是“疯狂”,2018年就是“恐慌”,2019年则是“意犹未尽”,2020年应该是“梦想”的开始.
1900/1/1 0:00:00TESLA的名字是为了纪念著名的天才且无私的物理学家尼古拉.特斯拉,被称为最接近神的人。 特斯拉新能源汽车的知名度在中国一直很高,那么是什么导致其股价腰斩到177美金,又是什么原因导致它暴涨到9.
1900/1/1 0:00:00今日资讯1、澳大利亚储备银行表示一直关注加密货币发展发,并认为目前仍不清楚国内是否会有强劲的需求.
1900/1/1 0:00:00本文来自:NEST爱好者作者:九章天问区块链技术构建了一个去中心化世界,想象一下:一个完整的价值网络,不依赖于任何个体,不舍昼夜,合约、AI和众生都能频繁的互动,价值在他们之间流转.
1900/1/1 0:00:00