我的智能合同里有个低级电话
(bool success, ) = address.call{ value: amount * percentage / 100 }("");
require(success, "some error"); 并被滑行检测到。
[{
"resource": "/home/.../path/.../MyContract.sol",
"owner": "Slither",
"severity": 2,
"message": "Low level call in MyContract.function(string,uint8) (contracts/MyContract.sol#341-365):\n\t- (success) = address.call{value: amount * percentage / 100}() (contracts/MyContract.sol#353)",
"startLineNumber": 341,
"startColumn": 2,
"endLineNumber": 342,
"endColumn": 1
}]调用应该将以太发送到另一个智能契约回退函数。虽然这是稳健性调用回退函数的推荐方法,但Slither在这里得到了肯定的结果。
https://solidity-by-example.org/call/
当您只是通过调用fallback函数发送以太时,推荐使用<#>This方法。
那么,为了消除审计报告中的正面影响,我应该做些什么呢?
发布于 2023-03-28 08:13:53
若要忽略查找,可以手动添加注释,指示应忽略下一行。
//slither-disable-next-line low-level-calls
(bool success, ) = address.call{ value: amount * percentage / 100 }("");
require(success, "some error"); 或者在分流模式下运行Slither
slither . --triage-mode并确认所有假阳性。更多细节可以在医生们中找到。
https://ethereum.stackexchange.com/questions/148088
复制相似问题