Spaces:
Runtime error
Runtime error
| /** | |
| *Submitted for verification at Etherscan.io on 2017-08-04 | |
| */ | |
| pragma solidity ^0.4.2; | |
| contract owned { | |
| address public owner; | |
| function owned() { | |
| owner = msg.sender; | |
| } | |
| modifier onlyOwner { | |
| if (msg.sender != owner) revert(); | |
| _; | |
| } | |
| function transferOwnership(address newOwner) onlyOwner { | |
| owner = newOwner; | |
| } | |
| } | |
| contract tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData); } | |
| contract token { | |
| /* Public variables of the token */ | |
| string public name; | |
| string public symbol; | |
| uint8 public decimals; | |
| uint256 public totalSupply; | |
| /* This creates an array with all balances */ | |
| mapping (address => uint256) public balanceOf; | |
| mapping (address => mapping (address => uint256)) public allowance; | |
| /* This generates a public event on the blockchain that will notify clients */ | |
| event Transfer(address indexed from, address indexed to, uint256 value); | |
| /* Initializes contract with initial supply tokens to the creator of the contract */ | |
| function token( | |
| uint256 initialSupply, | |
| string tokenName, | |
| uint8 decimalUnits, | |
| string tokenSymbol | |
| ) { | |
| balanceOf[msg.sender] = initialSupply; // Give the creator all initial tokens | |
| totalSupply = initialSupply; // Update total supply | |
| name = tokenName; // Set the name for display purposes | |
| symbol = tokenSymbol; // Set the symbol for display purposes | |
| decimals = decimalUnits; // Amount of decimals for display purposes | |
| } | |
| /* Send coins */ | |
| function transfer(address _to, uint256 _value) { | |
| if (balanceOf[msg.sender] < _value) revert(); // Check if the sender has enough | |
| if (balanceOf[_to] + _value < balanceOf[_to]) revert(); // Check for overflows | |
| balanceOf[msg.sender] -= _value; // Subtract from the sender | |
| balanceOf[_to] += _value; // Add the same to the recipient | |
| Transfer(msg.sender, _to, _value); // Notify anyone listening that this transfer took place | |
| } | |
| /* Allow another contract to spend some tokens in your behalf */ | |
| function approve(address _spender, uint256 _value) | |
| returns (bool success) { | |
| allowance[msg.sender][_spender] = _value; | |
| return true; | |
| } | |
| /* Approve and then communicate the approved contract in a single tx */ | |
| function approveAndCall(address _spender, uint256 _value, bytes _extraData) | |
| returns (bool success) { | |
| tokenRecipient spender = tokenRecipient(_spender); | |
| if (approve(_spender, _value)) { | |
| spender.receiveApproval(msg.sender, _value, this, _extraData); | |
| return true; | |
| } | |
| } | |
| /* A contract attempts to get the coins */ | |
| function transferFrom(address _from, address _to, uint256 _value) returns (bool success) { | |
| if (balanceOf[_from] < _value) revert(); // Check if the sender has enough | |
| if (balanceOf[_to] + _value < balanceOf[_to]) revert(); // Check for overflows | |
| if (_value > allowance[_from][msg.sender]) revert(); // Check allowance | |
| balanceOf[_from] -= _value; // Subtract from the sender | |
| balanceOf[_to] += _value; // Add the same to the recipient | |
| allowance[_from][msg.sender] -= _value; | |
| Transfer(_from, _to, _value); | |
| return true; | |
| } | |
| /* This unnamed function is called whenever someone tries to send ether to it */ | |
| function () { | |
| revert(); // Prevents accidental sending of ether | |
| } | |
| } | |
| contract FujintoToken is owned, token { | |
| uint public buyRate = 4000; // price of one token | |
| bool public isSelling = true; | |
| mapping (address => bool) public frozenAccount; | |
| /* This generates a public event on the blockchain that will notify clients */ | |
| event FrozenFunds(address target, bool frozen); | |
| /* Initializes contract with initial supply tokens to the creator of the contract */ | |
| function FujintoToken( | |
| uint256 initialSupply, | |
| string tokenName, | |
| uint8 decimalUnits, | |
| string tokenSymbol | |
| ) token (initialSupply, tokenName, decimalUnits, tokenSymbol) {} | |
| /* Send coins */ | |
| function transfer(address _to, uint256 _value) { | |
| if (balanceOf[msg.sender] < _value) revert(); // Check if the sender has enough | |
| if (balanceOf[_to] + _value < balanceOf[_to]) revert(); // Check for overflows | |
| if (frozenAccount[msg.sender]) revert(); // Check if frozen | |
| balanceOf[msg.sender] -= _value; // Subtract from the sender | |
| balanceOf[_to] += _value; // Add the same to the recipient | |
| Transfer(msg.sender, _to, _value); // Notify anyone listening that this transfer took place | |
| } | |
| /* A contract attempts to get the coins */ | |
| function transferFrom(address _from, address _to, uint256 _value) returns (bool success) { | |
| if (frozenAccount[_from]) revert(); // Check if frozen | |
| if (balanceOf[_from] < _value) revert(); // Check if the sender has enough | |
| if (balanceOf[_to] + _value < balanceOf[_to]) revert(); // Check for overflows | |
| if (_value > allowance[_from][msg.sender]) revert(); // Check allowance | |
| balanceOf[_from] -= _value; // Subtract from the sender | |
| balanceOf[_to] += _value; // Add the same to the recipient | |
| allowance[_from][msg.sender] -= _value; | |
| Transfer(_from, _to, _value); | |
| return true; | |
| } | |
| function mintToken(address target, uint256 mintedAmount) onlyOwner { | |
| balanceOf[target] += mintedAmount; | |
| Transfer(0, owner, mintedAmount); | |
| Transfer(owner, target, mintedAmount); | |
| } | |
| function freezeAccount(address target, bool freeze) onlyOwner { | |
| frozenAccount[target] = freeze; | |
| FrozenFunds(target, freeze); | |
| } | |
| function setBuyRate(uint newBuyRate) onlyOwner { | |
| buyRate = newBuyRate; | |
| } | |
| function setSelling(bool newStatus) onlyOwner { | |
| isSelling = newStatus; | |
| } | |
| function buy() payable { | |
| if(isSelling == false) revert(); | |
| uint amount = msg.value * buyRate; // calculates the amount | |
| balanceOf[msg.sender] += amount; // adds the amount to buyer's balance | |
| balanceOf[owner] -= amount; // subtracts amount from seller's balance | |
| Transfer(owner, msg.sender, amount); // execute an event reflecting the change | |
| } | |
| function withdrawToOwner(uint256 amountWei) onlyOwner { | |
| owner.transfer(amountWei); | |
| } | |
| } |