ETH Price: $3,539.61 (-0.96%)
Gas: 29 Gwei

Contract

0xDa2Cf810c5718135247628689D84F94c61B41d6A
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Accept Ownership66400752018-11-04 5:07:241972 days ago1541308044IN
Santiment: Token Sale
0 ETH0.000132726
Withdraw Funds A...40112212017-07-12 8:03:112452 days ago1499846591IN
Santiment: Token Sale
0 ETH0.0036756440
Transfer40078012017-07-11 13:51:522452 days ago1499781112IN
Santiment: Token Sale
1 ETH0.0073535
Transfer40078002017-07-11 13:50:492452 days ago1499781049IN
Santiment: Token Sale
1 ETH0.0073535
Transfer40078002017-07-11 13:50:492452 days ago1499781049IN
Santiment: Token Sale
1 ETH0.0073535
Transfer40078002017-07-11 13:50:492452 days ago1499781049IN
Santiment: Token Sale
1 ETH0.0073535
Transfer40078002017-07-11 13:50:492452 days ago1499781049IN
Santiment: Token Sale
1 ETH0.0073535
Transfer39933932017-07-08 13:51:562455 days ago1499521916IN
Santiment: Token Sale
3 ETH0.1476071322
Transfer39933572017-07-08 13:38:432455 days ago1499521123IN
Santiment: Token Sale
3 ETH0.0942475530
Transfer39933542017-07-08 13:37:432455 days ago1499521063IN
Santiment: Token Sale
3 ETH0.1478858722
Mint All Bonuses39842562017-07-06 18:33:282457 days ago1499366008IN
Santiment: Token Sale
0 ETH0.0512323640
Transfer39791302017-07-05 18:06:292458 days ago1499277989IN
Santiment: Token Sale
18 ETH0.005213
Transfer39787072017-07-05 16:09:002458 days ago1499270940IN
Santiment: Token Sale
2 ETH0.00420
Transfer39787022017-07-05 16:07:552458 days ago1499270875IN
Santiment: Token Sale
30 ETH0.00420
Transfer39786972017-07-05 16:06:162458 days ago1499270776IN
Santiment: Token Sale
2 ETH0.00420
Transfer39786952017-07-05 16:05:122458 days ago1499270712IN
Santiment: Token Sale
1.45118037 ETH0.00044121
Transfer39786882017-07-05 16:04:042458 days ago1499270644IN
Santiment: Token Sale
30 ETH0.0018923675.09375
Transfer39786662017-07-05 15:59:302458 days ago1499270370IN
Santiment: Token Sale
2 ETH0.00420
Transfer39786612017-07-05 15:57:342458 days ago1499270254IN
Santiment: Token Sale
30 ETH0.0015
Transfer39786432017-07-05 15:54:002458 days ago1499270040IN
Santiment: Token Sale
30 ETH0.0012426749.3125
Transfer39786332017-07-05 15:51:402458 days ago1499269900IN
Santiment: Token Sale
3 ETH0.014271
Transfer39786322017-07-05 15:51:052458 days ago1499269865IN
Santiment: Token Sale
15.919 ETH0.004221
Transfer39786322017-07-05 15:51:052458 days ago1499269865IN
Santiment: Token Sale
3 ETH0.014271
Transfer39786322017-07-05 15:51:052458 days ago1499269865IN
Santiment: Token Sale
30 ETH0.0006323625.09375
Transfer39786282017-07-05 15:48:192458 days ago1499269699IN
Santiment: Token Sale
1.02 ETH0.008421
View all transactions

Latest 19 internal transactions

Advanced mode:
Parent Txn Hash Block From To Value
40112212017-07-12 8:03:112452 days ago1499846591
Santiment: Token Sale
45,000 ETH
39784992017-07-05 15:12:402458 days ago1499267560
Santiment: Token Sale
2.33662848 ETH
39784662017-07-05 15:03:302458 days ago1499267010
Santiment: Token Sale
7.5351493 ETH
39775262017-07-05 10:44:072459 days ago1499251447
Santiment: Token Sale
46.6 ETH
39774522017-07-05 10:24:122459 days ago1499250252
Santiment: Token Sale
5.1 ETH
39768212017-07-05 7:17:582459 days ago1499239078
Santiment: Token Sale
40 ETH
39747252017-07-04 21:00:422459 days ago1499202042
Santiment: Token Sale
31 ETH
39747162017-07-04 20:57:202459 days ago1499201840
Santiment: Token Sale
1.25 ETH
39739182017-07-04 17:19:452459 days ago1499188785
Santiment: Token Sale
16 ETH
39738782017-07-04 17:10:542459 days ago1499188254
Santiment: Token Sale
1 ETH
39737832017-07-04 16:43:252459 days ago1499186605
Santiment: Token Sale
28 ETH
39737242017-07-04 16:24:362459 days ago1499185476
Santiment: Token Sale
0.001227 ETH
39736712017-07-04 16:09:322459 days ago1499184572
Santiment: Token Sale
11 ETH
39736662017-07-04 16:07:422459 days ago1499184462
Santiment: Token Sale
14 ETH
39736032017-07-04 15:50:072459 days ago1499183407
Santiment: Token Sale
3 ETH
39734632017-07-04 15:15:042459 days ago1499181304
Santiment: Token Sale
21.396677 ETH
39734502017-07-04 15:12:452459 days ago1499181165
Santiment: Token Sale
8 ETH
39734352017-07-04 15:09:142459 days ago1499180954
Santiment: Token Sale
10 ETH
39734342017-07-04 15:09:042459 days ago1499180944
Santiment: Token Sale
8 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CrowdsaleMinter

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.4.11;

// ==== DISCLAIMER ====
//
// ETHEREUM IS STILL AN EXPEREMENTAL TECHNOLOGY.
// ALTHOUGH THIS SMART CONTRACT WAS CREATED WITH GREAT CARE AND IN THE HOPE OF BEING USEFUL, NO GUARANTEES OF FLAWLESS OPERATION CAN BE GIVEN.
// IN PARTICULAR - SUBTILE BUGS, HACKER ATTACKS OR MALFUNCTION OF UNDERLYING TECHNOLOGY CAN CAUSE UNINTENTIONAL BEHAVIOUR.
// YOU ARE STRONGLY ENCOURAGED TO STUDY THIS SMART CONTRACT CAREFULLY IN ORDER TO UNDERSTAND POSSIBLE EDGE CASES AND RISKS.
// DON'T USE THIS SMART CONTRACT IF YOU HAVE SUBSTANTIAL DOUBTS OR IF YOU DON'T KNOW WHAT YOU ARE DOING.
//
// THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// ====
//

/// @author ethernian for Santiment LLC
/// @title  CrowdsaleMinter

contract Base {

    function max(uint a, uint b) returns (uint) { return a >= b ? a : b; }
    function min(uint a, uint b) returns (uint) { return a <= b ? a : b; }

    modifier only(address allowed) {
        if (msg.sender != allowed) throw;
        _;
    }


    ///@return True if `_addr` is a contract
    function isContract(address _addr) constant internal returns (bool) {
        if (_addr == 0) return false;
        uint size;
        assembly {
            size := extcodesize(_addr)
        }
        return (size > 0);
    }

    // *************************************************
    // *          reentrancy handling                  *
    // *************************************************

    //@dev predefined locks (up to uint bit length, i.e. 256 possible)
    uint constant internal L00 = 2 ** 0;
    uint constant internal L01 = 2 ** 1;
    uint constant internal L02 = 2 ** 2;
    uint constant internal L03 = 2 ** 3;
    uint constant internal L04 = 2 ** 4;
    uint constant internal L05 = 2 ** 5;

    //prevents reentrancy attacs: specific locks
    uint private bitlocks = 0;
    modifier noReentrancy(uint m) {
        var _locks = bitlocks;
        if (_locks & m > 0) throw;
        bitlocks |= m;
        _;
        bitlocks = _locks;
    }

    modifier noAnyReentrancy {
        var _locks = bitlocks;
        if (_locks > 0) throw;
        bitlocks = uint(-1);
        _;
        bitlocks = _locks;
    }

    ///@dev empty marking modifier signaling to user of the marked function , that it can cause an reentrant call.
    ///     developer should make the caller function reentrant-safe if it use a reentrant function.
    modifier reentrant { _; }

}

contract MintableToken {
    //target token contract is responsible to accept only authorized mint calls.
    function mint(uint amount, address account);

    //start the token on minting finished,
    function start();
}

contract Owned is Base {

    address public owner;
    address public newOwner;

    function Owned() {
        owner = msg.sender;
    }

    function transferOwnership(address _newOwner) only(owner) {
        newOwner = _newOwner;
    }

    function acceptOwnership() only(newOwner) {
        OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    event OwnershipTransferred(address indexed _from, address indexed _to);

}

contract BalanceStorage {
    function balances(address account) public constant returns(uint balance);
}

contract AddressList {
    function contains(address addr) public constant returns (bool);
}

contract MinMaxWhiteList {
    function allowed(address addr) public constant returns (uint /*finney*/, uint /*finney*/ );
}

contract PresaleBonusVoting {
    function rawVotes(address addr) public constant returns (uint rawVote);
}

contract CrowdsaleMinter is Owned {

    string public constant VERSION = "0.2.1";

    /* ====== configuration START ====== */
    uint public constant COMMUNITY_SALE_START = 3973420; /* approx. 04.07.2017 16:00 GMT+1 */
    uint public constant PRIORITY_SALE_START  = 3978496; /* approx. 05.07.2017 16:00 GMT+1 */
    uint public constant PUBLIC_SALE_START    = 3983578; /* approx. 06.07.2017 16:00 GMT+1 */
    uint public constant PUBLIC_SALE_END      = 4130967; /* approx. 04.08.2017 16:00 GMT+1 */
    uint public constant WITHDRAWAL_END       = 4288520; /* approx. 04.09.2017 16:00 GMT+1 */
	
    address public TEAM_GROUP_WALLET           = 0xA0D8F33Ef9B44DaAE522531DD5E7252962b09207;
    address public ADVISERS_AND_FRIENDS_WALLET = 0x44f145f6Bc36e51eED9b661e99C8b9CCF987c043;

    uint public constant TEAM_BONUS_PER_CENT            = 18;
    uint public constant ADVISORS_AND_PARTNERS_PER_CENT = 10;

    MintableToken      public TOKEN                    = MintableToken(0x00000000000000000000000000);

    AddressList        public PRIORITY_ADDRESS_LIST    = AddressList(0x9411Cf70F97C2ED09325e58629D48401aEd50F89);
    MinMaxWhiteList    public COMMUNITY_ALLOWANCE_LIST = MinMaxWhiteList(0xd2675d3ea478692ad34f09fa1f8bda67a9696bf7);
    BalanceStorage     public PRESALE_BALANCES         = BalanceStorage(0x4Fd997Ed7c10DbD04e95d3730cd77D79513076F2);
    PresaleBonusVoting public PRESALE_BONUS_VOTING     = PresaleBonusVoting(0x283a97Af867165169AECe0b2E963b9f0FC7E5b8c);

    uint public constant COMMUNITY_PLUS_PRIORITY_SALE_CAP_ETH = 45000;
    uint public constant MIN_TOTAL_AMOUNT_TO_RECEIVE_ETH = 15000;
    uint public constant MAX_TOTAL_AMOUNT_TO_RECEIVE_ETH = 45000;
    uint public constant MIN_ACCEPTED_AMOUNT_FINNEY = 200;
    uint public constant TOKEN_PER_ETH = 1000;
    uint public constant PRE_SALE_BONUS_PER_CENT = 54;

    //constructor
    function CrowdsaleMinter() {
        //check configuration if something in setup is looking weird
        if (
            TOKEN_PER_ETH == 0
            || TEAM_BONUS_PER_CENT + ADVISORS_AND_PARTNERS_PER_CENT >=100
            || MIN_ACCEPTED_AMOUNT_FINNEY < 1
            || owner == 0x0
            || address(COMMUNITY_ALLOWANCE_LIST) == 0x0
            || address(PRIORITY_ADDRESS_LIST) == 0x0
            || address(PRESALE_BONUS_VOTING) == 0x0
            || address(PRESALE_BALANCES) == 0x0
            || COMMUNITY_SALE_START == 0
            || PRIORITY_SALE_START == 0
            || PUBLIC_SALE_START == 0
            || PUBLIC_SALE_END == 0
            || WITHDRAWAL_END == 0
            || MIN_TOTAL_AMOUNT_TO_RECEIVE == 0
            || MAX_TOTAL_AMOUNT_TO_RECEIVE == 0
            || COMMUNITY_PLUS_PRIORITY_SALE_CAP == 0
            || COMMUNITY_SALE_START <= block.number
            || COMMUNITY_SALE_START >= PRIORITY_SALE_START
            || PRIORITY_SALE_START >= PUBLIC_SALE_START
            || PUBLIC_SALE_START >= PUBLIC_SALE_END
            || PUBLIC_SALE_END >= WITHDRAWAL_END
            || COMMUNITY_PLUS_PRIORITY_SALE_CAP > MAX_TOTAL_AMOUNT_TO_RECEIVE
            || MIN_TOTAL_AMOUNT_TO_RECEIVE > MAX_TOTAL_AMOUNT_TO_RECEIVE )
        throw;
    }

    /* ====== configuration END ====== */

    /* ====== public states START====== */

    bool public isAborted = false;
    mapping (address => uint) public balances;
    bool public TOKEN_STARTED = false;
    uint public total_received_amount;
    address[] public investors;

    //displays number of uniq investors
    function investorsCount() constant external returns(uint) { return investors.length; }

    //displays received amount in eth upto now
    function TOTAL_RECEIVED_ETH() constant external returns (uint) { return total_received_amount / 1 ether; }

    //displays current contract state in human readable form
    function state() constant external returns (string) { return stateNames[ uint(currentState()) ]; }

    function san_whitelist(address addr) public constant returns(uint, uint) { return COMMUNITY_ALLOWANCE_LIST.allowed(addr); }
    function cfi_whitelist(address addr) public constant returns(bool) { return PRIORITY_ADDRESS_LIST.contains(addr); }

    /* ====== public states END ====== */

    string[] private stateNames = ["BEFORE_START", "COMMUNITY_SALE", "PRIORITY_SALE", "PRIORITY_SALE_FINISHED", "PUBLIC_SALE", "BONUS_MINTING", "WITHDRAWAL_RUNNING", "REFUND_RUNNING", "CLOSED" ];
    enum State { BEFORE_START, COMMUNITY_SALE, PRIORITY_SALE, PRIORITY_SALE_FINISHED, PUBLIC_SALE, BONUS_MINTING, WITHDRAWAL_RUNNING, REFUND_RUNNING, CLOSED }

    uint private constant COMMUNITY_PLUS_PRIORITY_SALE_CAP = COMMUNITY_PLUS_PRIORITY_SALE_CAP_ETH * 1 ether;
    uint private constant MIN_TOTAL_AMOUNT_TO_RECEIVE = MIN_TOTAL_AMOUNT_TO_RECEIVE_ETH * 1 ether;
    uint private constant MAX_TOTAL_AMOUNT_TO_RECEIVE = MAX_TOTAL_AMOUNT_TO_RECEIVE_ETH * 1 ether;
    uint private constant MIN_ACCEPTED_AMOUNT = MIN_ACCEPTED_AMOUNT_FINNEY * 1 finney;
    bool private allBonusesAreMinted = false;

    //
    // ======= interface methods =======
    //

    //accept payments here
    function ()
    payable
    noAnyReentrancy
    {
        State state = currentState();
        uint amount_allowed;
        if (state == State.COMMUNITY_SALE) {
            var (min_finney, max_finney) = COMMUNITY_ALLOWANCE_LIST.allowed(msg.sender);
            var (min, max) = (min_finney * 1 finney, max_finney * 1 finney);
            var sender_balance = balances[msg.sender];
            assert (sender_balance <= max); //sanity check: should be always true;
            assert (msg.value >= min);      //reject payments less than minimum
            amount_allowed = max - sender_balance;
            _receiveFundsUpTo(amount_allowed);
        } else if (state == State.PRIORITY_SALE) {
            assert (PRIORITY_ADDRESS_LIST.contains(msg.sender));
            amount_allowed = COMMUNITY_PLUS_PRIORITY_SALE_CAP - total_received_amount;
            _receiveFundsUpTo(amount_allowed);
        } else if (state == State.PUBLIC_SALE) {
            amount_allowed = MAX_TOTAL_AMOUNT_TO_RECEIVE - total_received_amount;
            _receiveFundsUpTo(amount_allowed);
        } else if (state == State.REFUND_RUNNING) {
            // any entring call in Refund Phase will cause full refund
            _sendRefund();
        } else {
            throw;
        }
    }


    function refund() external
    inState(State.REFUND_RUNNING)
    noAnyReentrancy
    {
        _sendRefund();
    }


    function withdrawFundsAndStartToken() external
    inState(State.WITHDRAWAL_RUNNING)
    noAnyReentrancy
    only(owner)
    {
        // transfer funds to owner
        if (!owner.send(this.balance)) throw;

        //notify token contract to start
        if (TOKEN.call(bytes4(sha3("start()")))) {
            TOKEN_STARTED = true;
            TokenStarted(TOKEN);
        }
    }

    event TokenStarted(address tokenAddr);

    //there are around 40 addresses in PRESALE_ADDRESSES list. Everything fits into single Tx.
    function mintAllBonuses() external
    inState(State.BONUS_MINTING)
    noAnyReentrancy
    {
        assert(!allBonusesAreMinted);
        allBonusesAreMinted = true;

        uint TEAM_AND_PARTNERS_PER_CENT = TEAM_BONUS_PER_CENT + ADVISORS_AND_PARTNERS_PER_CENT;

        uint total_presale_amount_with_bonus = mintPresaleBonuses();
        uint total_collected_amount = total_received_amount + total_presale_amount_with_bonus;
        uint extra_amount = total_collected_amount * TEAM_AND_PARTNERS_PER_CENT / (100 - TEAM_AND_PARTNERS_PER_CENT);
        uint extra_team_amount = extra_amount * TEAM_BONUS_PER_CENT / TEAM_AND_PARTNERS_PER_CENT;
        uint extra_partners_amount = extra_amount * ADVISORS_AND_PARTNERS_PER_CENT / TEAM_AND_PARTNERS_PER_CENT;
 
        //beautify total supply: round down to full eth.
        uint total_to_mint = total_collected_amount + extra_amount;
        uint round_remainder = total_to_mint - (total_to_mint / 1 ether * 1 ether);
        extra_team_amount -= round_remainder; //this will reduce total_supply to rounded value

        //mint group bonuses
        _mint(extra_team_amount , TEAM_GROUP_WALLET);
        _mint(extra_partners_amount, ADVISERS_AND_FRIENDS_WALLET);

    }

    function mintPresaleBonuses() internal returns(uint amount) {
        uint total_presale_amount_with_bonus = 0;
        //mint presale bonuses
        for(uint i=0; i < PRESALE_ADDRESSES.length; ++i) {
            address addr = PRESALE_ADDRESSES[i];
            var amount_with_bonus = presaleTokenAmount(addr);
            if (amount_with_bonus>0) {
                _mint(amount_with_bonus, addr);
                total_presale_amount_with_bonus += amount_with_bonus;
            }
        }//for
        return total_presale_amount_with_bonus;
    }

    function presaleTokenAmount(address addr) public constant returns(uint){
        uint presale_balance = PRESALE_BALANCES.balances(addr);
        if (presale_balance > 0) {
            // this calculation is about waived pre-sale bonus.
            // rawVote contains a value [0..1 ether].
            //     0 ether    - means "default value" or "no vote" : 100% bonus saved
            //     1 ether    - means "vote 100%" : 100% bonus saved
            //    <=10 finney - special value "vote 0%" : no bonus at all (100% bonus waived).
            //  other value - "PRE_SALE_BONUS_PER_CENT * rawVote / 1 ether" is an effective bonus per cent for particular presale member.
            //
            var rawVote = PRESALE_BONUS_VOTING.rawVotes(addr);
            if (rawVote == 0)              rawVote = 1 ether; //special case "no vote" (default value) ==> (1 ether is 100%)
            else if (rawVote <= 10 finney) rawVote = 0;       //special case "0%" (no bonus)           ==> (0 ether is   0%)
            else if (rawVote > 1 ether)    rawVote = 1 ether; //max bonus is 100% (should not occur)
            var presale_bonus = presale_balance * PRE_SALE_BONUS_PER_CENT * rawVote / 1 ether / 100;
            return presale_balance + presale_bonus;
        } else {
            return 0;
        }
    }

    function attachToToken(MintableToken tokenAddr) external
    inState(State.BEFORE_START)
    only(owner)
    {
        TOKEN = tokenAddr;
    }

    function abort() external
    inStateBefore(State.REFUND_RUNNING)
    only(owner)
    {
        isAborted = true;
    }

    //
    // ======= implementation methods =======
    //

    function _sendRefund() private
    tokenHoldersOnly
    {
        // load balance to refund plus amount currently sent
        var amount_to_refund = balances[msg.sender] + msg.value;
        // reset balance
        balances[msg.sender] = 0;
        // send refund back to sender
        if (!msg.sender.send(amount_to_refund)) throw;
    }

    function _receiveFundsUpTo(uint amount) private
    notTooSmallAmountOnly
    {
        require (amount > 0);
        if (msg.value > amount) {
            // accept amount only and return change
            var change_to_return = msg.value - amount;
            if (!msg.sender.send(change_to_return)) throw;
        } else {
            // accept full amount
            amount = msg.value;
        }
        if (balances[msg.sender] == 0) investors.push(msg.sender);
        balances[msg.sender] += amount;
        total_received_amount += amount;
        _mint(amount,msg.sender);
    }

    function _mint(uint amount, address account) private {
        MintableToken(TOKEN).mint(amount * TOKEN_PER_ETH, account);
    }

    function currentState() private constant
    returns (State)
    {
        if (isAborted) {
            return this.balance > 0
                   ? State.REFUND_RUNNING
                   : State.CLOSED;
        } else if (block.number < COMMUNITY_SALE_START || address(TOKEN) == 0x0) {
             return State.BEFORE_START;
        } else if (block.number < PRIORITY_SALE_START) {
            return State.COMMUNITY_SALE;
        } else if (block.number < PUBLIC_SALE_START) {
            return total_received_amount < COMMUNITY_PLUS_PRIORITY_SALE_CAP
                ? State.PRIORITY_SALE
                : State.PRIORITY_SALE_FINISHED;
        } else if (block.number <= PUBLIC_SALE_END && total_received_amount < MAX_TOTAL_AMOUNT_TO_RECEIVE) {
            return State.PUBLIC_SALE;
        } else if (this.balance == 0) {
            return State.CLOSED;
        } else if (block.number <= WITHDRAWAL_END && total_received_amount >= MIN_TOTAL_AMOUNT_TO_RECEIVE) {
            return allBonusesAreMinted
                ? State.WITHDRAWAL_RUNNING
                : State.BONUS_MINTING;
        } else {
            return State.REFUND_RUNNING;
        }
    }

    //
    // ============ modifiers ============
    //

    //fails if state dosn't match
    modifier inState(State state) {
        if (state != currentState()) throw;
        _;
    }

    //fails if the current state is not before than the given one.
    modifier inStateBefore(State state) {
        if (currentState() >= state) throw;
        _;
    }

    //accepts calls from token holders only
    modifier tokenHoldersOnly(){
        if (balances[msg.sender] == 0) throw;
        _;
    }


    // don`t accept transactions with value less than allowed minimum
    modifier notTooSmallAmountOnly(){
        if (msg.value < MIN_ACCEPTED_AMOUNT) throw;
        _;
    }

    //
    // ============ DATA ============
    //

    address[] PRESALE_ADDRESSES = [
        0xF55DFd2B02Cf3282680C94BD01E9Da044044E6A2,
        0x0D40B53828948b340673674Ae65Ee7f5D8488e33,
        0x0ea690d466d6bbd18F124E204EA486a4Bf934cbA,
        0x6d25B9f40b92CcF158250625A152574603465192,
        0x481Da0F1e89c206712BCeA4f7D6E60d7b42f6C6C,
        0x416EDa5D6Ed29CAc3e6D97C102d61BC578C5dB87,
        0xD78Ac6FFc90E084F5fD563563Cc9fD33eE303f18,
        0xe6714ab523acEcf9b85d880492A2AcDBe4184892,
        0x285A9cA5fE9ee854457016a7a5d3A3BB95538093,
        0x600ca6372f312B081205B2C3dA72517a603a15Cc,
        0x2b8d5C9209fBD500Fd817D960830AC6718b88112,
        0x4B15Dd23E5f9062e4FB3a9B7DECF653C0215e560,
        0xD67449e6AB23c1f46dea77d3f5E5D47Ff33Dc9a9,
        0xd0ADaD7ed81AfDa039969566Ceb8423E0ab14d90,
        0x245f27796a44d7E3D30654eD62850ff09EE85656,
        0x639D6eC2cef4d6f7130b40132B3B6F5b667e5105,
        0x5e9a69B8656914965d69d8da49c3709F0bF2B5Ef,
        0x0832c3B801319b62aB1D3535615d1fe9aFc3397A,
        0xf6Dd631279377205818C3a6725EeEFB9D0F6b9F3,
        0x47696054e71e4c3f899119601a255a7065C3087B,
        0xf107bE6c6833f61A24c64D63c8A7fcD784Abff06,
        0x056f072Bd2240315b708DBCbDDE80d400f0394a1,
        0x9e5BaeC244D8cCD49477037E28ed70584EeAD956,
        0x40A0b2c1B4E30F27e21DF94e734671856b485966,
        0x84f0620A547a4D14A7987770c4F5C25d488d6335,
        0x036Ac11c161C09d94cA39F7B24C1bC82046c332B,
        0x2912A18C902dE6f95321D6d6305D7B80Eec4C055,
        0xE1Ad30971b83c17E2A24c0334CB45f808AbEBc87,
        0x07f35b7FE735c49FD5051D5a0C2e74c9177fEa6d,
        0x11669Cce6AF3ce1Ef3777721fCC0eef0eE57Eaba,
        0xBDbaF6434d40D6355B1e80e40Cc4AB9C68D96116,
        0x17125b59ac51cEe029E4bD78D7f5947D1eA49BB2,
        0xA382A3A65c3F8ee2b726A2535B3c34A89D9094D4,
        0xAB78c8781fB64Bed37B274C5EE759eE33465f1f3,
        0xE74F2062612E3cAE8a93E24b2f0D3a2133373884,
        0x505120957A9806827F8F111A123561E82C40bC78,
        0x00A46922B1C54Ae6b5818C49B97E03EB4BB352e1,
        0xE76fE52a251C8F3a5dcD657E47A6C8D16Fdf4bFA
    ];

}// CrowdsaleMinter

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"san_whitelist","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MIN_TOTAL_AMOUNT_TO_RECEIVE_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"cfi_whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokenAddr","type":"address"}],"name":"attachToToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRESALE_BALANCES","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"investorsCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"abort","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"mintAllBonuses","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"COMMUNITY_ALLOWANCE_LIST","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"investors","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOTAL_RECEIVED_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PUBLIC_SALE_END","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ADVISERS_AND_FRIENDS_WALLET","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRIORITY_SALE_START","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdrawFundsAndStartToken","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"max","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_STARTED","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"min","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOKEN","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MIN_ACCEPTED_AMOUNT_FINNEY","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"presaleTokenAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"COMMUNITY_SALE_START","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"WITHDRAWAL_END","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PUBLIC_SALE_START","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRESALE_BONUS_VOTING","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRE_SALE_BONUS_PER_CENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_PER_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"total_received_amount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOTAL_AMOUNT_TO_RECEIVE_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRIORITY_ADDRESS_LIST","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TEAM_BONUS_PER_CENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"COMMUNITY_PLUS_PRIORITY_SALE_CAP_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TEAM_GROUP_WALLET","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ADVISORS_AND_PARTNERS_PER_CENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isAborted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"VERSION","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenAddr","type":"address"}],"name":"TokenStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6000805560038054600160a060020a031990811673a0d8f33ef9b44daae522531dd5e7252962b09207179091556004805482167344f145f6bc36e51eed9b661e99c8b9ccf987c0431790556005805482169055600680548216739411cf70f97c2ed09325e58629d48401aed50f8917815560078054831673d2675d3ea478692ad34f09fa1f8bda67a9696bf7179055600880548316734fd997ed7c10dbd04e95d3730cd77d79513076f21790556009805460a060020a60ff0219931673283a97af867165169aece0b2e963b9f0fc7e5b8c17929092168255600b805460ff19168155600c6101809081527f4245464f52455f535441525400000000000000000000000000000000000000006101a0526060908152600e6101c08181527f434f4d4d554e4954595f53414c450000000000000000000000000000000000006101e052608052600d6102008181527f5052494f524954595f53414c45000000000000000000000000000000000000006102205260a05260166102409081527f5052494f524954595f53414c455f46494e4953484544000000000000000000006102605260c0526102809384527f5055424c49435f53414c450000000000000000000000000000000000000000006102a05260e0939093526102c09283527f424f4e55535f4d494e54494e47000000000000000000000000000000000000006102e0526101009290925260126103009081527f5749544844524157414c5f52554e4e494e47000000000000000000000000000061032052610120526103408281527f524546554e445f52554e4e494e4700000000000000000000000000000000000061036052610140526103c06040526103809283527f434c4f53454400000000000000000000000000000000000000000000000000006103a05261016092909252620002ac9290919062000816565b50600f805460ff19169055604080516104c08101825273f55dfd2b02cf3282680c94bd01e9da044044e6a28152730d40b53828948b340673674ae65ee7f5d8488e336020820152730ea690d466d6bbd18f124e204ea486a4bf934cba91810191909152736d25b9f40b92ccf158250625a152574603465192606082015273481da0f1e89c206712bcea4f7d6e60d7b42f6c6c608082015273416eda5d6ed29cac3e6d97c102d61bc578c5db8760a082015273d78ac6ffc90e084f5fd563563cc9fd33ee303f1860c082015273e6714ab523acecf9b85d880492a2acdbe418489260e082015273285a9ca5fe9ee854457016a7a5d3a3bb9553809361010082015273600ca6372f312b081205b2c3da72517a603a15cc610120820152732b8d5c9209fbd500fd817d960830ac6718b88112610140820152734b15dd23e5f9062e4fb3a9b7decf653c0215e56061016082015273d67449e6ab23c1f46dea77d3f5e5d47ff33dc9a961018082015273d0adad7ed81afda039969566ceb8423e0ab14d906101a082015273245f27796a44d7e3d30654ed62850ff09ee856566101c082015273639d6ec2cef4d6f7130b40132b3b6f5b667e51056101e0820152735e9a69b8656914965d69d8da49c3709f0bf2b5ef610200820152730832c3b801319b62ab1d3535615d1fe9afc3397a61022082015273f6dd631279377205818c3a6725eeefb9d0f6b9f36102408201527347696054e71e4c3f899119601a255a7065c3087b61026082015273f107be6c6833f61a24c64d63c8a7fcd784abff0661028082015273056f072bd2240315b708dbcbdde80d400f0394a16102a0820152739e5baec244d8ccd49477037e28ed70584eead9566102c08201527340a0b2c1b4e30f27e21df94e734671856b4859666102e08201527384f0620a547a4d14a7987770c4f5c25d488d633561030082015273036ac11c161c09d94ca39f7b24c1bc82046c332b610320820152732912a18c902de6f95321d6d6305d7b80eec4c05561034082015273e1ad30971b83c17e2a24c0334cb45f808abebc876103608201527307f35b7fe735c49fd5051d5a0c2e74c9177fea6d6103808201527311669cce6af3ce1ef3777721fcc0eef0ee57eaba6103a082015273bdbaf6434d40d6355b1e80e40cc4ab9c68d961166103c08201527317125b59ac51cee029e4bd78d7f5947d1ea49bb26103e082015273a382a3a65c3f8ee2b726a2535b3c34a89d9094d461040082015273ab78c8781fb64bed37b274c5ee759ee33465f1f361042082015273e74f2062612e3cae8a93e24b2f0d3a213337388461044082015273505120957a9806827f8f111a123561e82c40bc7861046082015272a46922b1c54ae6b5818c49b97e03eb4bb352e161048082015273e76fe52a251c8f3a5dcd657e47a6c8d16fdf4bfa6104a0820152620006ca9060109060266200087b565b503415620006d457fe5b5b5b60018054600160a060020a03191633600160a060020a03161790555b60005b80620006ff575060005b80620007145750600154600160a060020a0316155b80620007295750600754600160a060020a0316155b806200073e5750600654600160a060020a0316155b80620007535750600954600160a060020a0316155b80620007685750600854600160a060020a0316155b8062000772575060005b806200077c575060005b8062000786575060005b8062000790575060005b806200079a575060005b80620007a4575060005b80620007ae575060005b80620007b8575060005b80620007c7575043623ca12c11155b80620007d1575060005b80620007db575060005b80620007e5575060005b80620007ef575060005b80620007f9575060005b8062000803575060005b156200080f5760006000fd5b5b62000a39565b82805482825590600052602060002090810192821562000868579160200282015b8281111562000868578251805162000857918491602090910190620008e6565b509160200191906001019062000837565b5b50620008779291506200096c565b5090565b828054828255906000526020600020908101928215620008d3579160200282015b82811115620008d35782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906200089c565b5b50620008779291506200099b565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200092957805160ff191683800117855562000959565b8280016001018555821562000959579182015b82811115620009595782518255916020019190600101906200093c565b5b5062000877929150620009c9565b5090565b6200099891905b80821115620008775760006200098a8282620009ed565b5060010162000973565b5090565b90565b6200099891905b8082111562000877578054600160a060020a0319168155600101620009a2565b5090565b90565b6200099891905b80821115620008775760008155600101620009d0565b5090565b90565b50805460018160011615610100020316600290046000825580601f1062000a15575062000a35565b601f01602090049060005260206000209081019062000a359190620009c9565b5b50565b6119be8062000a496000396000f3006060604052361561020b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416627aa091811461046a57806305dd686f1461049f57806319e82d86146104c157806324a3b013146104f157806327e235e31461050f5780632b0e16bf1461053d5780632b7110511461056957806335a063b41461058b5780633714e2741461059d5780633cc71c3f146105af5780633feb5f2b146105db57806347002c6d1461060a57806357607ddd1461062c578063590e1ae31461064e5780635ed49e9b14610660578063640708d61461068c57806366bc0d6d146106ae5780636d5433e6146106c0578063705791f2146106e857806379ba50971461070c5780637ae2b5c71461071e57806382bfefc8146107465780638843c222146107725780638da5cb5b1461079457806391aaf2e9146107c057806396ec7114146107ee5780639a701075146108105780639b11503e14610832578063ad47511314610854578063bb10b2f114610880578063bbc2fcf5146108a2578063bc60878e146108c4578063c19d93fb146108e6578063c5d22e9414610976578063d16865a314610998578063d4ee1d90146109c4578063d57a0577146109f0578063dfee634814610976578063eca0be4714610a34578063f2fde38b14610a60578063f8c3a29314610a7e578063fe4caa6414610aa0578063ffa1ad7414610ac4575b6104685b60006000600060006000600060006000600054905060008111156102335760006000fd5b600019600055610241610b54565b975060015b88600881111561025257fe5b14156103385760075460408051600090820181905281517fd63a8e11000000000000000000000000000000000000000000000000000000008152600160a060020a033381166004830152835194169363d63a8e119360248084019491938390030190829087803b15156102c157fe5b6102c65a03f115156102cf57fe5b5050604080518051602091820151600160a060020a0333166000908152600a909352929091205490985090965066038d7ea4c680008089029650870294509250508282111561031a57fe5b348490101561032557fe5b818303965061033387610c9a565b610454565b60025b88600881111561034757fe5b14156103f857600654604080516000602091820181905282517f5dbe47e8000000000000000000000000000000000000000000000000000000008152600160a060020a03338116600483015293519390941693635dbe47e8936024808301949391928390030190829087803b15156103bb57fe5b6102c65a03f115156103c957fe5b505060405151151590506103d957fe5b600c5469098774738bc82220000003965061033387610c9a565b610454565b60045b88600881111561040757fe5b141561042c57600c5469098774738bc82220000003965061033387610c9a565b610454565b60075b88600881111561043b57fe5b141561044e57610333610d9f565b610454565b60006000fd5b5b5b5b5b60008190555b5050505050505050565b005b341561047257fe5b610486600160a060020a0360043516610e12565b6040805192835260208301919091528051918290030190f35b34156104a757fe5b6104af610ea5565b60408051918252519081900360200190f35b34156104c957fe5b6104dd600160a060020a0360043516610eab565b604080519115158252519081900360200190f35b34156104f957fe5b610468600160a060020a0360043516610f36565b005b341561051757fe5b6104af600160a060020a0360043516610faf565b60408051918252519081900360200190f35b341561054557fe5b61054d610fc1565b60408051600160a060020a039092168252519081900360200190f35b341561057157fe5b6104af610fd0565b60408051918252519081900360200190f35b341561059357fe5b610468610fd7565b005b34156105a557fe5b610468611052565b005b34156105b757fe5b61054d611178565b60408051600160a060020a039092168252519081900360200190f35b34156105e357fe5b61054d600435611187565b60408051600160a060020a039092168252519081900360200190f35b341561061257fe5b6104af6111b9565b60408051918252519081900360200190f35b341561063457fe5b6104af6111d1565b60408051918252519081900360200190f35b341561065657fe5b6104686111d8565b005b341561066857fe5b61054d611230565b60408051600160a060020a039092168252519081900360200190f35b341561069457fe5b6104af61123f565b60408051918252519081900360200190f35b34156106b657fe5b610468611246565b005b34156106c857fe5b6104af6004356024356113cb565b60408051918252519081900360200190f35b34156106f057fe5b6104dd6113e6565b604080519115158252519081900360200190f35b341561071457fe5b6104686113ef565b005b341561072657fe5b6104af60043560243561147f565b60408051918252519081900360200190f35b341561074e57fe5b61054d61149a565b60408051600160a060020a039092168252519081900360200190f35b341561077a57fe5b6104af6114a9565b60408051918252519081900360200190f35b341561079c57fe5b61054d6114ae565b60408051600160a060020a039092168252519081900360200190f35b34156107c857fe5b6104af600160a060020a03600435166114bd565b60408051918252519081900360200190f35b34156107f657fe5b6104af611657565b60408051918252519081900360200190f35b341561081857fe5b6104af61165e565b60408051918252519081900360200190f35b341561083a57fe5b6104af611665565b60408051918252519081900360200190f35b341561085c57fe5b61054d61166c565b60408051600160a060020a039092168252519081900360200190f35b341561088857fe5b6104af61167b565b60408051918252519081900360200190f35b34156108aa57fe5b6104af611680565b60408051918252519081900360200190f35b34156108cc57fe5b6104af611686565b60408051918252519081900360200190f35b34156108ee57fe5b6108f661168c565b60408051602080825283518183015283519192839290830191850190808383821561093c575b80518252602083111561093c57601f19909201916020918201910161091c565b505050905090810190601f1680156109685780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561097e57fe5b6104af611751565b60408051918252519081900360200190f35b34156109a057fe5b61054d611757565b60408051600160a060020a039092168252519081900360200190f35b34156109cc57fe5b61054d611766565b60408051600160a060020a039092168252519081900360200190f35b34156109f857fe5b6104af611775565b60408051918252519081900360200190f35b341561097e57fe5b6104af611751565b60408051918252519081900360200190f35b3415610a3c57fe5b61054d611780565b60408051600160a060020a039092168252519081900360200190f35b3415610a6857fe5b610468600160a060020a036004351661178f565b005b3415610a8657fe5b6104af6117da565b60408051918252519081900360200190f35b3415610aa857fe5b6104dd6117df565b604080519115158252519081900360200190f35b3415610acc57fe5b6108f6611800565b60408051602080825283518183015283519192839290830191850190808383821561093c575b80518252602083111561093c57601f19909201916020918201910161091c565b505050905090810190601f1680156109685780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60095460009074010000000000000000000000000000000000000000900460ff1615610b9d57600030600160a060020a03163111610b93576008610b96565b60075b9050610c90565b623ca12c431080610bb75750600554600160a060020a0316155b15610bc457506000610c90565b623cb500431015610bd757506001610c90565b623cc8da431015610c0757600c5469098774738bc8222000009010610bfd576003610b96565b60025b9050610c90565b623f08974311158015610c265750600c5469098774738bc82220000090105b15610c3357506004610c90565b600160a060020a033016311515610c4c57506008610c90565b624170084311158015610c6c5750600c5469032d26d12e980b6000009010155b15610b9357600f5460ff16610c82576005610b96565b60065b9050610c90565b5060075b5b5b5b5b5b5b5b90565b60006702c68af0bb140000341015610cb25760006000fd5b60008211610cc05760006000fd5b81341115610d0457506040513482900390600160a060020a0333169082156108fc029083906000818181858888f193505050501515610cff5760006000fd5b610d08565b3491505b600160a060020a0333166000908152600a60205260409020541515610d6757600d805460018101610d398382611935565b916000526020600020900160005b8154600160a060020a033381166101009390930a92830292021916179055505b33600160a060020a0381166000908152600a60205260409020805484019055600c805484019055610d99908390611837565b5b5b5050565b600160a060020a0333166000908152600a60205260408120541515610dc45760006000fd5b5033600160a060020a03166000818152600a602052604080822080549083905590513490910192916108fc841502918491818181858888f193505050501515610e0d5760006000fd5b5b5b50565b60075460408051600090820181905281517fd63a8e11000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015283519294859491169263d63a8e1192602480820193929182900301818787803b1515610e7e57fe5b6102c65a03f11515610e8c57fe5b505060405180516020909101519093509150505b915091565b613a9881565b600654604080516000602091820181905282517f5dbe47e8000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152935191949390931692635dbe47e892602480830193919282900301818787803b1515610f1957fe5b6102c65a03f11515610f2757fe5b5050604051519150505b919050565b6000610f40610b54565b6008811115610f4b57fe5b816008811115610f5757fe5b14610f625760006000fd5b600154600160a060020a039081169033168114610f7f5760006000fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b5b505b5050565b600a6020526000908152604090205481565b600854600160a060020a031681565b600d545b90565b6007805b610fe3610b54565b6008811115610fee57fe5b10610ff95760006000fd5b600154600160a060020a0390811690331681146110165760006000fd5b6009805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b5b505b50565b60006000600060006000600060006000600561106c610b54565b600881111561107757fe5b81600881111561108357fe5b1461108e5760006000fd5b60008054908111156110a05760006000fd5b600019600055600f5460ff16156110b357fe5b600f805460ff19166001179055601c99506110cc6118ba565b985088600c54019750896064038a89028115156110e557fe5b04965089601288028115156110f657fe5b04955089600a880281151561110757fe5b0494508787019350670de0b6b3a7640000845b04670de0b6b3a76400000284039250828603955061114d86600360009054906101000a9004600160a060020a0316611837565b600454611164908690600160a060020a0316611837565b5b60008190555b505b505050505050505050565b600754600160a060020a031681565b600d80548290811061119557fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600c54600090670de0b6b3a7640000905b0490505b90565b623f089781565b60076111e2610b54565b60088111156111ed57fe5b8160088111156111f957fe5b146112045760006000fd5b60008054908111156112165760006000fd5b600019600055611224610d9f565b5b60008190555b505b50565b600454600160a060020a031681565b623cb50081565b6006611250610b54565b600881111561125b57fe5b81600881111561126757fe5b146112725760006000fd5b60008054908111156112845760006000fd5b600019600055600154600160a060020a0390811690331681146112a75760006000fd5b600154604051600160a060020a039182169130163180156108fc02916000818181858888f1935050505015156112dd5760006000fd5b600554604080517f73746172742829000000000000000000000000000000000000000000000000008152815190819003600701812063ffffffff7c01000000000000000000000000000000000000000000000000000000009182900490811690910282529151600160a060020a039093169260048083019260009291908290030181838761646e5a03f192505050156113bd57600b805460ff1916600117905560055460408051600160a060020a039092168252517ff267ded5b39f87a0e21666ce297e29e8419fdfc67713d9eaceb13f6a943a7df59181900360200190a15b5b5b5060008190555b505b50565b6000818310156113db57816113dd565b825b90505b92915050565b600b5460ff1681565b600254600160a060020a03908116903316811461140c5760006000fd5b600254600154604051600160a060020a0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36002546001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b5b50565b6000818311156113db57816113dd565b825b90505b92915050565b600554600160a060020a031681565b60c881565b600154600160a060020a031681565b600854604080516000602091820181905282517f27e235e3000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529351919485948594859491909216926327e235e392602480830193919282900301818787803b151561153157fe5b6102c65a03f1151561153f57fe5b505060405151935050600083111561164957600954604080516000602091820181905282517ee5fc5f000000000000000000000000000000000000000000000000000000008152600160a060020a038a811660048301529351939094169362e5fc5f936024808301949391928390030190829087803b15156115bd57fe5b6102c65a03f115156115cb57fe5b5050604051519250508115156115eb57670de0b6b3a7640000915061161e565b662386f26fc100008211611602576000915061161e565b670de0b6b3a764000082111561161e57670de0b6b3a764000091505b5b5b6064670de0b6b3a76400008484026036025b0481151561163c57fe5b049050808301935061164e565b600093505b5b505050919050565b623ca12c81565b6241700881565b623cc8da81565b600954600160a060020a031681565b603681565b6103e881565b600c5481565b61169461195f565b600e61169e610b54565b60088111156116a957fe5b815481106116b357fe5b906000526020600020900160005b50805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156117465780601f1061171b57610100808354040283529160200191611746565b820191906000526020600020905b81548152906001019060200180831161172957829003601f168201915b505050505090505b90565b61afc881565b600654600160a060020a031681565b600254600160a060020a031681565b601281565b61afc881565b600354600160a060020a031681565b600154600160a060020a0390811690331681146117ac5760006000fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790555b5b5050565b600a81565b60095474010000000000000000000000000000000000000000900460ff1681565b60408051808201909152600581527f302e322e31000000000000000000000000000000000000000000000000000000602082015281565b600554604080517f94bf804d0000000000000000000000000000000000000000000000000000000081526103e885026004820152600160a060020a038481166024830152915191909216916394bf804d91604480830192600092919082900301818387803b15156118a457fe5b6102c65a03f115156118b257fe5b5050505b5050565b6000808080805b60105483101561192a5760108054849081106118d957fe5b906000526020600020900160005b9054906101000a9004600160a060020a03169150611904826114bd565b9050600081111561191e576119198183611837565b928301925b5b8260010192506118c1565b8394505b5050505090565b815481835581811511610fa857600083815260209020610fa8918101908301611971565b5b505050565b60408051602081019091526000815290565b610c9091905b8082111561198b5760008155600101611977565b5090565b905600a165627a7a72305820294d517173952ee5c3d5e9ce7866664fe83aca5cff5ca3e7a3218979442d5ca20029

Deployed Bytecode

0x6060604052361561020b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416627aa091811461046a57806305dd686f1461049f57806319e82d86146104c157806324a3b013146104f157806327e235e31461050f5780632b0e16bf1461053d5780632b7110511461056957806335a063b41461058b5780633714e2741461059d5780633cc71c3f146105af5780633feb5f2b146105db57806347002c6d1461060a57806357607ddd1461062c578063590e1ae31461064e5780635ed49e9b14610660578063640708d61461068c57806366bc0d6d146106ae5780636d5433e6146106c0578063705791f2146106e857806379ba50971461070c5780637ae2b5c71461071e57806382bfefc8146107465780638843c222146107725780638da5cb5b1461079457806391aaf2e9146107c057806396ec7114146107ee5780639a701075146108105780639b11503e14610832578063ad47511314610854578063bb10b2f114610880578063bbc2fcf5146108a2578063bc60878e146108c4578063c19d93fb146108e6578063c5d22e9414610976578063d16865a314610998578063d4ee1d90146109c4578063d57a0577146109f0578063dfee634814610976578063eca0be4714610a34578063f2fde38b14610a60578063f8c3a29314610a7e578063fe4caa6414610aa0578063ffa1ad7414610ac4575b6104685b60006000600060006000600060006000600054905060008111156102335760006000fd5b600019600055610241610b54565b975060015b88600881111561025257fe5b14156103385760075460408051600090820181905281517fd63a8e11000000000000000000000000000000000000000000000000000000008152600160a060020a033381166004830152835194169363d63a8e119360248084019491938390030190829087803b15156102c157fe5b6102c65a03f115156102cf57fe5b5050604080518051602091820151600160a060020a0333166000908152600a909352929091205490985090965066038d7ea4c680008089029650870294509250508282111561031a57fe5b348490101561032557fe5b818303965061033387610c9a565b610454565b60025b88600881111561034757fe5b14156103f857600654604080516000602091820181905282517f5dbe47e8000000000000000000000000000000000000000000000000000000008152600160a060020a03338116600483015293519390941693635dbe47e8936024808301949391928390030190829087803b15156103bb57fe5b6102c65a03f115156103c957fe5b505060405151151590506103d957fe5b600c5469098774738bc82220000003965061033387610c9a565b610454565b60045b88600881111561040757fe5b141561042c57600c5469098774738bc82220000003965061033387610c9a565b610454565b60075b88600881111561043b57fe5b141561044e57610333610d9f565b610454565b60006000fd5b5b5b5b5b60008190555b5050505050505050565b005b341561047257fe5b610486600160a060020a0360043516610e12565b6040805192835260208301919091528051918290030190f35b34156104a757fe5b6104af610ea5565b60408051918252519081900360200190f35b34156104c957fe5b6104dd600160a060020a0360043516610eab565b604080519115158252519081900360200190f35b34156104f957fe5b610468600160a060020a0360043516610f36565b005b341561051757fe5b6104af600160a060020a0360043516610faf565b60408051918252519081900360200190f35b341561054557fe5b61054d610fc1565b60408051600160a060020a039092168252519081900360200190f35b341561057157fe5b6104af610fd0565b60408051918252519081900360200190f35b341561059357fe5b610468610fd7565b005b34156105a557fe5b610468611052565b005b34156105b757fe5b61054d611178565b60408051600160a060020a039092168252519081900360200190f35b34156105e357fe5b61054d600435611187565b60408051600160a060020a039092168252519081900360200190f35b341561061257fe5b6104af6111b9565b60408051918252519081900360200190f35b341561063457fe5b6104af6111d1565b60408051918252519081900360200190f35b341561065657fe5b6104686111d8565b005b341561066857fe5b61054d611230565b60408051600160a060020a039092168252519081900360200190f35b341561069457fe5b6104af61123f565b60408051918252519081900360200190f35b34156106b657fe5b610468611246565b005b34156106c857fe5b6104af6004356024356113cb565b60408051918252519081900360200190f35b34156106f057fe5b6104dd6113e6565b604080519115158252519081900360200190f35b341561071457fe5b6104686113ef565b005b341561072657fe5b6104af60043560243561147f565b60408051918252519081900360200190f35b341561074e57fe5b61054d61149a565b60408051600160a060020a039092168252519081900360200190f35b341561077a57fe5b6104af6114a9565b60408051918252519081900360200190f35b341561079c57fe5b61054d6114ae565b60408051600160a060020a039092168252519081900360200190f35b34156107c857fe5b6104af600160a060020a03600435166114bd565b60408051918252519081900360200190f35b34156107f657fe5b6104af611657565b60408051918252519081900360200190f35b341561081857fe5b6104af61165e565b60408051918252519081900360200190f35b341561083a57fe5b6104af611665565b60408051918252519081900360200190f35b341561085c57fe5b61054d61166c565b60408051600160a060020a039092168252519081900360200190f35b341561088857fe5b6104af61167b565b60408051918252519081900360200190f35b34156108aa57fe5b6104af611680565b60408051918252519081900360200190f35b34156108cc57fe5b6104af611686565b60408051918252519081900360200190f35b34156108ee57fe5b6108f661168c565b60408051602080825283518183015283519192839290830191850190808383821561093c575b80518252602083111561093c57601f19909201916020918201910161091c565b505050905090810190601f1680156109685780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561097e57fe5b6104af611751565b60408051918252519081900360200190f35b34156109a057fe5b61054d611757565b60408051600160a060020a039092168252519081900360200190f35b34156109cc57fe5b61054d611766565b60408051600160a060020a039092168252519081900360200190f35b34156109f857fe5b6104af611775565b60408051918252519081900360200190f35b341561097e57fe5b6104af611751565b60408051918252519081900360200190f35b3415610a3c57fe5b61054d611780565b60408051600160a060020a039092168252519081900360200190f35b3415610a6857fe5b610468600160a060020a036004351661178f565b005b3415610a8657fe5b6104af6117da565b60408051918252519081900360200190f35b3415610aa857fe5b6104dd6117df565b604080519115158252519081900360200190f35b3415610acc57fe5b6108f6611800565b60408051602080825283518183015283519192839290830191850190808383821561093c575b80518252602083111561093c57601f19909201916020918201910161091c565b505050905090810190601f1680156109685780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60095460009074010000000000000000000000000000000000000000900460ff1615610b9d57600030600160a060020a03163111610b93576008610b96565b60075b9050610c90565b623ca12c431080610bb75750600554600160a060020a0316155b15610bc457506000610c90565b623cb500431015610bd757506001610c90565b623cc8da431015610c0757600c5469098774738bc8222000009010610bfd576003610b96565b60025b9050610c90565b623f08974311158015610c265750600c5469098774738bc82220000090105b15610c3357506004610c90565b600160a060020a033016311515610c4c57506008610c90565b624170084311158015610c6c5750600c5469032d26d12e980b6000009010155b15610b9357600f5460ff16610c82576005610b96565b60065b9050610c90565b5060075b5b5b5b5b5b5b5b90565b60006702c68af0bb140000341015610cb25760006000fd5b60008211610cc05760006000fd5b81341115610d0457506040513482900390600160a060020a0333169082156108fc029083906000818181858888f193505050501515610cff5760006000fd5b610d08565b3491505b600160a060020a0333166000908152600a60205260409020541515610d6757600d805460018101610d398382611935565b916000526020600020900160005b8154600160a060020a033381166101009390930a92830292021916179055505b33600160a060020a0381166000908152600a60205260409020805484019055600c805484019055610d99908390611837565b5b5b5050565b600160a060020a0333166000908152600a60205260408120541515610dc45760006000fd5b5033600160a060020a03166000818152600a602052604080822080549083905590513490910192916108fc841502918491818181858888f193505050501515610e0d5760006000fd5b5b5b50565b60075460408051600090820181905281517fd63a8e11000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015283519294859491169263d63a8e1192602480820193929182900301818787803b1515610e7e57fe5b6102c65a03f11515610e8c57fe5b505060405180516020909101519093509150505b915091565b613a9881565b600654604080516000602091820181905282517f5dbe47e8000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152935191949390931692635dbe47e892602480830193919282900301818787803b1515610f1957fe5b6102c65a03f11515610f2757fe5b5050604051519150505b919050565b6000610f40610b54565b6008811115610f4b57fe5b816008811115610f5757fe5b14610f625760006000fd5b600154600160a060020a039081169033168114610f7f5760006000fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b5b505b5050565b600a6020526000908152604090205481565b600854600160a060020a031681565b600d545b90565b6007805b610fe3610b54565b6008811115610fee57fe5b10610ff95760006000fd5b600154600160a060020a0390811690331681146110165760006000fd5b6009805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b5b505b50565b60006000600060006000600060006000600561106c610b54565b600881111561107757fe5b81600881111561108357fe5b1461108e5760006000fd5b60008054908111156110a05760006000fd5b600019600055600f5460ff16156110b357fe5b600f805460ff19166001179055601c99506110cc6118ba565b985088600c54019750896064038a89028115156110e557fe5b04965089601288028115156110f657fe5b04955089600a880281151561110757fe5b0494508787019350670de0b6b3a7640000845b04670de0b6b3a76400000284039250828603955061114d86600360009054906101000a9004600160a060020a0316611837565b600454611164908690600160a060020a0316611837565b5b60008190555b505b505050505050505050565b600754600160a060020a031681565b600d80548290811061119557fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600c54600090670de0b6b3a7640000905b0490505b90565b623f089781565b60076111e2610b54565b60088111156111ed57fe5b8160088111156111f957fe5b146112045760006000fd5b60008054908111156112165760006000fd5b600019600055611224610d9f565b5b60008190555b505b50565b600454600160a060020a031681565b623cb50081565b6006611250610b54565b600881111561125b57fe5b81600881111561126757fe5b146112725760006000fd5b60008054908111156112845760006000fd5b600019600055600154600160a060020a0390811690331681146112a75760006000fd5b600154604051600160a060020a039182169130163180156108fc02916000818181858888f1935050505015156112dd5760006000fd5b600554604080517f73746172742829000000000000000000000000000000000000000000000000008152815190819003600701812063ffffffff7c01000000000000000000000000000000000000000000000000000000009182900490811690910282529151600160a060020a039093169260048083019260009291908290030181838761646e5a03f192505050156113bd57600b805460ff1916600117905560055460408051600160a060020a039092168252517ff267ded5b39f87a0e21666ce297e29e8419fdfc67713d9eaceb13f6a943a7df59181900360200190a15b5b5b5060008190555b505b50565b6000818310156113db57816113dd565b825b90505b92915050565b600b5460ff1681565b600254600160a060020a03908116903316811461140c5760006000fd5b600254600154604051600160a060020a0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36002546001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b5b50565b6000818311156113db57816113dd565b825b90505b92915050565b600554600160a060020a031681565b60c881565b600154600160a060020a031681565b600854604080516000602091820181905282517f27e235e3000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529351919485948594859491909216926327e235e392602480830193919282900301818787803b151561153157fe5b6102c65a03f1151561153f57fe5b505060405151935050600083111561164957600954604080516000602091820181905282517ee5fc5f000000000000000000000000000000000000000000000000000000008152600160a060020a038a811660048301529351939094169362e5fc5f936024808301949391928390030190829087803b15156115bd57fe5b6102c65a03f115156115cb57fe5b5050604051519250508115156115eb57670de0b6b3a7640000915061161e565b662386f26fc100008211611602576000915061161e565b670de0b6b3a764000082111561161e57670de0b6b3a764000091505b5b5b6064670de0b6b3a76400008484026036025b0481151561163c57fe5b049050808301935061164e565b600093505b5b505050919050565b623ca12c81565b6241700881565b623cc8da81565b600954600160a060020a031681565b603681565b6103e881565b600c5481565b61169461195f565b600e61169e610b54565b60088111156116a957fe5b815481106116b357fe5b906000526020600020900160005b50805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156117465780601f1061171b57610100808354040283529160200191611746565b820191906000526020600020905b81548152906001019060200180831161172957829003601f168201915b505050505090505b90565b61afc881565b600654600160a060020a031681565b600254600160a060020a031681565b601281565b61afc881565b600354600160a060020a031681565b600154600160a060020a0390811690331681146117ac5760006000fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790555b5b5050565b600a81565b60095474010000000000000000000000000000000000000000900460ff1681565b60408051808201909152600581527f302e322e31000000000000000000000000000000000000000000000000000000602082015281565b600554604080517f94bf804d0000000000000000000000000000000000000000000000000000000081526103e885026004820152600160a060020a038481166024830152915191909216916394bf804d91604480830192600092919082900301818387803b15156118a457fe5b6102c65a03f115156118b257fe5b5050505b5050565b6000808080805b60105483101561192a5760108054849081106118d957fe5b906000526020600020900160005b9054906101000a9004600160a060020a03169150611904826114bd565b9050600081111561191e576119198183611837565b928301925b5b8260010192506118c1565b8394505b5050505090565b815481835581811511610fa857600083815260209020610fa8918101908301611971565b5b505050565b60408051602081019091526000815290565b610c9091905b8082111561198b5760008155600101611977565b5090565b905600a165627a7a72305820294d517173952ee5c3d5e9ce7866664fe83aca5cff5ca3e7a3218979442d5ca20029

Swarm Source

bzzr://294d517173952ee5c3d5e9ce7866664fe83aca5cff5ca3e7a3218979442d5ca2

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.