simplify reentrancyGuard

This commit is contained in:
mingda
2020-07-24 01:50:48 +08:00
parent 50f3180c82
commit 58f189b957
2 changed files with 6 additions and 11 deletions

View File

@@ -8,8 +8,6 @@
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
import {Types} from "./Types.sol";
/**
* @title ReentrancyGuard
* @author DODO Breeder
@@ -17,16 +15,14 @@ import {Types} from "./Types.sol";
* @notice Protect functions from Reentrancy Attack
*/
contract ReentrancyGuard {
Types.EnterStatus private _ENTER_STATUS_;
constructor() internal {
_ENTER_STATUS_ = Types.EnterStatus.NOT_ENTERED;
}
// https://solidity.readthedocs.io/en/latest/control-structures.html?highlight=zero-state#scoping-and-declarations
// zero-state of _ENTERED_ is false
bool private _ENTERED_;
modifier preventReentrant() {
require(_ENTER_STATUS_ != Types.EnterStatus.ENTERED, "REENTRANT");
_ENTER_STATUS_ = Types.EnterStatus.ENTERED;
require(!_ENTERED_, "REENTRANT");
_ENTERED_ = true;
_;
_ENTER_STATUS_ = Types.EnterStatus.NOT_ENTERED;
_ENTERED_ = false;
}
}

View File

@@ -10,5 +10,4 @@ pragma experimental ABIEncoderV2;
library Types {
enum RStatus {ONE, ABOVE_ONE, BELOW_ONE}
enum EnterStatus {ENTERED, NOT_ENTERED}
}