我正在开发一个基于区块链的 uni 项目,我必须审核我们的系统,检查已知攻击等。这是我检查的文件,主要是因为我首先开始处理智能合约问题: 已知攻击以太坊智能合约
我无法理解“Dos With (unexpected) revert attack”部分中使用的示例。我分享代码:
// INSECURE
contract Auction {
address currentLeader;
uint highestBid;
function bid() payable {
require(msg.value > highestBid);
require(currentLeader.send(highestBid)); // Refund the old leader, if it fails then revert
currentLeader = msg.sender;
highestBid = msg.value;
}}
他们说,攻击者可以强制每次叫价都恢复,这样就没有人可以出价,这将使攻击者默认赢得拍卖。但是..他会怎么做,那是我不明白的部分。我们是否同意至少这份合同是“有效的”,而不是有效载荷?如果有效负载是合同,任何人都可以提供示例/解释吗?
我要补充一点,如果我在这里引用一个可靠的合同,我们与 Vyper 合作,但从我之前读到的内容来看,这仍然是一个我也会在那里找到的问题。
提前致谢 !