1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
/** *Submitted for verification at Etherscan.io on 2018-09-25 */ pragma solidity ^0.4.11; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function balanceOf(address who) public constant returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal constant returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal constant returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; mapping(address => uint256) Loanbalances; event transferEvent(address from, uint256 value, address to); event giveToken(address to, uint256 value); event signLoanEvent(address to); uint256 _totalSupply = 100000000000000000; address owner = 0xBc57C45AA9A71F273AaEbf54cFE835056A628F0b; function BasicToken() { balances[owner] = _totalSupply; } function totalSupply() public view returns (uint) { return _totalSupply; } /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); balances[msg.sender].sub(_value); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } function loanBalanceOf(address _owner) public view returns (uint256 balance) { return Loanbalances[_owner]; } function giveTokens(address client, uint256 value) public { require(msg.sender == owner); balances[owner] = balances[owner].sub(value); balances[client] = balances[client].add(value); Loanbalances[client] = Loanbalances[client].add(value); giveToken(client, value); Transfer(msg.sender, client, value); } function signLoan(address client) public { require(msg.sender == owner); Loanbalances[client] = balances[client]; signLoanEvent(client); } function subLoan(address client, uint256 _value) public { require(msg.sender == owner); Loanbalances[client] = Loanbalances[client].sub(_value); } } contract customCoin is BasicToken { string public name = "Hive token"; string public symbol = "HIVE"; uint public decimals = 8; } |