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

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 JavaFX TableView更新单元格,不更新对象值   在扫描器中使用分隔符的java   java OkHttp 4.9.2,连接无法重用,导致端口耗尽   eclipse中的c JNI:运行Java代码   java是否在出厂的所有硬件设备中都有/mnt/sdcard/Android/data文件夹(或等效文件夹)?   Java,在eclipse中访问资源文件夹中的图像   java为什么Bluemix dashDB操作抛出SqlSyntaxErrorException,SQLCODE=1667?   JavaHtmlUnitWebClient。getPage不处理javascript   Google API认证的java问题   java如何将JSON数组反序列化为Apache beam PCollection<javaObject>   ServerSocket停止接收命令,java/安卓   来自Java类的安卓 Toast消息   java如何自动重新加载应用程序引擎开发服务器?   java是否可以尝试/捕获一些东西来检查是否抛出了异常?   java如何做到这一点当我按下load game时,它不仅会加载信息,还会将您带到游戏中?   Java选项Xmx代表什么?   Java映射,它在插入时打印值   设置“ulimit c unlimited”后,java无法生成系统核心转储