假设以太坊:以太坊项目的假设库。

hypothesis-ethereum的Python项目详细描述


#以太坊智能中枢的假设整合 使用pytest执行测试

https://hypothesis.works/articles/how-not-to-die-hard-with-hypothesis/https://hypothesis.readthedocs.io/en/latest/stateful.html

##这个模糊器是如何工作的

这个fuzzer引擎接受一个已编译的契约,并利用abi来计算契约的“调用空间”。 调用空间基本上是允许修改底层状态的外部可用协定方法。 每个方法的调用空间由每个方法的输入变量进一步参数化,因此总的调用空间是 基本上所有可用的状态修改方法都包含所有可能的输入变量组合。 以太坊契约包含非常大的变量,例如256位整数,这可能真的很大!

fuzzer通常从调用空间中随机抽取样本,以减少正在进行的调用的数量 减少用于探索呼叫空间的时间和资源量。这个模糊引擎特别尝试 调用空间中的一系列调用,试图找到用户感兴趣的异常情况。

此模糊引擎检查以下异常情况: 一。排气异常(使用可配置的限制) 2.意外的恢复,例如无效的操作码、堆栈溢出/下溢、无效的跳转目标或资金不足。 三。自定义不变量,由用户使用合同的公共只读api指定

##稳健性与完整性

这个绒毛是“健全的”,但不是“完整的”。 如果您不熟悉这些概念,这基本上意味着fuzzer测试可能不完全 识别所有的bug(由于随机搜索契约的调用空间),但是它查找的任何bug 是存在于应用程序中的“真实”bug(事实上它是一个bug被充分地识别)。

未来的工作将通过“灰盒”技术缩小合同的通话空间, 或者换言之,内省契约以识别调用空间中可能显示错误的部分, 把注意力集中在这些部分,以便更快地识别错误。这样,我们的目标是使模糊器的技术 more完成(更快地识别更多的bug),但不牺牲可靠性(所有bug仍然是真正的bug)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么stripVersion不能在带有mojo依赖项的mavendependencyplugin上工作   java存储具有不同功能的大量对象   java Spring MockMvc自定义验证器未在Spring容器中注册/调用   javascript程序编辑实体而不是添加   C++如何在java上检索图形卡信息?   java如何在没有方法参数的方法上使用@cacheable注释的键   java如何获取特定用户或学生的JSON   java可序列化AjaxRequestTarget   java Tomcat 8禁用分块编码过滤器   java这个简单的Swingbase类是线程安全的吗?   java调用Gdi32。使用JNA获取对象   如何使用来自其他类Java Android onClick的方法?   json序列化已经有了id(java.lang.String)的POJO   java使用jsp上传多个文件?   java有没有办法为Android项目在EclipseIndigo上设置JVM参数?   Eclipse中的java,为什么它告诉我添加一个已经存在的分号?   Java中的正则表达式拆分行   Java:在单行中赋值