下面的函数易受重入攻击吗?
function withdraw() public {
uint amount = pendingWithdrawals[msg.sender];
// Remember to zero the pending refund before
// sending to prevent re-entrancy attacks
pendingWithdrawals[msg.sender] = 0;
msg.sender.transfer(amount);
emit AmountWithdrawn(msg.sender, amount);
}发布于 2018-08-29 19:18:21
不,它不容易受到重入攻击。事件不会导致函数抛出。
您编写它的方式是非常安全的,因为您在发送pendingWithdrawals之前正在更新amount。
在将来,尝试保持您编写的所有函数的结构与此非常相似,即在执行操作之前更改状态。
https://ethereum.stackexchange.com/questions/57703
复制相似问题