我正在尝试了解更多关于SWC智能合约弱点分类和测试用例的信息。我一直在理解SWC-126:https://swcregistry.io/docs/SWC-126.特别是,我不理解链接中提出的解决方案,以及它是如何修复攻击向量的?
这个攻击向量不是简单地是https://swcregistry.io/docs/SWC-104?我们可以简单地要求在relayer.sol合同的第26行之后成功呼叫,方法是:
require(success)
以便在剩余气体不足以执行子调用的情况下恢复完整的事务?
此外,我不明白relayer_fixed.sol中提出的解决方案将如何解决我们的问题,因为它只会恢复子呼叫,而relayer合同将继续,而不会评估预先释放的子呼叫?
首先,插入require(成功(;这条线肯定会起作用。
其次,该解决方案实际上是有效的,因为revert((语句只是将整个事务恢复到其初始状态。这样,如果没有足够的天然气来完成交易,而不是仅仅";跳过";它将恢复整个交易。
希望这是有用的:(