只有修饰符 nonReentrant 足以防止重入,否则我们仍然需要检查函数内部是否成功
function withdraw() external nonReentrant {
5 uint256 amount = balanceOf[msg.sender];
6 balanceOf[msg.sender] = 0;
7 (bool success, ) = msg.sender.call.value(amount)("");
8 require(success, "Transfer failed.");
9 }
或者这就足够了?:
function withdraw() external nonReentrant {
5 uint256 amount = balanceOf[msg.sender];
6 balanceOf[msg.sender] = 0;
7
9 }