ETH Price: $2,917.54 (+2.69%)
 

Overview

Max Total Supply

10,000,000 Word

Holders

1,557

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
100.2368731 Word

Value
$0.00
0xec5f808321f6aab6b37612fa61c0741a4975174a
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
WordCoin

Compiler Version
v0.4.13-nightly.2017.7.6+commit.40d4ee49

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-07
*/

pragma solidity ^0.4.11;

contract DSNote {
    event LogNote(
    bytes4   indexed  sig,
    address  indexed  guy,
    bytes32  indexed  foo,
    bytes32  indexed  bar,
    uint	 	  wad,
    bytes             fax
    ) anonymous;

    modifier note {
        bytes32 foo;
        bytes32 bar;

        assembly {
        foo := calldataload(4)
        bar := calldataload(36)
        }

        LogNote(msg.sig, msg.sender, foo, bar, msg.value, msg.data);

        _;
    }
}

contract ERC20 {
    function totalSupply() constant returns (uint supply);
    function balanceOf( address who ) constant returns (uint value);
    function allowance( address owner, address spender ) constant returns (uint _allowance);

    function transfer( address to, uint value) returns (bool ok);
    function transferFrom( address from, address to, uint value) returns (bool ok);
    function approve( address spender, uint value ) returns (bool ok);

    event Transfer( address indexed from, address indexed to, uint value);
    event Approval( address indexed owner, address indexed spender, uint value);
}

contract DSAuthority {
    function canCall(
    address src, address dst, bytes4 sig
    ) constant returns (bool);
}

contract DSAuthEvents {
    event LogSetAuthority (address indexed authority);
    event LogSetOwner     (address indexed owner);
}

contract DSAuth is DSAuthEvents {
    DSAuthority  public  authority;
    address      public  owner;

    function DSAuth() {
        owner = msg.sender;
        LogSetOwner(msg.sender);
    }

    function setOwner(address owner_)
    auth
    {
        owner = owner_;
        LogSetOwner(owner);
    }

    function setAuthority(DSAuthority authority_)
    auth
    {
        authority = authority_;
        LogSetAuthority(authority);
    }

    modifier auth {
        assert(isAuthorized(msg.sender, msg.sig));
        _;
    }

    modifier authorized(bytes4 sig) {
        assert(isAuthorized(msg.sender, sig));
        _;
    }

    function isAuthorized(address src, bytes4 sig) internal returns (bool) {
        if (src == address(this)) {
            return true;
        } else if (src == owner) {
            return true;
        } else if (authority == DSAuthority(0)) {
            return false;
        } else {
            return authority.canCall(src, this, sig);
        }
    }

    function assert(bool x) internal {
        if (!x) revert();
    }
}

contract DSExec {
    function tryExec( address target, bytes calldata, uint value)
    internal
    returns (bool call_ret)
    {
        return target.call.value(value)(calldata);
    }
    function exec( address target, bytes calldata, uint value)
    internal
    {
        if(!tryExec(target, calldata, value)) {
            revert();
        }
    }

    // Convenience aliases
    function exec( address t, bytes c )
    internal
    {
        exec(t, c, 0);
    }
    function exec( address t, uint256 v )
    internal
    {
        bytes memory c; exec(t, c, v);
    }
    function tryExec( address t, bytes c )
    internal
    returns (bool)
    {
        return tryExec(t, c, 0);
    }
    function tryExec( address t, uint256 v )
    internal
    returns (bool)
    {
        bytes memory c; return tryExec(t, c, v);
    }
}

contract DSMath {

    /*
    standard uint256 functions
     */

    function add(uint256 x, uint256 y) constant internal returns (uint256 z) {
        assert((z = x + y) >= x);
    }

    function sub(uint256 x, uint256 y) constant internal returns (uint256 z) {
        assert((z = x - y) <= x);
    }

    function mul(uint256 x, uint256 y) constant internal returns (uint256 z) {
        assert((z = x * y) >= x);
    }

    function div(uint256 x, uint256 y) constant internal returns (uint256 z) {
        z = x / y;
    }

    function min(uint256 x, uint256 y) constant internal returns (uint256 z) {
        return x <= y ? x : y;
    }
    function max(uint256 x, uint256 y) constant internal returns (uint256 z) {
        return x >= y ? x : y;
    }

    /*
    uint128 functions (h is for half)
     */


    function hadd(uint128 x, uint128 y) constant internal returns (uint128 z) {
        assert((z = x + y) >= x);
    }

    function hsub(uint128 x, uint128 y) constant internal returns (uint128 z) {
        assert((z = x - y) <= x);
    }

    function hmul(uint128 x, uint128 y) constant internal returns (uint128 z) {
        assert((z = x * y) >= x);
    }

    function hdiv(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = x / y;
    }

    function hmin(uint128 x, uint128 y) constant internal returns (uint128 z) {
        return x <= y ? x : y;
    }
    function hmax(uint128 x, uint128 y) constant internal returns (uint128 z) {
        return x >= y ? x : y;
    }


    /*
    int256 functions
     */

    function imin(int256 x, int256 y) constant internal returns (int256 z) {
        return x <= y ? x : y;
    }
    function imax(int256 x, int256 y) constant internal returns (int256 z) {
        return x >= y ? x : y;
    }

    /*
    WAD math
     */

    uint128 constant WAD = 10 ** 18;

    function wadd(uint128 x, uint128 y) constant internal returns (uint128) {
        return hadd(x, y);
    }

    function wsub(uint128 x, uint128 y) constant internal returns (uint128) {
        return hsub(x, y);
    }

    function wmul(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = cast((uint256(x) * y + WAD / 2) / WAD);
    }

    function wdiv(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = cast((uint256(x) * WAD + y / 2) / y);
    }

    function wmin(uint128 x, uint128 y) constant internal returns (uint128) {
        return hmin(x, y);
    }
    function wmax(uint128 x, uint128 y) constant internal returns (uint128) {
        return hmax(x, y);
    }

    /*
    RAY math
     */

    uint128 constant RAY = 10 ** 27;

    function radd(uint128 x, uint128 y) constant internal returns (uint128) {
        return hadd(x, y);
    }

    function rsub(uint128 x, uint128 y) constant internal returns (uint128) {
        return hsub(x, y);
    }

    function rmul(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = cast((uint256(x) * y + RAY / 2) / RAY);
    }

    function rdiv(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = cast((uint256(x) * RAY + y / 2) / y);
    }

    function rpow(uint128 x, uint64 n) constant internal returns (uint128 z) {
        // This famous algorithm is called "exponentiation by squaring"
        // and calculates x^n with x as fixed-point and n as regular unsigned.
        //
        // It's O(log n), instead of O(n) for naive repeated multiplication.
        //
        // These facts are why it works:
        //
        //  If n is even, then x^n = (x^2)^(n/2).
        //  If n is odd,  then x^n = x * x^(n-1),
        //   and applying the equation for even x gives
        //    x^n = x * (x^2)^((n-1) / 2).
        //
        //  Also, EVM division is flooring and
        //    floor[(n-1) / 2] = floor[n / 2].

        z = n % 2 != 0 ? x : RAY;

        for (n /= 2; n != 0; n /= 2) {
            x = rmul(x, x);

            if (n % 2 != 0) {
                z = rmul(z, x);
            }
        }
    }

    function rmin(uint128 x, uint128 y) constant internal returns (uint128) {
        return hmin(x, y);
    }
    function rmax(uint128 x, uint128 y) constant internal returns (uint128) {
        return hmax(x, y);
    }

    function cast(uint256 x) constant internal returns (uint128 z) {
        assert((z = uint128(x)) == x);
    }

}

contract DSStop is DSAuth, DSNote {

    bool public stopped;

    modifier stoppable {
        assert (!stopped);
        _;
    }
    function stop() auth note {
        stopped = true;
    }
    function start() auth note {
        stopped = false;
    }

}

contract DSTokenBase is ERC20, DSMath {
    uint256                                            _supply;
    mapping (address => uint256)                       _balances;
    mapping (address => mapping (address => uint256))  _approvals;

    function DSTokenBase(uint256 supply) {
        _balances[msg.sender] = supply;
        _supply = supply;
    }

    function totalSupply() constant returns (uint256) {
        return _supply;
    }
    function balanceOf(address src) constant returns (uint256) {
        return _balances[src];
    }
    function allowance(address src, address guy) constant returns (uint256) {
        return _approvals[src][guy];
    }

    function transfer(address dst, uint wad) returns (bool) {
        assert(_balances[msg.sender] >= wad);

        _balances[msg.sender] = sub(_balances[msg.sender], wad);
        _balances[dst] = add(_balances[dst], wad);

        Transfer(msg.sender, dst, wad);

        return true;
    }

    function transferFrom(address src, address dst, uint wad) returns (bool) {
        assert(_balances[src] >= wad);
        assert(_approvals[src][msg.sender] >= wad);

        _approvals[src][msg.sender] = sub(_approvals[src][msg.sender], wad);
        _balances[src] = sub(_balances[src], wad);
        _balances[dst] = add(_balances[dst], wad);

        Transfer(src, dst, wad);

        return true;
    }

    function approve(address guy, uint256 wad) returns (bool) {
        _approvals[msg.sender][guy] = wad;

        Approval(msg.sender, guy, wad);

        return true;
    }

}

contract DSToken is DSTokenBase(0), DSStop {

    string  public  symbol;
    uint256  public  decimals = 8; // standard token precision. override to customize

    function DSToken(string symbol_) {
        symbol = symbol_;
    }

    function transfer(address dst, uint wad) stoppable note returns (bool) {
        return super.transfer(dst, wad);
    }
    function transferFrom(
    address src, address dst, uint wad
    ) stoppable note returns (bool) {
        return super.transferFrom(src, dst, wad);
    }
    function approve(address guy, uint wad) stoppable note returns (bool) {
        return super.approve(guy, wad);
    }

    function push(address dst, uint128 wad) returns (bool) {
        return transfer(dst, wad);
    }

    function pull(address src, uint128 wad) returns (bool) {
        return transferFrom(src, msg.sender, wad);
    }

    function mint(uint128 wad) auth stoppable note {
        _balances[msg.sender] = add(_balances[msg.sender], wad);
        _supply = add(_supply, wad);
    }
    function burn(uint128 wad) auth stoppable note {
        _balances[msg.sender] = sub(_balances[msg.sender], wad);
        _supply = sub(_supply, wad);
    }

    // Optional token name

    string public  name = "";

    function setName(string name_) auth {
        name = name_;
    }

}

contract WordCoin is DSToken('Word'){
    address public OfferContract;

    uint public tokenSellCost;
    uint public tokenBuyCost;
    bool public isSellable;
    uint public secondsAfter;
    uint public depositPercents;

    address public ICOContract;
    address public preICOContract;

    struct Deposit {
    uint amount;
    uint time;
    }

    mapping (address => uint) public reservedCoins;
    mapping (address => Deposit) public deposits;

    event LogBounty(address user, uint amount, string message);
    event LogEtherBounty(address user, uint amount, string message);
    event LogSendReward(address from, address to, string message);
    event LogBuyCoins(address user, uint value, string message);
    event LogGetEther(address user, uint value, string message);
    event LogMakeDeposit(address user, uint value, string message);
    event LogGetDeposit(address user, uint value, string message);

    function WordCoin(){
    }


    modifier sellable {
        assert(isSellable);
        _;
    }

    modifier onlyOffer {
        assert(msg.sender == OfferContract);
        _;
    }

    modifier onlypreICO {
        assert(msg.sender == preICOContract);
        _;
    }

    modifier onlyICO {
        assert(msg.sender == ICOContract);
        _;
    }

    function setICO(address ICO) auth {
        ICOContract = ICO;
    }

    function setPreICO(address preICO) auth {
        preICOContract = preICO;
    }

    function preICOmint(uint128 wad) onlypreICO {
        _balances[msg.sender] = add(_balances[msg.sender], wad);
        _supply = add(_supply, wad);
    }


    function ICOmint(uint128 wad) onlyICO {
        _balances[msg.sender] = add(_balances[msg.sender], wad);
        _supply = add(_supply, wad);
    }


    function bounty(address user, uint amount) auth {
        assert(_balances[this] >= amount);

        _balances[user] += amount;
        _balances[this] -= amount;
        LogBounty(user, amount, "Sent bounty");
    }


    function etherBounty(address user, uint amount) auth {
        assert(this.balance >= amount);
        user.transfer(amount);
        LogEtherBounty(user, amount, "Sent ether bounty");
    }


    function sendReward(address from, address to, uint value) onlyOffer {
        reservedCoins[from] -= value;
        _balances[to] += value;
        LogSendReward(from, to, "Sent reward");
    }


    function reserveCoins(address from, uint value) onlyOffer {
        _balances[from] -= value;
        reservedCoins[from] += value;
    }


    function declineCoins(address from, uint value) onlyOffer {
        _balances[from] += value;
        reservedCoins[from] -= value;
    }


    function getEther(uint128 amount) sellable {
        // exchange coins to Ethers with exchange course
        assert(tokenSellCost > 0);
        assert(div(mul(_balances[msg.sender], 10), 100) >= amount);
        super.push(this, amount);
        msg.sender.transfer(amount * tokenSellCost);
        LogGetEther(msg.sender, amount * tokenSellCost, "Got Ether");
    }


    function makeDeposit(uint amount) {
        assert(_balances[msg.sender] > amount);
        assert(deposits[msg.sender].amount == 0);

        deposits[msg.sender].amount = amount;
        deposits[msg.sender].time = now;
        _balances[msg.sender] -= amount;
        _balances[this] += amount;
        LogMakeDeposit(msg.sender, amount, "Made deposit");
    }


    function getDeposit() {
        assert(deposits[msg.sender].amount != 0);
        assert(now > (deposits[msg.sender].time + mul(secondsAfter, 1 seconds)));
        assert(_balances[this] > div(mul(deposits[msg.sender].amount, add(100, depositPercents)), 100));

        uint amount = div(mul(deposits[msg.sender].amount, add(100, depositPercents)), 100);
        deposits[msg.sender].amount = 0;
        _balances[msg.sender]  += amount;
        _balances[this] -= amount;
        LogGetDeposit(msg.sender, amount, "Got deposit");
    }


    function setBuyCourse(uint course) auth {
        isSellable = false;
        tokenBuyCost = course;
    }

    function setSellCourse(uint course) auth {
        isSellable = false;
        tokenSellCost = course;
    }

    function setSellable(bool sellable) auth {
        isSellable = sellable;
    }


    function setOfferContract(address offerContract) auth {
        OfferContract = offerContract;
    }


    function setSecondsAfter(uint secondsForDeposit) auth {
        secondsAfter = secondsForDeposit;
    }


    function setDepositPercents(uint percents) auth {
        depositPercents = percents;
    }


    function takeEther() payable auth {}


    function () payable sellable {
        uint amount = div(msg.value, tokenBuyCost);
        _balances[this] -= amount;
        _balances[msg.sender] += amount;
        LogBuyCoins(msg.sender, amount, "Coins bought");
    }
}

contract preICO is DSAuth, DSExec, DSMath {

    WordCoin  public  coin;
    address public ICO;

    address[] investorsArray;

    struct Investor {
    uint amount;
    uint tokenAmount;
    bool tokenSent;
    bool rewardSent;
    bool largeBonusSent;
    }

    mapping (address => Investor) public investors;

    uint public deadline;
    uint public start;
    uint public countDays;

    bool public autoTokenSent;

    uint public totalDonations;
    uint public totalDonationsWithBonuses;
    uint public donationsCount;
    uint public ethReward;

    uint128 public preICOTokenAmount;
    uint128 public preICOTokenRemaining;

    uint128 public preICOTokenReward;
    uint128 public preICOTokenRewardRemaining;

    event LogBounty(address user, uint128 amount, string result);
    event LogBounty256(address user, uint amount, string result);
    event LogPush(address user, uint128 amount, string result);
    event LogTokenSent(address user, bool amount, string result);

    modifier afterDeadline() {
        assert(now >= deadline);
        _;
    }

    event LogDonation(address user, string message);
    event LogTransferOwnership(address user, string message);
    event LogSendTokens(address user, uint amount, string message);
    event LogSendPOSTokens(address user, uint amount, string message);

    function preICO(uint initCountDays){
        countDays = initCountDays;
        preICOTokenAmount = 200000000000000;
        preICOTokenRemaining = 200000000000000;
        preICOTokenReward = 20000000000000;
        preICOTokenRewardRemaining = 20000000000000;
    }


    function setCoin(WordCoin initCoin) auth {
        assert(preICOTokenAmount > 0);
        start = now;
        deadline = now + countDays * 1 days;
        coin = initCoin;
        coin.preICOmint(uint128(add(uint256(preICOTokenReward),uint256(preICOTokenAmount))));
    }


    function sendTokens() afterDeadline {
        assert(!investors[msg.sender].tokenSent);

        uint amount = div(mul(investors[msg.sender].amount, preICOTokenAmount), uint256(totalDonationsWithBonuses));

        coin.push(msg.sender, uint128(amount));
        preICOTokenRemaining -= uint128(amount);
        investors[msg.sender].tokenSent = true;
        investors[msg.sender].tokenAmount = amount;
        LogSendTokens(msg.sender, amount, "Sent tokens");
    }

    function autoSend() afterDeadline {
        LogDonation(msg.sender, "START");
        assert(!autoTokenSent);
        for (uint i = 0; i < investorsArray.length; i++) {
            LogSendTokens(msg.sender, uint256(totalDonationsWithBonuses), "TOTAL");
            uint amount = div(mul(investors[investorsArray[i]].amount, preICOTokenAmount), uint256(totalDonationsWithBonuses));
            LogSendTokens(msg.sender, amount, "TOTAL");
            if (!investors[investorsArray[i]].tokenSent) {
                coin.push(investorsArray[i], uint128(amount));
                LogSendTokens(msg.sender, amount, "PUSH");
                investors[investorsArray[i]].tokenAmount = amount;
                investors[investorsArray[i]].tokenSent = true;
            }
        }
        autoTokenSent = true;
    }

    function setICOContract(address ico) auth{
        ICO = ico;
    }


    function getEthers(uint amount) auth {
        assert(amount > 0);
        assert(this.balance - amount >= 0);
        assert(msg.sender == owner);
        owner.transfer(amount);
    }


    function getLargeBonus() {
        assert(investors[msg.sender].amount > 7 ether);
        assert(!investors[msg.sender].largeBonusSent);

        uint amount = div(mul(investors[msg.sender].tokenAmount,10),100);
        coin.push(msg.sender, uint128(amount));
        preICOTokenRewardRemaining -= uint128(amount);
        investors[msg.sender].largeBonusSent = true;

        LogSendTokens(msg.sender, amount, "Sent tokens for 7 Eth donate");
    }

    function sendICOTokensBack(uint128 amount) afterDeadline auth{
        assert(coin.balanceOf(this) > amount);
        coin.push(msg.sender, amount);
    }

    function part( address who ) public constant returns (uint part) {
        part = div(mul(investors[who].amount, 1000000), totalDonationsWithBonuses);
    }

    function rewardWasSent (address who) public constant returns (bool wasSent)  {
        wasSent = investors[who].rewardSent;
    }

    function setRewardWasSent (address who) {
        assert(msg.sender == ICO);
        investors[who].rewardSent = true;
    }

    function () payable {
        assert(now <= deadline);
        assert(msg.sender !=  address(0));
        assert(msg.value != 0);
        assert(preICOTokenRemaining > 0);

        uint percents = 0;

        if (sub(now,start) < 24 hours) {
            percents = sub(24, div(sub(now,start), 1 hours));
        }

        uint extraDonation = div(msg.value, 100) * percents;

        investors[msg.sender].tokenSent = false;
        totalDonationsWithBonuses += add(msg.value, extraDonation);
        totalDonations += msg.value;

        investors[msg.sender].amount += add(msg.value, extraDonation);
        donationsCount++;

        investorsArray.push(msg.sender);

        LogDonation(msg.sender, "Donation was made");
    }
}


contract ICO is DSAuth, DSExec, DSMath {
    uint128 public ICOAmount;
    uint128 public ICOReward;

    address[] investorsArray;

    struct preICOInvestor {
    uint amount;
    bool tokenSent;
    bool rewardSent;
    bool largeBonusSent;
    }

    mapping (address => preICOInvestor) public investors;

    preICO public preico;
    WordCoin public coin;
    bool public canGiveMoneyBack;
    bool public rewardSent;
    uint public cost;
    uint public tokenCost;

    bool public isICOStopped;

    uint public totalDonations;

    uint public totalDonationsWithBonuses;

    modifier allowGetMoneyBack() {
        assert(canGiveMoneyBack);
        _;
    }

    modifier ICOStopped() {
        assert(isICOStopped);
        _;
    }

    event LogSetPreICO(preICO preicoAddress, string message);
    event LogStartWeek(string message);
    event LogGetMoneyBack(address user, uint value, string message);
    event LogMoneyToPreICO(address user, uint value, string message);
    event LogBuyTokens(address user, uint value, string message);
    event LogSendPOSTokens(address user, uint value, string message);
    event LogTransferOwnership(address user, string message);
    event Log1(uint128 la, string message);
    event Log2(bool la, string message);

    function ICO(){
        ICOAmount = 500000000000000;
        ICOReward = 10000000000000;
    }

    function setPreICO(preICO initPreICO) auth {
        assert(initPreICO != address(0));
        preico = initPreICO;
    }

    function getEthers(uint amount) auth {
        assert(amount > 0);
        assert(this.balance - amount >= 0);
        assert(msg.sender == owner);
        owner.transfer(amount);
    }

    function startWeekOne() auth {
        assert(preico != address(0));
        tokenCost = div(preico.totalDonations(), preico.preICOTokenAmount());
        cost = 100;
        LogStartWeek("First week started");
    }


    function startWeekTwo() auth {
        cost = 105;
        LogStartWeek("Second week started");
    }

    function startWeekThree() auth {
        cost = 110;
        LogStartWeek("Third week started");
    }


    function startWeekFour() auth {
        cost = 115;
        LogStartWeek("Fourth week started");
    }


    function startWeekFive() auth {
        cost = 120;
        LogStartWeek("Last week started");
    }


    function setCanGetMoneyBack(bool value) auth {
        canGiveMoneyBack = value;
    }


    function setTokenCost(uint newTokenCost) auth {
        assert(newTokenCost > 0);
        tokenCost = newTokenCost;
    }


    function getMoneyBack() allowGetMoneyBack {
        assert(investors[msg.sender].amount > 0);
        msg.sender.transfer(investors[msg.sender].amount);
        investors[msg.sender].amount = 0;
        LogGetMoneyBack(msg.sender, investors[msg.sender].amount, "Money returned");
    }


    function setCoin(WordCoin initCoin) auth {
        assert(ICOAmount > 0);
        coin = initCoin;
        coin.ICOmint(uint128(add(uint256(ICOAmount),uint256(ICOReward))));
    }

    function sendPOSTokens() ICOStopped {
        assert(!investors[msg.sender].rewardSent);
        assert(investors[msg.sender].amount > 0);
        assert(ICOReward > 0);

        uint amount = div(mul(investors[msg.sender].amount, ICOReward), uint256(totalDonations));

        investors[msg.sender].rewardSent = true;

        coin.push(msg.sender, uint128(amount));
        ICOReward -= uint128(amount);
        LogSendPOSTokens(msg.sender, amount, "Sent prize tokens");
    }

    function sendEthForReward() ICOStopped {
        assert(!preico.rewardWasSent(msg.sender));
        uint amount = div(mul(totalDonations, 3), 100);
        uint ethAmountForReward = div(mul(amount,preico.part(msg.sender)), 1000000);
        preico.setRewardWasSent(msg.sender);
        msg.sender.transfer(ethAmountForReward);
    }

    function sendICOTokensBack(uint128 amount) ICOStopped auth{
        assert(coin.balanceOf(this) > amount);
        coin.push(msg.sender, amount);
    }

    function setBigICOStopped(bool stop) auth{
        isICOStopped = stop;
    }

    function() payable {
        assert(msg.sender !=  address(0));
        assert(msg.value != 0);
        assert(cost > 0);
        assert(tokenCost > 0);
        assert(ICOAmount > 0);
        assert(!isICOStopped);

        investors[msg.sender].amount += msg.value;

        totalDonations += msg.value;
        uint amount = div(msg.value, div(mul(tokenCost, cost), 100));
        if (msg.value > 7 ether) {
            amount = div(mul(amount, 110),100);
        }
        coin.push(msg.sender, uint128(amount));
        ICOAmount -= uint128(amount);

        investorsArray.push(msg.sender);

        LogBuyTokens(msg.sender, amount, "Tokens bought");
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"reservedCoins","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"makeDeposit","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"secondsForDeposit","type":"uint256"}],"name":"setSecondsAfter","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"preICOContract","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"takeEther","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint128"}],"name":"push","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"depositPercents","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"}],"name":"reserveCoins","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"}],"name":"declineCoins","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint128"}],"name":"getEther","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenBuyCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"amount","type":"uint256"}],"name":"bounty","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"sellable","type":"bool"}],"name":"setSellable","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ICOContract","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint128"}],"name":"mint","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"sendReward","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"course","type":"uint256"}],"name":"setBuyCourse","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"preICO","type":"address"}],"name":"setPreICO","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"percents","type":"uint256"}],"name":"setDepositPercents","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"secondsAfter","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"wad","type":"uint128"}],"name":"pull","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint128"}],"name":"burn","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"offerContract","type":"address"}],"name":"setOfferContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint128"}],"name":"preICOmint","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"ICO","type":"address"}],"name":"setICO","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"course","type":"uint256"}],"name":"setSellCourse","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"getDeposit","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name_","type":"string"}],"name":"setName","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"OfferContract","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint128"}],"name":"ICOmint","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isSellable","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"guy","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"amount","type":"uint256"}],"name":"etherBounty","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenSellCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"deposits","outputs":[{"name":"amount","type":"uint256"},{"name":"time","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"message","type":"string"}],"name":"LogBounty","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"message","type":"string"}],"name":"LogEtherBounty","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"message","type":"string"}],"name":"LogSendReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"message","type":"string"}],"name":"LogBuyCoins","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"message","type":"string"}],"name":"LogGetEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"message","type":"string"}],"name":"LogMakeDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"message","type":"string"}],"name":"LogGetDeposit","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","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"}]

6060604052600860065560206040519081016040526000815260079080516200002d929160200190620000fe565b5034156200003a57600080fd5b5b60408051908101604052600481527f576f72640000000000000000000000000000000000000000000000000000000060208201525b5b60005b600160a060020a03331660009081526001602052604081208290558190555b5060048054600160a060020a03191633600160a060020a03169081179091557fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a25b6005818051620000f4929160200190620000fe565b505b505b620001a8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014157805160ff191683800117855562000171565b8280016001018555821562000171579182015b828111156200017157825182559160200191906001019062000154565b5b506200018092915062000184565b5090565b620001a591905b808211156200018057600081556001016200018b565b5090565b90565b61230080620001b86000396000f300606060405236156102595763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302ab47818114610332578063059a500c1461036357806306fdde031461037b57806307da68f514610406578063095ea7b31461041b5780630e4983ff1461045157806313af40351461046957806314f3f4911461048a5780631565c3c8146104b957806318160ddd146104c357806323b872dd146104e8578063313ce567146105245780633452f51d146105495780633b7cbfcf146105885780633e112ed7146105ad578063414bbda2146105d157806345b9ca21146105f55780634eee8c251461061657806353ad42ef1461063b57806361eb71c11461065f578063682806a01461067957806369d3e20e146106a85780636b1af75e146106c95780636e217d30146106f357806370a082311461070b57806375f12b211461073c5780637a9e5e4b146107635780637de3613814610784578063801137e7146107a55780638154b57c146107bd5780638402181f146107e25780638da5cb5b1461082157806390bc16931461085057806392a48bea1461087157806395d89b4114610892578063a9059cbb1461091d578063abd89e1e14610953578063b6f50c2914610974578063be9a655514610995578063bf7e214f146109aa578063c30381b9146109d9578063c399ec88146109f1578063c47f002714610a06578063ce5fd7f314610a59578063d176318014610a88578063d6e95f7714610aa9578063dd62ed3e14610ad0578063ecf7105e14610b07578063f1687a8d14610b2b578063fc7e286d14610b50575b6103305b600b5460009061026f9060ff16610b87565b61027b34600a54610b97565b600160a060020a0330811660009081526001602052604080822080548590039055339283168252908190208054840190559192507fe4e609de4ab433429823013d96817ed751a4b0c8e73f1ed866b1b11964750c1c91839051600160a060020a039092168252602082015260606040808301829052600c918301919091527f436f696e7320626f756768740000000000000000000000000000000000000000608083015260a0909101905180910390a15b5b50565b005b341561033d57600080fd5b610351600160a060020a0360043516610bae565b60405190815260200160405180910390f35b341561036e57600080fd5b610330600435610bc0565b005b341561038657600080fd5b61038e610ccb565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103cb5780820151818401525b6020016103b2565b50505050905090810190601f1680156103f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561041157600080fd5b610330610d69565b005b341561042657600080fd5b61043d600160a060020a0360043516602435610e08565b604051901515815260200160405180910390f35b341561045c57600080fd5b610330600435610e8f565b005b341561047457600080fd5b610330600160a060020a0360043516610eb7565b005b341561049557600080fd5b61049d610f35565b604051600160a060020a03909116815260200160405180910390f35b610330610f44565b005b34156104ce57600080fd5b610351610f66565b60405190815260200160405180910390f35b34156104f357600080fd5b61043d600160a060020a0360043581169060243516604435610f6d565b604051901515815260200160405180910390f35b341561052f57600080fd5b610351610ff6565b60405190815260200160405180910390f35b341561055457600080fd5b61043d600160a060020a03600435166001608060020a0360243516610ffc565b604051901515815260200160405180910390f35b341561059357600080fd5b61035161101a565b60405190815260200160405180910390f35b34156105b857600080fd5b610330600160a060020a0360043516602435611020565b005b34156105dc57600080fd5b610330600160a060020a0360043516602435611070565b005b341561060057600080fd5b6103306001608060020a03600435166110c0565b005b341561062157600080fd5b6103516111fc565b60405190815260200160405180910390f35b341561064657600080fd5b610330600160a060020a0360043516602435611202565b005b341561066a57600080fd5b61033060043515156112fa565b005b341561068457600080fd5b61049d61132b565b604051600160a060020a03909116815260200160405180910390f35b34156106b357600080fd5b6103306001608060020a036004351661133a565b005b34156106d457600080fd5b610330600160a060020a036004358116906024351660443561142d565b005b34156106fe57600080fd5b610330600435611504565b005b341561071657600080fd5b610351600160a060020a0360043516611536565b60405190815260200160405180910390f35b341561074757600080fd5b61043d611555565b604051901515815260200160405180910390f35b341561076e57600080fd5b610330600160a060020a0360043516611565565b005b341561078f57600080fd5b610330600160a060020a03600435166115e3565b005b34156107b057600080fd5b61033060043561162e565b005b34156107c857600080fd5b610351611656565b60405190815260200160405180910390f35b34156107ed57600080fd5b61043d600160a060020a03600435166001608060020a036024351661165c565b604051901515815260200160405180910390f35b341561082c57600080fd5b61049d61167b565b604051600160a060020a03909116815260200160405180910390f35b341561085b57600080fd5b6103306001608060020a036004351661168a565b005b341561087c57600080fd5b610330600160a060020a036004351661177d565b005b341561089d57600080fd5b61038e6117c8565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103cb5780820151818401525b6020016103b2565b50505050905090810190601f1680156103f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561092857600080fd5b61043d600160a060020a0360043516602435611866565b604051901515815260200160405180910390f35b341561095e57600080fd5b6103306001608060020a03600435166118ed565b005b341561097f57600080fd5b610330600160a060020a036004351661196c565b005b34156109a057600080fd5b6103306119b7565b005b34156109b557600080fd5b61049d611a50565b604051600160a060020a03909116815260200160405180910390f35b34156109e457600080fd5b610330600435611a5f565b005b34156109fc57600080fd5b610330611a91565b005b3415610a1157600080fd5b61033060046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611c4695505050505050565b005b3415610a6457600080fd5b61049d611c7d565b604051600160a060020a03909116815260200160405180910390f35b3415610a9357600080fd5b6103306001608060020a0360043516611c8c565b005b3415610ab457600080fd5b61043d611d0b565b604051901515815260200160405180910390f35b3415610adb57600080fd5b610351600160a060020a0360043581169060243516611d14565b60405190815260200160405180910390f35b3415610b1257600080fd5b610330600160a060020a0360043516602435611d41565b005b3415610b3657600080fd5b610351611e29565b60405190815260200160405180910390f35b3415610b5b57600080fd5b610b6f600160a060020a0360043516611e2f565b60405191825260208201526040908101905180910390f35b80151561032c57600080fd5b5b50565b60008183811515610ba457fe5b0490505b92915050565b60106020526000908152604090205481565b600160a060020a033316600090815260016020526040902054610be590829011610b87565b600160a060020a033316600090815260116020526040902054610c089015610b87565b600160a060020a0333818116600090815260116020908152604080832086815542600191820155909152808220805486900390553090931681528290208054840190557f50548d8576201cd006eb56d20e8b7b7842d1c236eca5fb5410696dff998113ef91839051600160a060020a039092168252602082015260606040808301829052600c918301919091527f4d616465206465706f7369740000000000000000000000000000000000000000608083015260a0909101905180910390a15b50565b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d615780601f10610d3657610100808354040283529160200191610d61565b820191906000526020600020905b815481529060010190602001808311610d4457829003601f168201915b505050505081565b610d87610d8233600035600160e060020a031916611e48565b610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46004805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b50505b565b600454600090610e229060a060020a900460ff1615610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610e828585611f5d565b92505b5b50505b92915050565b610ead610d8233600035600160e060020a031916611e48565b610b87565b600c8190555b5b50565b610ed5610d8233600035600160e060020a031916611e48565b610b87565b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a25b5b50565b600f54600160a060020a031681565b610e06610d8233600035600160e060020a031916611e48565b610b87565b5b5b565b6000545b90565b600454600090610f879060a060020a900460ff1615610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610fe8868686611fca565b92505b5b50505b9392505050565b60065481565b600061101183836001608060020a0316611866565b90505b92915050565b600d5481565b60085461103b9033600160a060020a03908116911614610b87565b600160a060020a038216600090815260016020908152604080832080548590039055601090915290208054820190555b5b5050565b60085461108b9033600160a060020a03908116911614610b87565b600160a060020a038216600090815260016020908152604080832080548501905560109091529020805482900390555b5b5050565b600b546110cf9060ff16610b87565b6110dd600060095411610b87565b600160a060020a033316600090815260016020526040902054611122906001608060020a0383169061111b9061111490600a612121565b6064610b97565b1015610b87565b61112c3082610ffc565b5033600160a060020a03166108fc600954836001608060020a0316029081150290604051600060405180830381858888f19350505050151561116d57600080fd5b7feca90ffcb6bec84c38a9710d4b36f916340d11525f68e6f798a3d294011edf1433600954836001608060020a031602604051600160a060020a0390921682526020820152606060408083018290526009918301919091527f476f742045746865720000000000000000000000000000000000000000000000608083015260a0909101905180910390a15b5b50565b600a5481565b611220610d8233600035600160e060020a031916611e48565b610b87565b600160a060020a0330166000908152600160205260409020546112469082901015610b87565b600160a060020a03808316600090815260016020526040808220805485019055309092168152819020805483900390557f8ff21e0d87872be4ea598f4356cf157468201d6c896c0224fa4d94068ed859fe908390839051600160a060020a039092168252602082015260606040808301829052600b918301919091527f53656e7420626f756e7479000000000000000000000000000000000000000000608083015260a0909101905180910390a15b5b5050565b611318610d8233600035600160e060020a031916611e48565b610b87565b600b805460ff19168215151790555b5b50565b600e54600160a060020a031681565b611358610d8233600035600160e060020a031916611e48565b610b87565b60045461136f9060a060020a900460ff1615610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4600160a060020a0333166000908152600160205260409020546113f1906001608060020a038516612135565b600160a060020a03331660009081526001602052604081209190915554611421906001608060020a038516612135565b6000555b5b50505b5b50565b6008546114489033600160a060020a03908116911614610b87565b600160a060020a038084166000908152601060209081526040808320805486900390559285168252600190528190208054830190557f968bd60ddd13a1603ec99a2c0984863effd0cf8c772ae0d58169113f9479dfa1908490849051600160a060020a0392831681529116602082015260606040808301829052600b918301919091527f53656e7420726577617264000000000000000000000000000000000000000000608083015260a0909101905180910390a15b5b505050565b611522610d8233600035600160e060020a031916611e48565b610b87565b600b805460ff19169055600a8190555b5b50565b600160a060020a0381166000908152600160205260409020545b919050565b60045460a060020a900460ff1681565b611583610d8233600035600160e060020a031916611e48565b610b87565b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a25b5b50565b611601610d8233600035600160e060020a031916611e48565b610b87565b600f805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b61164c610d8233600035600160e060020a031916611e48565b610b87565b600d8190555b5b50565b600c5481565b60006110118333846001608060020a0316610f6d565b90505b92915050565b600454600160a060020a031681565b6116a8610d8233600035600160e060020a031916611e48565b610b87565b6004546116bf9060a060020a900460ff1615610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4600160a060020a033316600090815260016020526040902054611741906001608060020a038516612149565b600160a060020a03331660009081526001602052604081209190915554611421906001608060020a038516612149565b6000555b5b50505b5b50565b61179b610d8233600035600160e060020a031916611e48565b610b87565b6008805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d615780601f10610d3657610100808354040283529160200191610d61565b820191906000526020600020905b815481529060010190602001808311610d4457829003601f168201915b505050505081565b6004546000906118809060a060020a900460ff1615610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610e82858561215d565b92505b5b50505b92915050565b600f546119089033600160a060020a03908116911614610b87565b600160a060020a033316600090815260016020526040902054611934906001608060020a038316612135565b600160a060020a03331660009081526001602052604081209190915554611964906001608060020a038316612135565b6000555b5b50565b61198a610d8233600035600160e060020a031916611e48565b610b87565b600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b6119d5610d8233600035600160e060020a031916611e48565b610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46004805474ff0000000000000000000000000000000000000000191690555b5b50505b565b600354600160a060020a031681565b611a7d610d8233600035600160e060020a031916611e48565b610b87565b600b805460ff1916905560098190555b5b50565b600160a060020a033316600090815260116020526040812054611ab5901515610b87565b611ae9611ac5600c546001612121565b600160a060020a033316600090815260116020526040902060010154014211610b87565b600160a060020a033316600090815260116020526040902054600d54611b4991611b2a916111149190611b1e90606490612135565b612121565b6064610b97565b600160a060020a03301660009081526001602052604090205411610b87565b600160a060020a033316600090815260116020526040902054600d54611b859161111491611b1e90606490612135565b612121565b6064610b97565b33600160a060020a0381811660009081526011602090815260408083208390556001909152808220805486019055309092168152819020805484900390559192507fb54a79875c2c7348c79f6d253d95bed942ae0d00bfee455408b94a8a75cb3b6191839051600160a060020a039092168252602082015260606040808301829052600b918301919091527f476f74206465706f736974000000000000000000000000000000000000000000608083015260a0909101905180910390a15b50565b611c64610d8233600035600160e060020a031916611e48565b610b87565b6007818051610e02929160200190612234565b505b5b50565b600854600160a060020a031681565b600e546119089033600160a060020a03908116911614610b87565b600160a060020a033316600090815260016020526040902054611934906001608060020a038316612135565b600160a060020a03331660009081526001602052604081209190915554611964906001608060020a038316612135565b6000555b5b50565b600b5460ff1681565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b611d5f610d8233600035600160e060020a031916611e48565b610b87565b611d758130600160a060020a0316311015610b87565b600160a060020a03821681156108fc0282604051600060405180830381858888f193505050501515611da657600080fd5b7f7c0656ac7466346c43acd0ac8d515ddb6d31714907f1dabe204e84a8834635678282604051600160a060020a0390921682526020820152606060408083018290526011918301919091527f53656e7420657468657220626f756e7479000000000000000000000000000000608083015260a0909101905180910390a15b5b5050565b60095481565b6011602052600090815260409020805460019091015482565b600030600160a060020a031683600160a060020a03161415611e6c57506001610ba8565b600454600160a060020a0384811691161415611e8a57506001610ba8565b600354600160a060020a03161515611ea457506000610ba8565b600354600160a060020a031663b70096138430856000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b1515611f3257600080fd5b6102c65a03f11515611f4357600080fd5b505050604051805190509050610ba8565b5b5b5b92915050565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03831660009081526001602052604081205482901015611fed57fe5b600160a060020a03808516600090815260026020908152604080832033909416835292905220548290101561201e57fe5b600160a060020a038085166000908152600260209081526040808320339094168352929052205461204f9083612149565b600160a060020a0380861660008181526002602090815260408083203390951683529381528382209490945590815260019092529020546120909083612149565b600160a060020a0380861660009081526001602052604080822093909355908516815220546120bf9083612135565b600160a060020a03808516600081815260016020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b9392505050565b80820282811015610ba857fe5b5b92915050565b80820182811015610ba857fe5b5b92915050565b80820382811115610ba857fe5b5b92915050565b600160a060020a0333166000908152600160205260408120548290101561218057fe5b600160a060020a0333166000908152600160205260409020546121a39083612149565b600160a060020a0333811660009081526001602052604080822093909355908516815220546121d29083612135565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061227557805160ff19168380011785556122a2565b828001600101855582156122a2579182015b828111156122a2578251825591602001919060010190612287565b5b506122af9291506122b3565b5090565b610f6a91905b808211156122af57600081556001016122b9565b5090565b905600a165627a7a72305820210e16cc618902e324a3b39e355b722714f4eb31c96cbe7dae1fba17037c625c0029

Deployed Bytecode

0x606060405236156102595763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302ab47818114610332578063059a500c1461036357806306fdde031461037b57806307da68f514610406578063095ea7b31461041b5780630e4983ff1461045157806313af40351461046957806314f3f4911461048a5780631565c3c8146104b957806318160ddd146104c357806323b872dd146104e8578063313ce567146105245780633452f51d146105495780633b7cbfcf146105885780633e112ed7146105ad578063414bbda2146105d157806345b9ca21146105f55780634eee8c251461061657806353ad42ef1461063b57806361eb71c11461065f578063682806a01461067957806369d3e20e146106a85780636b1af75e146106c95780636e217d30146106f357806370a082311461070b57806375f12b211461073c5780637a9e5e4b146107635780637de3613814610784578063801137e7146107a55780638154b57c146107bd5780638402181f146107e25780638da5cb5b1461082157806390bc16931461085057806392a48bea1461087157806395d89b4114610892578063a9059cbb1461091d578063abd89e1e14610953578063b6f50c2914610974578063be9a655514610995578063bf7e214f146109aa578063c30381b9146109d9578063c399ec88146109f1578063c47f002714610a06578063ce5fd7f314610a59578063d176318014610a88578063d6e95f7714610aa9578063dd62ed3e14610ad0578063ecf7105e14610b07578063f1687a8d14610b2b578063fc7e286d14610b50575b6103305b600b5460009061026f9060ff16610b87565b61027b34600a54610b97565b600160a060020a0330811660009081526001602052604080822080548590039055339283168252908190208054840190559192507fe4e609de4ab433429823013d96817ed751a4b0c8e73f1ed866b1b11964750c1c91839051600160a060020a039092168252602082015260606040808301829052600c918301919091527f436f696e7320626f756768740000000000000000000000000000000000000000608083015260a0909101905180910390a15b5b50565b005b341561033d57600080fd5b610351600160a060020a0360043516610bae565b60405190815260200160405180910390f35b341561036e57600080fd5b610330600435610bc0565b005b341561038657600080fd5b61038e610ccb565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103cb5780820151818401525b6020016103b2565b50505050905090810190601f1680156103f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561041157600080fd5b610330610d69565b005b341561042657600080fd5b61043d600160a060020a0360043516602435610e08565b604051901515815260200160405180910390f35b341561045c57600080fd5b610330600435610e8f565b005b341561047457600080fd5b610330600160a060020a0360043516610eb7565b005b341561049557600080fd5b61049d610f35565b604051600160a060020a03909116815260200160405180910390f35b610330610f44565b005b34156104ce57600080fd5b610351610f66565b60405190815260200160405180910390f35b34156104f357600080fd5b61043d600160a060020a0360043581169060243516604435610f6d565b604051901515815260200160405180910390f35b341561052f57600080fd5b610351610ff6565b60405190815260200160405180910390f35b341561055457600080fd5b61043d600160a060020a03600435166001608060020a0360243516610ffc565b604051901515815260200160405180910390f35b341561059357600080fd5b61035161101a565b60405190815260200160405180910390f35b34156105b857600080fd5b610330600160a060020a0360043516602435611020565b005b34156105dc57600080fd5b610330600160a060020a0360043516602435611070565b005b341561060057600080fd5b6103306001608060020a03600435166110c0565b005b341561062157600080fd5b6103516111fc565b60405190815260200160405180910390f35b341561064657600080fd5b610330600160a060020a0360043516602435611202565b005b341561066a57600080fd5b61033060043515156112fa565b005b341561068457600080fd5b61049d61132b565b604051600160a060020a03909116815260200160405180910390f35b34156106b357600080fd5b6103306001608060020a036004351661133a565b005b34156106d457600080fd5b610330600160a060020a036004358116906024351660443561142d565b005b34156106fe57600080fd5b610330600435611504565b005b341561071657600080fd5b610351600160a060020a0360043516611536565b60405190815260200160405180910390f35b341561074757600080fd5b61043d611555565b604051901515815260200160405180910390f35b341561076e57600080fd5b610330600160a060020a0360043516611565565b005b341561078f57600080fd5b610330600160a060020a03600435166115e3565b005b34156107b057600080fd5b61033060043561162e565b005b34156107c857600080fd5b610351611656565b60405190815260200160405180910390f35b34156107ed57600080fd5b61043d600160a060020a03600435166001608060020a036024351661165c565b604051901515815260200160405180910390f35b341561082c57600080fd5b61049d61167b565b604051600160a060020a03909116815260200160405180910390f35b341561085b57600080fd5b6103306001608060020a036004351661168a565b005b341561087c57600080fd5b610330600160a060020a036004351661177d565b005b341561089d57600080fd5b61038e6117c8565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103cb5780820151818401525b6020016103b2565b50505050905090810190601f1680156103f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561092857600080fd5b61043d600160a060020a0360043516602435611866565b604051901515815260200160405180910390f35b341561095e57600080fd5b6103306001608060020a03600435166118ed565b005b341561097f57600080fd5b610330600160a060020a036004351661196c565b005b34156109a057600080fd5b6103306119b7565b005b34156109b557600080fd5b61049d611a50565b604051600160a060020a03909116815260200160405180910390f35b34156109e457600080fd5b610330600435611a5f565b005b34156109fc57600080fd5b610330611a91565b005b3415610a1157600080fd5b61033060046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611c4695505050505050565b005b3415610a6457600080fd5b61049d611c7d565b604051600160a060020a03909116815260200160405180910390f35b3415610a9357600080fd5b6103306001608060020a0360043516611c8c565b005b3415610ab457600080fd5b61043d611d0b565b604051901515815260200160405180910390f35b3415610adb57600080fd5b610351600160a060020a0360043581169060243516611d14565b60405190815260200160405180910390f35b3415610b1257600080fd5b610330600160a060020a0360043516602435611d41565b005b3415610b3657600080fd5b610351611e29565b60405190815260200160405180910390f35b3415610b5b57600080fd5b610b6f600160a060020a0360043516611e2f565b60405191825260208201526040908101905180910390f35b80151561032c57600080fd5b5b50565b60008183811515610ba457fe5b0490505b92915050565b60106020526000908152604090205481565b600160a060020a033316600090815260016020526040902054610be590829011610b87565b600160a060020a033316600090815260116020526040902054610c089015610b87565b600160a060020a0333818116600090815260116020908152604080832086815542600191820155909152808220805486900390553090931681528290208054840190557f50548d8576201cd006eb56d20e8b7b7842d1c236eca5fb5410696dff998113ef91839051600160a060020a039092168252602082015260606040808301829052600c918301919091527f4d616465206465706f7369740000000000000000000000000000000000000000608083015260a0909101905180910390a15b50565b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d615780601f10610d3657610100808354040283529160200191610d61565b820191906000526020600020905b815481529060010190602001808311610d4457829003601f168201915b505050505081565b610d87610d8233600035600160e060020a031916611e48565b610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46004805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b50505b565b600454600090610e229060a060020a900460ff1615610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610e828585611f5d565b92505b5b50505b92915050565b610ead610d8233600035600160e060020a031916611e48565b610b87565b600c8190555b5b50565b610ed5610d8233600035600160e060020a031916611e48565b610b87565b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a25b5b50565b600f54600160a060020a031681565b610e06610d8233600035600160e060020a031916611e48565b610b87565b5b5b565b6000545b90565b600454600090610f879060a060020a900460ff1615610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610fe8868686611fca565b92505b5b50505b9392505050565b60065481565b600061101183836001608060020a0316611866565b90505b92915050565b600d5481565b60085461103b9033600160a060020a03908116911614610b87565b600160a060020a038216600090815260016020908152604080832080548590039055601090915290208054820190555b5b5050565b60085461108b9033600160a060020a03908116911614610b87565b600160a060020a038216600090815260016020908152604080832080548501905560109091529020805482900390555b5b5050565b600b546110cf9060ff16610b87565b6110dd600060095411610b87565b600160a060020a033316600090815260016020526040902054611122906001608060020a0383169061111b9061111490600a612121565b6064610b97565b1015610b87565b61112c3082610ffc565b5033600160a060020a03166108fc600954836001608060020a0316029081150290604051600060405180830381858888f19350505050151561116d57600080fd5b7feca90ffcb6bec84c38a9710d4b36f916340d11525f68e6f798a3d294011edf1433600954836001608060020a031602604051600160a060020a0390921682526020820152606060408083018290526009918301919091527f476f742045746865720000000000000000000000000000000000000000000000608083015260a0909101905180910390a15b5b50565b600a5481565b611220610d8233600035600160e060020a031916611e48565b610b87565b600160a060020a0330166000908152600160205260409020546112469082901015610b87565b600160a060020a03808316600090815260016020526040808220805485019055309092168152819020805483900390557f8ff21e0d87872be4ea598f4356cf157468201d6c896c0224fa4d94068ed859fe908390839051600160a060020a039092168252602082015260606040808301829052600b918301919091527f53656e7420626f756e7479000000000000000000000000000000000000000000608083015260a0909101905180910390a15b5b5050565b611318610d8233600035600160e060020a031916611e48565b610b87565b600b805460ff19168215151790555b5b50565b600e54600160a060020a031681565b611358610d8233600035600160e060020a031916611e48565b610b87565b60045461136f9060a060020a900460ff1615610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4600160a060020a0333166000908152600160205260409020546113f1906001608060020a038516612135565b600160a060020a03331660009081526001602052604081209190915554611421906001608060020a038516612135565b6000555b5b50505b5b50565b6008546114489033600160a060020a03908116911614610b87565b600160a060020a038084166000908152601060209081526040808320805486900390559285168252600190528190208054830190557f968bd60ddd13a1603ec99a2c0984863effd0cf8c772ae0d58169113f9479dfa1908490849051600160a060020a0392831681529116602082015260606040808301829052600b918301919091527f53656e7420726577617264000000000000000000000000000000000000000000608083015260a0909101905180910390a15b5b505050565b611522610d8233600035600160e060020a031916611e48565b610b87565b600b805460ff19169055600a8190555b5b50565b600160a060020a0381166000908152600160205260409020545b919050565b60045460a060020a900460ff1681565b611583610d8233600035600160e060020a031916611e48565b610b87565b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a25b5b50565b611601610d8233600035600160e060020a031916611e48565b610b87565b600f805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b61164c610d8233600035600160e060020a031916611e48565b610b87565b600d8190555b5b50565b600c5481565b60006110118333846001608060020a0316610f6d565b90505b92915050565b600454600160a060020a031681565b6116a8610d8233600035600160e060020a031916611e48565b610b87565b6004546116bf9060a060020a900460ff1615610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4600160a060020a033316600090815260016020526040902054611741906001608060020a038516612149565b600160a060020a03331660009081526001602052604081209190915554611421906001608060020a038516612149565b6000555b5b50505b5b50565b61179b610d8233600035600160e060020a031916611e48565b610b87565b6008805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d615780601f10610d3657610100808354040283529160200191610d61565b820191906000526020600020905b815481529060010190602001808311610d4457829003601f168201915b505050505081565b6004546000906118809060a060020a900460ff1615610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610e82858561215d565b92505b5b50505b92915050565b600f546119089033600160a060020a03908116911614610b87565b600160a060020a033316600090815260016020526040902054611934906001608060020a038316612135565b600160a060020a03331660009081526001602052604081209190915554611964906001608060020a038316612135565b6000555b5b50565b61198a610d8233600035600160e060020a031916611e48565b610b87565b600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b6119d5610d8233600035600160e060020a031916611e48565b610b87565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46004805474ff0000000000000000000000000000000000000000191690555b5b50505b565b600354600160a060020a031681565b611a7d610d8233600035600160e060020a031916611e48565b610b87565b600b805460ff1916905560098190555b5b50565b600160a060020a033316600090815260116020526040812054611ab5901515610b87565b611ae9611ac5600c546001612121565b600160a060020a033316600090815260116020526040902060010154014211610b87565b600160a060020a033316600090815260116020526040902054600d54611b4991611b2a916111149190611b1e90606490612135565b612121565b6064610b97565b600160a060020a03301660009081526001602052604090205411610b87565b600160a060020a033316600090815260116020526040902054600d54611b859161111491611b1e90606490612135565b612121565b6064610b97565b33600160a060020a0381811660009081526011602090815260408083208390556001909152808220805486019055309092168152819020805484900390559192507fb54a79875c2c7348c79f6d253d95bed942ae0d00bfee455408b94a8a75cb3b6191839051600160a060020a039092168252602082015260606040808301829052600b918301919091527f476f74206465706f736974000000000000000000000000000000000000000000608083015260a0909101905180910390a15b50565b611c64610d8233600035600160e060020a031916611e48565b610b87565b6007818051610e02929160200190612234565b505b5b50565b600854600160a060020a031681565b600e546119089033600160a060020a03908116911614610b87565b600160a060020a033316600090815260016020526040902054611934906001608060020a038316612135565b600160a060020a03331660009081526001602052604081209190915554611964906001608060020a038316612135565b6000555b5b50565b600b5460ff1681565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b611d5f610d8233600035600160e060020a031916611e48565b610b87565b611d758130600160a060020a0316311015610b87565b600160a060020a03821681156108fc0282604051600060405180830381858888f193505050501515611da657600080fd5b7f7c0656ac7466346c43acd0ac8d515ddb6d31714907f1dabe204e84a8834635678282604051600160a060020a0390921682526020820152606060408083018290526011918301919091527f53656e7420657468657220626f756e7479000000000000000000000000000000608083015260a0909101905180910390a15b5b5050565b60095481565b6011602052600090815260409020805460019091015482565b600030600160a060020a031683600160a060020a03161415611e6c57506001610ba8565b600454600160a060020a0384811691161415611e8a57506001610ba8565b600354600160a060020a03161515611ea457506000610ba8565b600354600160a060020a031663b70096138430856000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b1515611f3257600080fd5b6102c65a03f11515611f4357600080fd5b505050604051805190509050610ba8565b5b5b5b92915050565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03831660009081526001602052604081205482901015611fed57fe5b600160a060020a03808516600090815260026020908152604080832033909416835292905220548290101561201e57fe5b600160a060020a038085166000908152600260209081526040808320339094168352929052205461204f9083612149565b600160a060020a0380861660008181526002602090815260408083203390951683529381528382209490945590815260019092529020546120909083612149565b600160a060020a0380861660009081526001602052604080822093909355908516815220546120bf9083612135565b600160a060020a03808516600081815260016020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b9392505050565b80820282811015610ba857fe5b5b92915050565b80820182811015610ba857fe5b5b92915050565b80820382811115610ba857fe5b5b92915050565b600160a060020a0333166000908152600160205260408120548290101561218057fe5b600160a060020a0333166000908152600160205260409020546121a39083612149565b600160a060020a0333811660009081526001602052604080822093909355908516815220546121d29083612135565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061227557805160ff19168380011785556122a2565b828001600101855582156122a2579182015b828111156122a2578251825591602001919060010190612287565b5b506122af9291506122b3565b5090565b610f6a91905b808211156122af57600081556001016122b9565b5090565b905600a165627a7a72305820210e16cc618902e324a3b39e355b722714f4eb31c96cbe7dae1fba17037c625c0029

Swarm Source

bzzr://210e16cc618902e324a3b39e355b722714f4eb31c96cbe7dae1fba17037c625c
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.