pragma solidity ^0.4.8; /// @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; /// 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; } } }