You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
878 B
29 lines
878 B
8 years ago
|
pragma solidity ^0.4.8;
|
||
|
|
||
|
/// @title Helps contracts guard agains rentrancy attacks.
|
||
|
/// @author Remco Bloemen <remco@2π.com>
|
||
|
/// @notice If you mark a function `nonReentrant`, you should also
|
||
|
/// mark it `external`.
|
||
|
contract ReentrancyGuard {
|
||
|
|
||
|
/// @dev We use a single lock for the whole contract.
|
||
|
bool private rentrancy_lock = false;
|
||
|
|
||
|
/// Prevent contract from calling itself, directly or indirectly.
|
||
|
/// @notice If you mark a function `nonReentrant`, you should also
|
||
|
/// mark it `external`. Calling one nonReentrant function from
|
||
|
/// another is not supported. Instead, you can implement a
|
||
|
/// `private` function doing the actual work, and a `external`
|
||
|
/// wrapper marked as `nonReentrant`.
|
||
|
modifier nonReentrant() {
|
||
|
if(rentrancy_lock == false) {
|
||
|
rentrancy_lock = true;
|
||
|
_;
|
||
|
rentrancy_lock = false;
|
||
|
} else {
|
||
|
throw;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|