Sponsored:   Ubex.com - World roadshow: Seoul Sep 17-19, Singapore Sep 19-20, Dubai 18-23. Meet us!.
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 1 txn
Token Tracker: Stem Cell Innovations (SCIA)
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Source Code Verified (Exact Match)
Contract Name: StemToken
Compiler Text: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

/* 
 * Stem Cell Innovations Token Contract
 * =======================
 *
 * BASED on the OpenZeppelin Contracts. 
 * ASSEMBLED, MODIFIED & DELIVERED by Codemelt.
 * FOR SCIA (https://scia.io).
 */

library SafeMath {

  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) { return 0; }
    c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return a / b;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }

}


contract Ownable {
  address public owner;
  address public pendingOwner;

  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  constructor() public {
    owner = msg.sender;
    pendingOwner = address(0);
  }



  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }


  function transferOwnership(address newOwner) onlyOwner external {
    pendingOwner = newOwner;
  }

  function claimOwnership() external {
    require(msg.sender == pendingOwner);
    emit OwnershipTransferred(owner, pendingOwner);
    owner = pendingOwner;
    pendingOwner = address(0);
  }

}


contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  modifier whenNotPaused() {
    require(!paused || msg.sender == owner);
    _;
  }

  modifier whenPaused() {
    require(paused);
    _;
  }

  function pause() onlyOwner whenNotPaused external {
    paused = true;
    emit Pause();
  }

  function unpause() onlyOwner whenPaused external {
    paused = false;
    emit Unpause();
  }

}


contract ERC20 {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
  event Transfer(address indexed from, address indexed to, uint256 value);
}


contract TokenBase is ERC20, Pausable {
  using SafeMath for uint256;

  mapping (address => uint256) balances;
  mapping (address => mapping (address => uint256)) internal allowed;

  uint256 totalSupply_;

  modifier isValidDestination(address _to) {
    require(_to != address(0x0));
    require(_to != address(this));
    _;
  }


  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  function balanceOf(address _owner) public view returns (uint256) {
    return balances[_owner];
  }

  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }



  function transfer(address _to, uint256 _value) public whenNotPaused isValidDestination(_to) returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused isValidDestination(_to) returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  function increaseApproval(address _spender, uint256 _addedValue) public whenNotPaused returns (bool) {
    allowed[msg.sender][_spender] = (allowed[msg.sender][_spender].add(_addedValue));
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval(address _spender, uint256 _subtractedValue) public whenNotPaused returns (bool) {
    uint256 oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}


contract MintableToken is TokenBase {
  event Mint(address indexed to, uint256 amount);
  event MintFinished();

  bool public mintingFinished = false;


  modifier canMint() {
    require(!mintingFinished);
    _;
  }


  function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    totalSupply_ = totalSupply_.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    emit Mint(_to, _amount);
    emit Transfer(address(0), _to, _amount);
    return true;
  }

  function finishMinting() onlyOwner canMint external returns (bool) {
    mintingFinished = true;
    emit MintFinished();
    return true;
  }

}


contract BurnableToken is MintableToken {
  event Burn(address indexed burner, uint256 value);


  function burn(uint256 _value) external {
    require(_value <= balances[msg.sender]);

    balances[msg.sender] = balances[msg.sender].sub(_value);
    totalSupply_ = totalSupply_.sub(_value);
    emit Burn(msg.sender, _value);
    emit Transfer(msg.sender, address(0), _value);
  }

}


contract StemToken is BurnableToken {
  string public constant name = "Stem Cell Innovations";
  string public constant symbol = "SCIA";
  uint8 public constant decimals = 18;


  /**
  * @dev Allows the owner to take tokens to this contract by mistake.
  * @param _token The contract address of the token that is getting pulled out.
  * @param _amount The amount to pull out.
  */
  function pullOut(ERC20 _token, uint256 _amount) external onlyOwner {
    _token.transfer(owner, _amount);
  }

  /**
  * @dev 'tokenFallback' function in accordance to the ERC223 standard. Rejects all incoming ERC223 token transfers.
  */
  function tokenFallback(address from_, uint256 value_, bytes data_) public {
    from_; value_; data_;
    revert();
  }

  function() external payable {
      revert("This contract does not accept Ethereum!");
    }

}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"value_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"pullOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6080604052600180546005805460ff1916905560008054600160a060020a03191633179055600160a860020a031916905561110a8061003f6000396000f30060806040526004361061013d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146101ca57806306fdde03146101f3578063095ea7b31461027d57806318160ddd146102a157806323b872dd146102c8578063313ce567146102f25780633f4ba83a1461031d57806340c10f191461033457806342966c68146103585780634e71e0c8146103705780635c975abb14610385578063661884631461039a57806370a08231146103be5780637d64bcb4146103df5780638456cb59146103f45780638da5cb5b1461040957806395d89b411461043a578063a9059cbb1461044f578063c0ee0b8a14610473578063d73dd623146104dc578063dd62ed3e14610500578063e30c397814610527578063eb29c5871461053c578063f2fde38b14610560575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420457460448201527f68657265756d2100000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b3480156101d657600080fd5b506101df610581565b604080519115158252519081900360200190f35b3480156101ff57600080fd5b5061020861058a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024257818101518382015260200161022a565b50505050905090810190601f16801561026f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028957600080fd5b506101df600160a060020a03600435166024356105c1565b3480156102ad57600080fd5b506102b6610659565b60408051918252519081900360200190f35b3480156102d457600080fd5b506101df600160a060020a036004358116906024351660443561065f565b3480156102fe57600080fd5b50610307610822565b6040805160ff9092168252519081900360200190f35b34801561032957600080fd5b50610332610827565b005b34801561034057600080fd5b506101df600160a060020a036004351660243561089f565b34801561036457600080fd5b50610332600435610990565b34801561037c57600080fd5b50610332610a51565b34801561039157600080fd5b506101df610ad9565b3480156103a657600080fd5b506101df600160a060020a0360043516602435610ae9565b3480156103ca57600080fd5b506102b6600160a060020a0360043516610c0d565b3480156103eb57600080fd5b506101df610c28565b34801561040057600080fd5b50610332610c8c565b34801561041557600080fd5b5061041e610d20565b60408051600160a060020a039092168252519081900360200190f35b34801561044657600080fd5b50610208610d2f565b34801561045b57600080fd5b506101df600160a060020a0360043516602435610d66565b34801561047f57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610332948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610e939650505050505050565b3480156104e857600080fd5b506101df600160a060020a0360043516602435610e98565b34801561050c57600080fd5b506102b6600160a060020a0360043581169060243516610f62565b34801561053357600080fd5b5061041e610f8d565b34801561054857600080fd5b50610332600160a060020a0360043516602435610f9c565b34801561056c57600080fd5b50610332600160a060020a0360043516611053565b60055460ff1681565b60408051808201909152601581527f5374656d2043656c6c20496e6e6f766174696f6e730000000000000000000000602082015281565b60015460009060a060020a900460ff1615806105e75750600054600160a060020a031633145b15156105f257600080fd5b336000818152600360209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60045490565b60015460009060a060020a900460ff1615806106855750600054600160a060020a031633145b151561069057600080fd5b82600160a060020a03811615156106a657600080fd5b600160a060020a0381163014156106bc57600080fd5b600160a060020a03841615156106d157600080fd5b600160a060020a0385166000908152600260205260409020548311156106f657600080fd5b600160a060020a038516600090815260036020908152604080832033845290915290205483111561072657600080fd5b600160a060020a03851660009081526002602052604090205461074f908463ffffffff61109916565b600160a060020a038087166000908152600260205260408082209390935590861681522054610784908463ffffffff6110ab16565b600160a060020a0380861660009081526002602090815260408083209490945591881681526003825282812033825290915220546107c8908463ffffffff61109916565b600160a060020a03808716600081815260036020908152604080832033845282529182902094909455805187815290519288169391926000805160206110bf833981519152929181900390910190a3506001949350505050565b601281565b600054600160a060020a0316331461083e57600080fd5b60015460a060020a900460ff16151561085657600080fd5b6001805474ff0000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60008054600160a060020a031633146108b757600080fd5b60055460ff16156108c757600080fd5b6004546108da908363ffffffff6110ab16565b600455600160a060020a038316600090815260026020526040902054610906908363ffffffff6110ab16565b600160a060020a038416600081815260026020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000916000805160206110bf8339815191529181900360200190a350600192915050565b336000908152600260205260409020548111156109ac57600080fd5b336000908152600260205260409020546109cc908263ffffffff61109916565b336000908152600260205260409020556004546109ef908263ffffffff61109916565b60045560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a260408051828152905160009133916000805160206110bf8339815191529181900360200190a350565b600154600160a060020a03163314610a6857600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b60015460a060020a900460ff1681565b600154600090819060a060020a900460ff161580610b115750600054600160a060020a031633145b1515610b1c57600080fd5b50336000908152600360209081526040808320600160a060020a038716845290915290205480831115610b7257336000908152600360209081526040808320600160a060020a0388168452909152812055610ba7565b610b82818463ffffffff61109916565b336000908152600360209081526040808320600160a060020a03891684529091529020555b336000818152600360209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526002602052604090205490565b60008054600160a060020a03163314610c4057600080fd5b60055460ff1615610c5057600080fd5b6005805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600054600160a060020a03163314610ca357600080fd5b60015460a060020a900460ff161580610cc65750600054600160a060020a031633145b1515610cd157600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600054600160a060020a031681565b60408051808201909152600481527f5343494100000000000000000000000000000000000000000000000000000000602082015281565b60015460009060a060020a900460ff161580610d8c5750600054600160a060020a031633145b1515610d9757600080fd5b82600160a060020a0381161515610dad57600080fd5b600160a060020a038116301415610dc357600080fd5b600160a060020a0384161515610dd857600080fd5b33600090815260026020526040902054831115610df457600080fd5b33600090815260026020526040902054610e14908463ffffffff61109916565b3360009081526002602052604080822092909255600160a060020a03861681522054610e46908463ffffffff6110ab16565b600160a060020a0385166000818152600260209081526040918290209390935580518681529051919233926000805160206110bf8339815191529281900390910190a35060019392505050565b600080fd5b60015460009060a060020a900460ff161580610ebe5750600054600160a060020a031633145b1515610ec957600080fd5b336000908152600360209081526040808320600160a060020a0387168452909152902054610efd908363ffffffff6110ab16565b336000818152600360209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600154600160a060020a031681565b600054600160a060020a03163314610fb357600080fd5b60008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519185169263a9059cbb926044808401936020939083900390910190829087803b15801561102357600080fd5b505af1158015611037573d6000803e3d6000fd5b505050506040513d602081101561104d57600080fd5b50505050565b600054600160a060020a0316331461106a57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000828211156110a557fe5b50900390565b818101828110156110b857fe5b929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d60440dc4aa1edf71c413420b7ad8e8b57a390f0aec6d58dd0d7ad882a4cbc9e0029

   Swarm Source:
bzzr://d60440dc4aa1edf71c413420b7ad8e8b57a390f0aec6d58dd0d7ad882a4cbc9e

 

View All
Block Age transaction Difficulty Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.