pragma solidity ^0.4.11; /** * @title Helps contracts guard agains rentrancy attacks. * @author Remco Bloemen * @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; /** * @dev Prevents a 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; } } }