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.
28 lines
878 B
28 lines
878 B
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;
|
|
}
|
|
}
|
|
|
|
}
|
|
|