Token Credo Token

Email 
 

Overview [ERC-20]

Max Total Supply:
1,374,729,257.2286 CREDO

Holders:
89,978 (0.00%)

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Credo is the token you earn when someone you don’t know sends you an unsolicited email. You can use the Credo you earn to send your own emails to people you don’t know, trade it for other currencies, or hold onto it as its power increases.

ICO Information

ICO Start Date : Jul 26, 2017
ICO End Date : Sep 01, 2017
Hard Cap : $20,000,000
Raised : $ 11,330,707
ICO Price  : $0.01
Country : USA

# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Credo

Compiler Version
v0.4.9-nightly.2017.1.13+commit.392ef5f4

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.4.8;

// The implementation for the Credo smart contract was inspired by
// the Ethereum token creation tutorial, the FirstBlood token, and the BAT token.

///////////////
// SAFE MATH //
///////////////

contract SafeMath {

    function assert(bool assertion) internal {
        if (!assertion) {
            throw;
        }
    }      // assert no longer needed once solidity is on 0.4.10

    function safeAdd(uint256 x, uint256 y) internal returns(uint256) {
      uint256 z = x + y;
      assert((z >= x) && (z >= y));
      return z;
    }

    function safeSubtract(uint256 x, uint256 y) internal returns(uint256) {
      assert(x >= y);
      uint256 z = x - y;
      return z;
    }

    function safeMult(uint256 x, uint256 y) internal returns(uint256) {
      uint256 z = x * y;
      assert((x == 0)||(z/x == y));
      return z;
    }

}

////////////////////
// STANDARD TOKEN //
////////////////////

contract Token {
    uint256 public totalSupply;
    function balanceOf(address _owner) constant returns (uint256 balance);
    function transfer(address _to, uint256 _value) returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
    function approve(address _spender, uint256 _value) returns (bool success);
    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);
}


/*  ERC 20 token */
contract StandardToken is Token {

    function transfer(address _to, uint256 _value) returns (bool success) {
      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) {
      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;
}

/////////////////
// CREDO TOKEN //
/////////////////

contract Credo is StandardToken, SafeMath {
    // Descriptive properties
    string public constant name = "Credo Token";
    string public constant symbol = "CREDO";
    uint256 public constant decimals = 18;
    string public version = "1.0";

    // Account for ether proceed.
    address public etherProceedsAccount;

    // Reserve account for the remaining 90% of credos.
    address public credosReserveAccount;
    uint256 public constant credosReserveAllocation = 1350 * (10**6) * 10**decimals;

    // These params specify the start, end, min, and max of the sale.
    bool public isFinalized;
    uint256 public fundingStartBlock;
    uint256 public fundingEndBlock;
    uint256 public constant tokenCreationCap =  1500 * (10**6) * 10**decimals;
    uint256 public constant tokenCreationMin =  1355 * (10**6) * 10**decimals;

    // Setting the exchange rate for the first part of the ICO.
    uint256 public constant credoEthExchangeRate = 100000;

    // Events for logging refunds and token creation.
    event LogRefund(address indexed _to, uint256 _value);
    event CreateCredo(address indexed _to, uint256 _value);

    // constructor
    function Credo(address _etherProceedsAccount, address _credosReserveAccount, uint256 _fundingStartBlock, uint256 _fundingEndBlock)
    {
      isFinalized                    = false;
      etherProceedsAccount           = _etherProceedsAccount;
      credosReserveAccount           = _credosReserveAccount;
      fundingStartBlock              = _fundingStartBlock;
      fundingEndBlock                = _fundingEndBlock;
      totalSupply                    = credosReserveAllocation;
      balances[credosReserveAccount] = credosReserveAllocation;
      CreateCredo(credosReserveAccount, credosReserveAllocation);
    }

    function createTokens() payable external {
      if (isFinalized) throw;
      if (block.number < fundingStartBlock) throw;
      if (block.number > fundingEndBlock) throw;
      if (msg.value == 0) throw;

      uint256 tokens = safeMult(msg.value, credoEthExchangeRate);
      uint256 checkedSupply = safeAdd(totalSupply, tokens);

      if (tokenCreationCap < checkedSupply) throw;

      totalSupply = checkedSupply;
      balances[msg.sender] += tokens;
      CreateCredo(msg.sender, tokens);
    }

    function finalize() external {
      if (isFinalized) throw;
      if (msg.sender != etherProceedsAccount) throw;
      if (totalSupply < tokenCreationMin) throw;
      if (block.number <= fundingEndBlock && totalSupply != tokenCreationCap) throw;

      isFinalized = true;

      if (!etherProceedsAccount.send(this.balance)) throw;
    }

    function refund() external {
      if (isFinalized) throw;
      if (block.number <= fundingEndBlock) throw;
      if (totalSupply >= tokenCreationMin) throw;
      if (msg.sender == credosReserveAccount) throw;
      uint256 credoVal = balances[msg.sender];
      if (credoVal == 0) throw;
      balances[msg.sender] = 0;
      totalSupply = safeSubtract(totalSupply, credoVal);
      uint256 ethVal = credoVal / credoEthExchangeRate;
      LogRefund(msg.sender, ethVal);
      if (!msg.sender.send(ethVal)) throw;
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"credosReserveAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"credoEthExchangeRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenCreationCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"credosReserveAccount","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingEndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"createTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"tokenCreationMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingStartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"etherProceedsAccount","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_etherProceedsAccount","type":"address"},{"name":"_credosReserveAccount","type":"address"},{"name":"_fundingStartBlock","type":"uint256"},{"name":"_fundingEndBlock","type":"uint256"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"LogRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"CreateCredo","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"}]

60a0604052600360608190527f312e3000000000000000000000000000000000000000000000000000000000006080908152815460008390527f312e30000000000000000000000000000000000000000000000000000000000683557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b602060026001841615610100026000190190931692909204601f01919091048101918391906100d3565b828001600101855582156100d3579182015b828111156100d35782518255916020019190600101906100b8565b5b506100f49291505b808211156100f057600081556001016100dc565b5090565b50503461000057604051608080610e6c83398101604090815281516020830151918301516060909301519092905b6005805460048054600160a060020a031916600160a060020a0388811691909117909155600160a860020a031990911685821617808355600685905560078490556b045cb19ea48cad1f06000000600081815591831682526001602090815260409283902082905593548251918252915191909216927fbfc2a675c4bd0afbe0cb2ff55bf6510506a38b84de44f08af9c5d677f1aa1f12928290030190a25b505050505b610c97806101d56000396000f3006060604052361561010c5763ffffffff60e060020a60003504166306fdde038114610111578063095ea7b31461019e57806318160ddd146101ce57806323b872dd146101ed578063313ce5671461022357806348794149146102425780634bb278f31461026157806354fd4d5014610270578063590e1ae3146102fd5780636e083bc71461030c5780636f7920fd1461032b57806370a082311461034a5780637c8e4e25146103755780638d4e40831461039e57806391b43d13146103bf57806395d89b41146103de578063a9059cbb1461046b578063b44272631461049b578063c039daf6146104a5578063d648a647146104c4578063dd62ed3e146104e3578063f3333e7f14610514575b610000565b346100005761011e61053d565b604080516020808252835181830152835191928392908301918501908083838215610164575b80518252602083111561016457601f199092019160209182019101610144565b505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576101ba600160a060020a0360043516602435610574565b604080519115158252519081900360200190f35b34610000576101db6105df565b60408051918252519081900360200190f35b34610000576101ba600160a060020a03600435811690602435166044356105e5565b604080519115158252519081900360200190f35b34610000576101db6106db565b60408051918252519081900360200190f35b34610000576101db6106e0565b60408051918252519081900360200190f35b346100005761026e6106f0565b005b346100005761011e6107c4565b604080516020808252835181830152835191928392908301918501908083838215610164575b80518252602083111561016457601f199092019160209182019101610144565b505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b346100005761026e610852565b005b34610000576101db61097e565b60408051918252519081900360200190f35b34610000576101db610985565b60408051918252519081900360200190f35b34610000576101db600160a060020a0360043516610995565b60408051918252519081900360200190f35b34610000576103826109b4565b60408051600160a060020a039092168252519081900360200190f35b34610000576101ba6109c3565b604080519115158252519081900360200190f35b34610000576101db6109d3565b60408051918252519081900360200190f35b346100005761011e6109d9565b604080516020808252835181830152835191928392908301918501908083838215610164575b80518252602083111561016457601f199092019160209182019101610144565b505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576101ba600160a060020a0360043516602435610a10565b604080519115158252519081900360200190f35b61026e610abc565b005b34610000576101db610b97565b60408051918252519081900360200190f35b34610000576101db610ba7565b60408051918252519081900360200190f35b34610000576101db600160a060020a0360043581169060243516610bad565b60408051918252519081900360200190f35b3461000057610382610bda565b60408051600160a060020a039092168252519081900360200190f35b60408051808201909152600b81527f437265646f20546f6b656e000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60005481565b600160a060020a0383166000908152600160205260408120548290108015906106355750600160a060020a0380851660009081526002602090815260408083203390941683529290522054829010155b80156106415750600082115b156106cf57600160a060020a03808416600081815260016020908152604080832080548801905588851680845281842080548990039055600283528184203390961684529482529182902080548790039055815186815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060016106d3565b5060005b5b9392505050565b601281565b6b045cb19ea48cad1f0600000081565b60055460a060020a900460ff161561070757610000565b60045433600160a060020a0390811691161461072257610000565b6000546b0460d4692f96adc32b00000090101561073e57610000565b600754431115801561075e57506000546b04d8c55aefb8c05b5c00000014155b1561076857610000565b6005805474ff0000000000000000000000000000000000000000191660a060020a179055600454604051600160a060020a039182169130163180156108fc02916000818181858888f1935050505015156107c157610000565b5b565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561084a5780601f1061081f5761010080835404028352916020019161084a565b820191906000526020600020905b81548152906001019060200180831161082d57829003601f168201915b505050505081565b600554600090819060a060020a900460ff161561086e57610000565b600754431161087c57610000565b6000546b0460d4692f96adc32b000000901061089757610000565b60055433600160a060020a03908116911614156108b357610000565b600160a060020a03331660009081526001602052604090205491508115156108da57610000565b600160a060020a0333166000908152600160205260408120819055546109009083610be9565b6000555060408051620186a083048082529151600160a060020a033316917fb6c0eca8138e097d71e2dd31e19a1266487f0553f170b7260ffe68bcbe9ff8a7919081900360200190a2604051600160a060020a0333169082156108fc029083906000818181858888f19350505050151561097957610000565b5b5050565b620186a081565b6b04d8c55aefb8c05b5c00000081565b600160a060020a0381166000908152600160205260409020545b919050565b600554600160a060020a031681565b60055460a060020a900460ff1681565b60075481565b60408051808201909152600581527f435245444f000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a033316600090815260016020526040812054829010801590610a395750600082115b15610aad57600160a060020a03338116600081815260016020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060016105d9565b5060006105d9565b5b92915050565b600554600090819060a060020a900460ff1615610ad857610000565b600654431015610ae757610000565b600754431115610af657610000565b341515610b0257610000565b610b0f34620186a0610c07565b9150610b1d60005483610c33565b90506b04d8c55aefb8c05b5c00000081901015610b3957610000565b6000818155600160a060020a033316808252600160209081526040928390208054860190558251858152925191927fbfc2a675c4bd0afbe0cb2ff55bf6510506a38b84de44f08af9c5d677f1aa1f12929081900390910190a25b5050565b6b0460d4692f96adc32b00000081565b60065481565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600454600160a060020a031681565b60006000610bf983851015610c5b565b5050808203805b5092915050565b6000828202610c28841580610c23575083858381156100005704145b610c5b565b8091505b5092915050565b6000828201610c28848210801590610c235750838210155b610c5b565b8091505b5092915050565b801515610c6757610000565b5b505600a165627a7a72305820194027c4718b6459a2a365439dc1ba090e71ed8ba136dc9318210808dd3f646d0029000000000000000000000000cc2de4acf7af057f51fc8b4f9fd7a6a09d5a2b0d00000000000000000000000025ca1529e389b2ac8ddf61431704e836f17b55be00000000000000000000000000000000000000000000000000000000003a24bf00000000000000000000000000000000000000000000000000000000003aeb00

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000cc2de4acf7af057f51fc8b4f9fd7a6a09d5a2b0d00000000000000000000000025ca1529e389b2ac8ddf61431704e836f17b55be00000000000000000000000000000000000000000000000000000000003a24bf00000000000000000000000000000000000000000000000000000000003aeb00

-----Decoded View---------------
Arg [0] : _etherProceedsAccount (address): 0xCC2De4Acf7aF057f51FC8B4f9fd7a6A09D5A2B0D
Arg [1] : _credosReserveAccount (address): 0x25Ca1529E389b2AC8dDF61431704E836f17B55be
Arg [2] : _fundingStartBlock (uint256): 3810495
Arg [3] : _fundingEndBlock (uint256): 3861248

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000cc2de4acf7af057f51fc8b4f9fd7a6a09d5a2b0d
Arg [1] : 00000000000000000000000025ca1529e389b2ac8ddf61431704e836f17b55be
Arg [2] : 00000000000000000000000000000000000000000000000000000000003a24bf
Arg [3] : 00000000000000000000000000000000000000000000000000000000003aeb00


Swarm Source

bzzr://194027c4718b6459a2a365439dc1ba090e71ed8ba136dc9318210808dd3f646d

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.