Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pragma solidity ^0.4.10;
- contract Token {
- /// @return total amount of tokens
- function totalSupply() constant returns (uint256 supply) {}
- /// @param _owner The address from which the balance will be retrieved
- /// @return The balance
- function balanceOf(address _owner) constant returns (uint256 balance) {}
- /// @notice send `_value` token to `_to` from `msg.sender`
- /// @param _to The address of the recipient
- /// @param _value The amount of token to be transferred
- /// @return Whether the transfer was successful or not
- function transfer(address _to, uint256 _value) returns (bool success) {}
- /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
- /// @param _from The address of the sender
- /// @param _to The address of the recipient
- /// @param _value The amount of token to be transferred
- /// @return Whether the transfer was successful or not
- function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {}
- /// @notice `msg.sender` approves `_addr` to spend `_value` tokens
- /// @param _spender The address of the account able to transfer the tokens
- /// @param _value The amount of wei to be approved for transfer
- /// @return Whether the approval was successful or not
- function approve(address _spender, uint256 _value) returns (bool success) {}
- /// @param _owner The address of the account owning tokens
- /// @param _spender The address of the account able to transfer the tokens
- /// @return Amount of remaining tokens allowed to spent
- function allowance(address _owner, address _spender) constant returns (uint256 remaining) {}
- event Transfer(address indexed _from, address indexed _to, uint256 _value);
- event Approval(address indexed _owner, address indexed _spender, uint256 _value);
- uint public decimals;
- string public name;
- }
- contract StandardToken is Token {
- function transfer(address _to, uint256 _value) returns (bool success) {
- //Default assumes totalSupply can't be over max (2^256 - 1).
- //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap.
- //Replace the if with this one instead.
- if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
- //if (balances[msg.sender] >= _value && _value > 0) {
- balances[msg.sender] -= _value;
- balances[_to] += _value;
- Transfer(msg.sender, _to, _value);
- return true;
- } else { return false; }
- }
- function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
- //same as above. Replace this line with the following if you want to protect against wrapping uints.
- if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
- //if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0) {
- balances[_to] += _value;
- balances[_from] -= _value;
- allowed[_from][msg.sender] -= _value;
- Transfer(_from, _to, _value);
- return true;
- } else { return false; }
- }
- function balanceOf(address _owner) constant returns (uint256 balance) {
- return balances[_owner];
- }
- function approve(address _spender, uint256 _value) returns (bool success) {
- allowed[msg.sender][_spender] = _value;
- Approval(msg.sender, _spender, _value);
- return true;
- }
- function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
- return allowed[_owner][_spender];
- }
- mapping(address => uint256) balances;
- mapping (address => mapping (address => uint256)) allowed;
- uint256 public totalSupply;
- }
- contract MyERC20 is StandardToken {
- // metadata
- string public constant name = "MyERC20Token";
- string public constant symbol = "ERC";
- uint public constant decimals = 18;
- // stakeholder addresses
- address public constant FOUNDATION = 0x642dab093d6e7518dfdcb450e23108038cf667c6;
- address public constant FOUNDER_1 = 0xb1f49e6c1d2306862253ef516a07aedded28ae15;
- address public constant FOUNDER_2 = 0xb1fdea258e9d67fc121821b38ffc32a70c873964;
- address public constant INVESTOR_1 = 0xe15268cd67501f4766a9fc20e121d1f82aa397c3;
- address public constant INVESTOR_2 = 0x175037c16c0e433f86590d99afb33e5e3560d263;
- // stakeholder allocations as a percentage of total supply
- uint public totalSupply = 10e6 * 10 ** decimals;
- uint public constant FOUNDATION_ALLOCATION = 20;
- uint public constant FOUNDER_1_ALLOCATION = 5;
- uint public constant FOUNDER_2_ALLOCATION = 5;
- uint public constant INVESTOR_1_ALLOCATION = 3;
- uint public constant INVESTOR_2_ALLOCATION = 2;
- // constructor
- function MyERC20() {
- balances[FOUNDATION] = FOUNDATION_ALLOCATION * totalSupply / 100;
- balances[FOUNDER_1] = FOUNDER_1_ALLOCATION * totalSupply / 100;
- balances[FOUNDER_2] = FOUNDER_2_ALLOCATION * totalSupply / 100;
- balances[INVESTOR_1] = INVESTOR_1_ALLOCATION * totalSupply / 100;
- balances[INVESTOR_2] = INVESTOR_2_ALLOCATION * totalSupply / 100;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement