2017-07-05 10:28:15 +00:00
|
|
|
pragma solidity ^0.4.11;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @title LimitBalance
|
|
|
|
* @dev Simple contract to limit the balance of child contract.
|
|
|
|
* @dev Note this doesn't prevent other contracts to send funds by using selfdestruct(address);
|
|
|
|
* @dev See: https://github.com/ConsenSys/smart-contract-best-practices#remember-that-ether-can-be-forcibly-sent-to-an-account
|
|
|
|
*/
|
|
|
|
contract LimitBalance {
|
|
|
|
|
|
|
|
uint256 public limit;
|
|
|
|
|
|
|
|
/**
|
2018-08-01 19:57:12 +00:00
|
|
|
* @dev Constructor that sets the passed value as a limit.
|
2017-07-05 10:28:15 +00:00
|
|
|
* @param _limit uint256 to represent the limit.
|
|
|
|
*/
|
2018-07-04 17:20:51 +00:00
|
|
|
constructor(uint256 _limit) public {
|
2017-07-05 10:28:15 +00:00
|
|
|
limit = _limit;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @dev Checks if limit was reached. Case true, it throws.
|
|
|
|
*/
|
|
|
|
modifier limitedPayable() {
|
2018-07-05 12:32:32 +00:00
|
|
|
if (address(this).balance > limit) {
|
2018-07-11 23:49:00 +00:00
|
|
|
revert();
|
2017-07-05 10:28:15 +00:00
|
|
|
}
|
|
|
|
_;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|