From ef95e4f8fab67882575415c76e92273871f42dde Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt <3esmit@gmail.com> Date: Sun, 4 Mar 2018 03:51:30 -0300 Subject: [PATCH] status active token --- contracts/status/StatusActiveToken.sol | 49 ++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 contracts/status/StatusActiveToken.sol diff --git a/contracts/status/StatusActiveToken.sol b/contracts/status/StatusActiveToken.sol new file mode 100644 index 0000000..8069e8a --- /dev/null +++ b/contracts/status/StatusActiveToken.sol @@ -0,0 +1,49 @@ +pragma solidity ^0.4.17; + +import "../token/ERC20Token.sol"; +import "../token/MiniMeTokenPreSigned.sol"; +import "../token/MiniMeTokenPreSignedFactory.sol"; +import "../token/ApproveAndCallFallBack.sol"; + +contract StatusActiveToken is MiniMeTokenPreSigned, ApproveAndCallFallBack { + ERC20Token public snt; + + function StatusActiveToken(address _factory, address _snt) + MiniMeTokenPreSigned( + _factory, + address(0), // parent token + block.number, // snapshot block + "Status Network Token", // Token name + 18, // Decimals + "SNT", // Symbol + true // Enable transfers + ) + public + { + snt = ERC20Token(_snt); + } + + function receiveApproval(address _from, uint256 _amount, address _token, bytes _data) public { + require(msg.sender == _token); + require(_token == address(snt)); + require(_amount > 0); + require(_data.length == 0); + activateSNT(_from, _amount); + } + + function activateSNT(address _from, uint256 _amount) public { + require(snt.transferFrom(_from, address(this), _amount)); + generateTokens(_from, _amount); + } + + function deactivateSNT(uint256 _amount) public { + _deactivateSNT(msg.sender, _amount); + } + + function _deactivateSNT(address _from, uint256 _amount) private { + require(balanceOf(msg.sender) >= _amount); + require(snt.transfer(_from, _amount)); + destroyTokens(_from, _amount); + } + +} \ No newline at end of file