ETH Price: $2,354.12 (-1.17%)

Token

STO (STO)
 

Overview

Max Total Supply

12,000,000,000 STO

Holders

87

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
215,714.1 STO

Value
$0.00
0xc7fa499405f6e538c8da8adea7544bb8008bda8f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xb33a96D8...Eb8dea2aD
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
SmartOToken

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-03-04
*/

pragma solidity ^0.4.15;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure 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 pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

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

contract Ownable {

  address public owner;
  function Ownable() public { owner = msg.sender; }

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

  function transferOwnership(address newOwner) public onlyOwner {owner = newOwner;}
}

contract ERC20Interface {

  function totalSupply() public constant returns (uint256);

  function balanceOf(address _owner) public constant returns (uint256);

  function transfer(address _to, uint256 _value) public returns (bool);

  function transferFrom(address _from, address _to, uint256 _value) public returns (bool);

  function approve(address _spender, uint256 _value) public returns (bool);

  function allowance(address _owner, address _spender) public constant returns (uint256);

  event Transfer(address indexed _from, address indexed _to, uint256 _value);

  event Approval(address indexed _owner, address indexed _spender, uint256 _value);

 }

contract SmartOToken is Ownable, ERC20Interface {

  using SafeMath for uint256;

  /* Public variables of the token */
  string public constant name = "STO";
  string public constant symbol = "STO";
  uint public constant decimals = 18;
  uint256 public constant initialSupply = 12000000000 * 1 ether;
  uint256 public totalSupply;

  /* This creates an array with all balances */
  mapping (address => uint256) public balances;
  mapping (address => mapping (address => uint256)) public allowed;

  /* Events */
  event Burn(address indexed burner, uint256 value);
  event Mint(address indexed to, uint256 amount);

  /* Constuctor: Initializes contract with initial supply tokens to the creator of the contract */
  function SmartOToken() public {
      balances[msg.sender] = initialSupply;              // Give the creator all initial tokens
      totalSupply = initialSupply;                        // Update total supply
  }


  /* Implementation of ERC20Interface */

  function totalSupply() public constant returns (uint256) { return totalSupply; }

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

  /* Internal transfer, only can be called by this contract */
  function _transfer(address _from, address _to, uint _amount) internal {
      require (_to != 0x0);                               // Prevent transfer to 0x0 address. Use burn() instead
      require (balances[_from] >= _amount);                // Check if the sender has enough
      balances[_from] = balances[_from].sub(_amount);
      balances[_to] = balances[_to].add(_amount);
      Transfer(_from, _to, _amount);

  }

  function transfer(address _to, uint256 _amount) public returns (bool) {
    _transfer(msg.sender, _to, _amount);
    return true;
  }

  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require (_value <= allowed[_from][msg.sender]);     // Check allowance
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    _transfer(_from, _to, _value);
    return true;
  }

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

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

}


contract Crowdsale is Ownable {

  using SafeMath for uint256;

  // The token being sold
  SmartOToken public token;

  // Flag setting that investments are allowed (both inclusive)
  bool public saleIsActive;

  // address where funds are collected
  address public wallet;

  // Number of tokents for 1 ETH, i.e. 683 tokens for 1 ETH
  uint256 public rate;

  // amount of raised money in wei
  uint256 public weiRaised;

  /**
   * event for token purchase logging
   * @param purchaser who paid for the tokens
   * @param beneficiary who got the tokens
   * @param value weis paid for purchase
   * @param amount amount of tokens purchased
   */
  event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);


  /* -----------   A D M I N        F U N C T I O N S    ----------- */

  function Crowdsale(uint256 _initialRate, address _targetWallet) public {

    //Checks
    require(_initialRate > 0);
    require(_targetWallet != 0x0);

    //Init
    token = new SmartOToken();
    rate = _initialRate;
    wallet = _targetWallet;
    saleIsActive = true;

  }

  function close() public onlyOwner {
    selfdestruct(owner);
  }

  //Transfer token to
  function transferToAddress(address _targetWallet, uint256 _tokenAmount) public onlyOwner {
    token.transfer(_targetWallet, _tokenAmount * 1 ether);
  }


  //Setters
  function enableSale() public onlyOwner {
    saleIsActive = true;
  }

  function disableSale() public onlyOwner {
    saleIsActive = false;
  }

  function setRate(uint256 _newRate) public onlyOwner {
    rate = _newRate;
  }


  /* -----------   P U B L I C      C A L L B A C K       F U N C T I O N     ----------- */

  function () public payable {

    require(msg.sender != 0x0);
    require(saleIsActive);
    require(msg.value >= 0.1 * 1 ether);

    uint256 weiAmount = msg.value;

    //Update total wei counter
    weiRaised = weiRaised.add(weiAmount);

    //Calc number of tokents
    uint256 tokenAmount = weiAmount.mul(rate);

    //Forward wei to wallet account
    wallet.transfer(weiAmount);

    //Transfer token to sender
    token.transfer(msg.sender, tokenAmount);
    TokenPurchase(msg.sender, wallet, weiAmount, tokenAmount);

  }



}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","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":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"_amount","type":"uint256"}],"name":"transfer","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":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","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"}]

6060604052341561000f57600080fd5b60008054600160a060020a033316600160a060020a03199091168117825581526002602052604090206b26c62ad77dc602dae0000000908190556001556106948061005b6000396000f3006060604052600436106100cf5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100d4578063095ea7b31461015e57806318160ddd1461019457806323b872dd146101b957806327e235e3146101e1578063313ce56714610200578063378dc3dc146102135780635c6581651461022657806370a082311461024b5780638da5cb5b1461026a57806395d89b41146100d4578063a9059cbb14610299578063dd62ed3e146102bb578063f2fde38b146102e0575b600080fd5b34156100df57600080fd5b6100e7610301565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012357808201518382015260200161010b565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561016957600080fd5b610180600160a060020a0360043516602435610338565b604051901515815260200160405180910390f35b341561019f57600080fd5b6101a76103a4565b60405190815260200160405180910390f35b34156101c457600080fd5b610180600160a060020a03600435811690602435166044356103aa565b34156101ec57600080fd5b6101a7600160a060020a0360043516610452565b341561020b57600080fd5b6101a7610464565b341561021e57600080fd5b6101a7610469565b341561023157600080fd5b6101a7600160a060020a0360043581169060243516610479565b341561025657600080fd5b6101a7600160a060020a0360043516610496565b341561027557600080fd5b61027d6104b1565b604051600160a060020a03909116815260200160405180910390f35b34156102a457600080fd5b610180600160a060020a03600435166024356104c0565b34156102c657600080fd5b6101a7600160a060020a03600435811690602435166104d6565b34156102eb57600080fd5b6102ff600160a060020a0360043516610501565b005b60408051908101604052600381527f53544f0000000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260036020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60015490565b600160a060020a038084166000908152600360209081526040808320339094168352929052908120548211156103df57600080fd5b600160a060020a0380851660009081526003602090815260408083203390941683529290522054610416908363ffffffff61054b16565b600160a060020a038086166000908152600360209081526040808320339094168352929052205561044884848461055d565b5060019392505050565b60026020526000908152604090205481565b601281565b6b26c62ad77dc602dae000000081565b600360209081526000928352604080842090915290825290205481565b600160a060020a031660009081526002602052604090205490565b600054600160a060020a031681565b60006104cd33848461055d565b50600192915050565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b60005433600160a060020a0390811691161461051c57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008282111561055757fe5b50900390565b600160a060020a038216151561057257600080fd5b600160a060020a0383166000908152600260205260409020548190101561059857600080fd5b600160a060020a0383166000908152600260205260409020546105c1908263ffffffff61054b16565b600160a060020a0380851660009081526002602052604080822093909355908416815220546105f6908263ffffffff61065216565b600160a060020a03808416600081815260026020526040908190209390935591908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3505050565b60008282018381101561066157fe5b93925050505600a165627a7a72305820562d0069e43340c3260baee758336c3cf470b52f577d9f334d22675b891514050029

Deployed Bytecode

0x6060604052600436106100cf5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100d4578063095ea7b31461015e57806318160ddd1461019457806323b872dd146101b957806327e235e3146101e1578063313ce56714610200578063378dc3dc146102135780635c6581651461022657806370a082311461024b5780638da5cb5b1461026a57806395d89b41146100d4578063a9059cbb14610299578063dd62ed3e146102bb578063f2fde38b146102e0575b600080fd5b34156100df57600080fd5b6100e7610301565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012357808201518382015260200161010b565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561016957600080fd5b610180600160a060020a0360043516602435610338565b604051901515815260200160405180910390f35b341561019f57600080fd5b6101a76103a4565b60405190815260200160405180910390f35b34156101c457600080fd5b610180600160a060020a03600435811690602435166044356103aa565b34156101ec57600080fd5b6101a7600160a060020a0360043516610452565b341561020b57600080fd5b6101a7610464565b341561021e57600080fd5b6101a7610469565b341561023157600080fd5b6101a7600160a060020a0360043581169060243516610479565b341561025657600080fd5b6101a7600160a060020a0360043516610496565b341561027557600080fd5b61027d6104b1565b604051600160a060020a03909116815260200160405180910390f35b34156102a457600080fd5b610180600160a060020a03600435166024356104c0565b34156102c657600080fd5b6101a7600160a060020a03600435811690602435166104d6565b34156102eb57600080fd5b6102ff600160a060020a0360043516610501565b005b60408051908101604052600381527f53544f0000000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260036020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60015490565b600160a060020a038084166000908152600360209081526040808320339094168352929052908120548211156103df57600080fd5b600160a060020a0380851660009081526003602090815260408083203390941683529290522054610416908363ffffffff61054b16565b600160a060020a038086166000908152600360209081526040808320339094168352929052205561044884848461055d565b5060019392505050565b60026020526000908152604090205481565b601281565b6b26c62ad77dc602dae000000081565b600360209081526000928352604080842090915290825290205481565b600160a060020a031660009081526002602052604090205490565b600054600160a060020a031681565b60006104cd33848461055d565b50600192915050565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b60005433600160a060020a0390811691161461051c57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008282111561055757fe5b50900390565b600160a060020a038216151561057257600080fd5b600160a060020a0383166000908152600260205260409020548190101561059857600080fd5b600160a060020a0383166000908152600260205260409020546105c1908263ffffffff61054b16565b600160a060020a0380851660009081526002602052604080822093909355908416815220546105f6908263ffffffff61065216565b600160a060020a03808416600081815260026020526040908190209390935591908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3505050565b60008282018381101561066157fe5b93925050505600a165627a7a72305820562d0069e43340c3260baee758336c3cf470b52f577d9f334d22675b891514050029

Swarm Source

bzzr://562d0069e43340c3260baee758336c3cf470b52f577d9f334d22675b89151405
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.