区块链研究实验室|形式验证如何帮助防止Gridlock错误( 五 )

综上所述 , 对lock函数节码的符号执行可能揭示了这三种不良行为 , 并且仔细检查它们可能发现其中一种可被DoS攻击利用 , 从而在部署之前修复了Gridlock错误 。

吸取教训

EVM通常是不直观的 。

Gridlock错误源自对EVM设计中某些非显而易见部分的错误理解 。 如果不考虑EVM级别的智能合约 , 就很容易错过这种EVM问题 , 并且可能会再次引入类似的bug 。

形式验证可以提供帮助 。

如果不采用有原则的方法 , 那么探索所有可能的行为(尤其是在EVM级别)并非易事 。 形式验证 , 尤其是它的符号执行过程 , 可以系统地探索给定智能合约的所有可能行为 , 这比仅手工检查代码要严格得多 。

具体来说 , 我们的KEVM验证程序使用的是EVM的确切规范(又称KEVM) , 不会让您摆脱错误的假设 。 如上所示 , 它甚至会发现执行路径非常不可能 , 例如攻击者找到哈希的预映像并将其合同部署到下一个地址的情况 。

推荐阅读