diff options
Diffstat (limited to 'test/compilationTests/zeppelin/lifecycle/TokenDestructible.sol')
-rw-r--r-- | test/compilationTests/zeppelin/lifecycle/TokenDestructible.sol | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/compilationTests/zeppelin/lifecycle/TokenDestructible.sol b/test/compilationTests/zeppelin/lifecycle/TokenDestructible.sol new file mode 100644 index 00000000..fe0b46b6 --- /dev/null +++ b/test/compilationTests/zeppelin/lifecycle/TokenDestructible.sol @@ -0,0 +1,36 @@ +pragma solidity ^0.4.11; + + +import "../ownership/Ownable.sol"; +import "../token/ERC20Basic.sol"; + +/** + * @title TokenDestructible: + * @author Remco Bloemen <remco@2π.com> + * @dev Base contract that can be destroyed by owner. All funds in contract including + * listed tokens will be sent to the owner. + */ +contract TokenDestructible is Ownable { + + function TokenDestructible() payable { } + + /** + * @notice Terminate contract and refund to owner + * @param tokens List of addresses of ERC20 or ERC20Basic token contracts to + refund. + * @notice The called token contracts could try to re-enter this contract. Only + supply token contracts you trust. + */ + function destroy(address[] tokens) onlyOwner { + + // Transfer tokens to owner + for(uint256 i = 0; i < tokens.length; i++) { + ERC20Basic token = ERC20Basic(tokens[i]); + uint256 balance = token.balanceOf(this); + token.transfer(owner, balance); + } + + // Transfer Eth to owner and terminate contract + selfdestruct(owner); + } +} |