This WOLK token is no longer valid as the minimum set in the smart contract was not met. Details can be found here, https://blog.wolk.com/if-first-you-dont-succeed-2392f046565c.
Contract Overview | Wolk_Old
Balance: 107.2751192304 Ether
Ether Value: $22,374.37 (@ $208.57/ETH)
Transactions: 6302 txns
Token Tracker: Wolk Protocol Token (WOLK)
 Latest 25 txns From a total of 6302 Transactions

TxHash Age From To Value [TxFee]
0x0867a969af4787288813e6e4bbeac19546bed081b51b942abbb15fe18a8e27033 days 21 hrs ago0xf93cf6018e0201cf3a55cbda4cb8d4c6ce0c6fbf  IN   Wolk_Old0 Ether0.000532182
0x82058a15367dd45c70b2edd207d397dcf97aed82ed6ba559d0d7b81eca8bc66514 days 18 hrs ago0x0ac59f089ec683e1a0af839c34fe20e3c7eb29e9  IN   Wolk_Old0 Ether0.00046026
0xdb3d87c64c94ec2a6cb135df60b3be92951269dc591aa3073716f5a25bf561a422 days 9 hrs ago0xd17a4875fb4fe9e554a8f79a1d14ec39c05f1266  IN   Wolk_Old0 Ether0.000608208
0x7e868dd6525393b050a63b77bcab53553d795172745857819dbbf9d9fec5f3f823 days 5 hrs ago0xc6aeb6f5eac5915606f034b176fd448e794f15db  IN   Wolk_Old0 Ether0.000114039
0xe9707c021f8f52ca18541f34ac4ecb3c650f3f3ae9e52b74b18d9d8464762c5652 days 3 mins ago0x44a3d758c2a42d421a69d1dfe76b511112fff68b  IN   Wolk_Old0 Ether0.000912988
0xfc9ea14136be9663e857d79ee854b01436480593f41fca9cc1676692f93f42f852 days 5 mins ago0x44a3d758c2a42d421a69d1dfe76b511112fff68b  IN   Wolk_Old0 Ether0.000912988
0x327186bec2777210e6c210ba3b445398d4951f057f60572057566c712e232d8e52 days 10 hrs ago0x0dad24c0477fee54b3b5ad02dabf222051f6c146  IN   Wolk_Old0 Ether0.000098913627
0x237ba2befc860782bed4592700a539c7da37a26f2c4aed10bc16aa68bcbc0de454 days 11 hrs ago0xa7cda2851a43459ea2c167a4f1196ac93351583a  IN   Wolk_Old0 Ether0.002640015
0x4a2c5715ff2c95d1dac3624ab638fa9b16266dd61ab62a023cd97b43af194b6758 days 11 hrs ago0x5b661a2990f8577cfc42087b8694ed68e79bcd88  IN   Wolk_Old0 Ether0.00115065
0x7a0fdcd750401d5a542099c6cd74c3675ccd60a7dcb206fa0ba845897214041158 days 12 hrs ago0x894cc8fc2c1d4837516ef981309b2fed3a7ddd96  IN   Wolk_Old0 Ether0.00115065
0x1507c0047ca1b265cdb5347e8f9a7e7242b72e45c7a101fe973fc1fda571192058 days 18 hrs ago0x84c2dc9bfdb90340c6c2bad609ac9ed0736715f6  IN   Wolk_Old0 Ether0.00115065
0x54c26a6cd6c13a918c42137006ec9cc0c877f943f14b9b019167ff5c0d9f2f7758 days 18 hrs ago0x88e4c34f2d290d32761bcd68e874e018d3355d4a  IN   Wolk_Old0 Ether0.00115065
0x7f44b25d86c6c079dd6e171276892f63897e31675eebf29cf06132d60ad07bae59 days 1 hr ago0x04880c04cbe835c7f324311f88035070d3438c75  IN   Wolk_Old0 Ether0.00115065
0x4b9bc5a66eff5a9be451873791c8080e35220cfefe663288baf59a0f144865dc59 days 9 hrs ago0xc6ce05d55f07e24dc09d74d9e375fad63f753df4  IN   Wolk_Old0 Ether0.00190065
0x3542a35afaadca5bfb51e38da7880ed4d6e29b4a5a09cf904dad381e03afd93672 days 10 hrs ago0x65c6d15c2772b42c745c980dbcb5fb0f74974385  IN   Wolk_Old0 Ether0.000044536
0xa0b113d0ecdb05d04c807a7d767e26eaaf27be39361234606feac4b3ac7f6a7872 days 11 hrs ago0x65c6d15c2772b42c745c980dbcb5fb0f74974385  IN   Wolk_Old0 Ether0.000076026
0x71e52aa22cda8526c6b8050709f5c4947548e7a12d1bbf3eed95a5659bf4d6f572 days 11 hrs ago0x65c6d15c2772b42c745c980dbcb5fb0f74974385  IN   Wolk_Old0 Ether0.000048844
0x60d71030f1f41b71970f157f49d57da82ebc3e638c35d8bc4e3911d4355d436272 days 11 hrs ago0x65c6d15c2772b42c745c980dbcb5fb0f74974385  IN   Wolk_Old0 Ether0.00004213
0x6a8136f5a792d4d810bb99ab9398b5593a0f65449b40907627c1e4b07b16da4979 days 3 hrs ago0x028e0732bed8bb3cebd5c76db520b140f491fc7f  IN   Wolk_Old0 Ether0.000038013
0xb3d20484564edc4e4fabab7711afd462b4333cfca001ca933dcc1fd92c1e368380 days 15 hrs ago0xda2160f626c4ca9b137da0bc4355f503f053566c  IN   Wolk_Old0 Ether0.000038013
0x9a50564e86d6f3060b1dd419133e28aadf494d0ae43f9fffc63340d0e0c0f2ce81 days 19 hrs ago0x67ac24b406a1028e4f1cb77942710a684b23b35e  IN   Wolk_Old0 Ether0.000038013
0xf47b896c0b196c8c901c65e7bea3009dae2b4dfce814d40c80ca903926c3761e92 days 19 hrs ago0xeeeb089c1935b45bf3f474b5698397e0c212ec9a  IN   Wolk_Old0 Ether0.00038013
0x580e6acc83d7633ae6b225044f50020a02a2024df5c9a81afa566e871cf5902a94 days 6 hrs ago0x71341a8392e65ce8ff2b41c00d3fe2ad87b9be00  IN   Wolk_Old0 Ether0.004219443
0x7a5f6541cfc99ac4dd7d0e3d1fc1f9122878eb1b42a06ddbd491d5595998cd7499 days 1 hr ago0xa9217b61e64c2e3ac9fa0c6f3e42036b4ff64639  IN   Wolk_Old0 Ether0.003196
0x07c64d9ea2eb2364139807ecc93135a01fb9553560c9fcdd54c8aa2cc47c3ca1105 days 22 hrs ago0xbfb3b07e272f355e6e1f7f004ada018724c9ed0a  IN   Wolk_Old0 Ether0
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click Here To View More View All
ParentTxHash Block Age From To Value
0x75afd2c62dcddc6099f65e026332d289e456e9a5d35826930688da4c21d455005422491188 days 22 hrs ago0x31a240648e2baf4f9f17225987f6f53fceb1699a0x728781e75735dc0962df3a51d7ef47e798a7107e0.000000007777777777 Ether
0xa3f858bc0ba9de9191af1594548f50cd6ca7d45a8021372ba7919b61a22d5f045203164225 days 17 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xe28970c7c73b4c2ef8bc15238b8b44ad40cebf3d30 Ether
0xfbd49e3857d424d3dc4bb780e5b9145276c57023cbe91650d8b295553146baf45138977236 days 15 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x1567dc4d627f12f59ea6287fc8b92039b957d2b24.9592 Ether
0xa736dc3d27fc4a999afa881abb811dfef528d11eeb44d5b5d98a015fba65f4d85016875257 days 4 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x9460504aa41d99367c13ec3f5dfb407560fb7cbf3.49 Ether
0x55dc7bd85d9ccb0ea6f3bb36a55e36f18fa074f78d06c9fce0715a74c670af034999673260 days 3 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xb99e8b77a7b49629ac881b4f9f0feae13200b07b1 Ether
0x571f5013fef10d48cb262c29ff354dfa75243a8ca1aadcb13804f7e51ad3e24e4932474271 days 12 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x8661dc85805e7ea7fab2db16df9e9fa053f1c5712.5 Ether
0x721c4a39e4ea7c3e2760cf6ece23ee0664b658536e79fac5a54d779268e8da6b4917746274 days 4 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xc3c1b8e3d95326e96ca32a6293c764a79bd35a5f10 Ether
0xbaa8271a23ea22050e4a3ff148f43e202ebbca361a33eec799a2cb5c644e770c4912481275 days 3 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xfca7c942e06acadde786bb2296bd1ead3aed455a4 Ether
0xd272cdaa8da37f3da221b45aaf157ac56c5f771ea0ffd792183a38236e92507d4912053275 days 5 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x6ab4a65d0d942f46115a218b5759815594ddb1ed3 Ether
0x38be5597d7f2fe1f00d572bffeaaa014c81a8990d6977cc39b26a946a0e0b35a4879139281 days 6 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x4ba5ae353f47ee76e172ea31ba48b3975de419a70.380978372 Ether
0xc93d5d7ba4d1dc7f5bcaf8a5c021666880188efc9ce34f75c53c840a856445464877627281 days 13 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xbffbb862e151f1dee5f08d88a7e3bda40c5515d32 Ether
0x5665773e40f6eaeb322ed8d8097526d5f89eafeef6bcbe62fc773b4d7aaef2784779052298 days 17 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x428512bd5e9f8e486972c89b423eed37d304d78610 Ether
0x96bfd03c0ef4036ef8a38751d0e3a1e05f84bec4129d901439eacc32f76e76f64764685301 days 6 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xf7ff150d81894beb14dbe332f7460a6f25b5ccb53 Ether
0x68aa9d6ea67994bcbb44177d72443a19e9aa38707c90b5970a89ccabc23922a34744257304 days 20 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xf8cd8c4f741c64380806eae1c3e374ba48d1d46f2 Ether
0x18f9442026d4bf5cdc9b9588a68a2f405ae454cf193f2c7b7578d8c86cfc625d4729984307 days 8 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x81d00629511337d32d268166dfaec8831c0c88f319.5 Ether
0xb60c97d0aded634ec632d1b26c22b13b037bc30ea2cc52cd7508a757fc84ce4f4680199316 days 1 hr ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x7a3933f84216fb8188cd8c03aa8bca78cf8b1b4e1 Ether
0xdad7389d04d2b26d30fad9f4491d4143398c6771189851d2beec0ed56fa826ce4635328323 days 12 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x18f63a1b88d04cd5f7c91ec67374bdf4d82478823 Ether
0xd1758cdaa509612834bf5a2490139fef472997dd6655c60aabdbe89f8e27b31f4632377324 days 34 mins ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x8c0a0ba507ce136c29ec050781ee80697a06e3e91 Ether
0x2cad6d9d34b614d5d4026f1b33ea0936c5d55fe54b9241abf9a7c7fba50809374630714324 days 7 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x7a2b4fc201785792eb73c6922b6d8ab9a8f932a33 Ether
0xa3c93a70ff2cf4ef3caa409e34ece5d7c239baf6da4ddb6af028cbd1b7da4bea4609849327 days 15 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xee3c1dd2f31d68878eb515112bc54f03907f4df20.1 Ether
0x438e0a47e9645d8e5adbe4d2e622f67ddb2a104764d007a65cdb6a5114b1baf34598528329 days 11 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xa1dd0c192c34310b2c757ad5fa6278b6d9c84e8e2 Ether
0xb522bfb95977d221fff32b00523322c0ba6e243d29a96d68845015ca61716fcb4595714329 days 22 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xbfa3f22321779344776ce5a7f5957ea7492532840.5 Ether
0x5e939be5449f028484dbb73f303bf4478aae3de1ae6c36884bc1d942709e00ae4594139330 days 4 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x1eb523cf2133d6cceb4914bb7bedadfd7a3a66220.4 Ether
0x218be22bb847ec0a44bf27d8829e41bb6849de08a19ee64cfbd0529a638e2d944561116335 days 12 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xfc9f2d043140e4a5994a065751c8cd640b3e804e1.5 Ether
0x27a9fbde2bf3101fa4b38f24b88bad9769556e532ff95215617b126cbe953b744523738341 days 12 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xbe3c8b1bcef016f2da882e05fc9f05c8b4a70abd4.7 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: WolkExchange
Compiler Text: v0.4.16+commit.d7661dd9
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.16;

// SafeMath Taken From FirstBlood
contract SafeMath {
    function safeMul(uint a, uint b) internal returns (uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function safeDiv(uint a, uint b) internal returns (uint) {
        assert(b > 0);
        uint c = a / b;
        assert(a == b * c + a % b);
        return c;
    }

    function safeSub(uint a, uint b) internal returns (uint) {
        assert(b <= a);
        return a - b;
    }

    function safeAdd(uint a, uint b) internal returns (uint) {
        uint c = a + b;
        assert(c>=a && c>=b);
        return c;
    }
}

// Ownership
contract Owned {

    address public owner;
    address public newOwner;
    modifier onlyOwner { assert(msg.sender == owner); _; }

    event OwnerUpdate(address _prevOwner, address _newOwner);

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

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

    function acceptOwnership() public {
        require(msg.sender == newOwner);
        OwnerUpdate(owner, newOwner);
        owner = newOwner;
        newOwner = 0x0;
    }
}

// ERC20 Interface
contract ERC20 {
    function totalSupply() constant returns (uint _totalSupply);
    function balanceOf(address _owner) constant returns (uint balance);
    function transfer(address _to, uint _value) returns (bool success);
    function transferFrom(address _from, address _to, uint _value) returns (bool success);
    function approve(address _spender, uint _value) returns (bool success);
    function allowance(address _owner, address _spender) constant returns (uint remaining);
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}

// ERC20Token
contract ERC20Token is ERC20, SafeMath {

    mapping(address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
    uint256 public totalTokens; 

    function transfer(address _to, uint256 _value) returns (bool success) {
        if (balances[msg.sender] >= _value && _value > 0) {
            balances[msg.sender] = safeSub(balances[msg.sender], _value);
            balances[_to] = safeAdd(balances[_to], _value);
            Transfer(msg.sender, _to, _value);
            return true;
        } else {
            return false;
        }
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        var _allowance = allowed[_from][msg.sender];
        if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0) {
            balances[_to] = safeAdd(balances[_to], _value);
            balances[_from] = safeSub(balances[_from], _value);
            allowed[_from][msg.sender] = safeSub(_allowance, _value);
            Transfer(_from, _to, _value);
            return true;
        } else {
            return false;
        }
    }

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

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

    function approve(address _spender, uint256 _value) returns (bool success) {
        require((_value == 0) || (allowed[msg.sender][_spender] == 0));
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

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

contract Wolk is ERC20Token, Owned {

    // TOKEN INFO
    string  public constant name = "Wolk Protocol Token";
    string  public constant symbol = "WOLK";
    uint256 public constant decimals = 18;

    // RESERVE
    uint256 public reserveBalance = 0; 
    uint8  public constant percentageETHReserve = 15;

    // CONTRACT OWNER
    address public multisigWallet;


    // WOLK SETTLERS
    mapping (address => bool) settlers;
    modifier onlySettler { assert(settlers[msg.sender] == true); _; }

    // TOKEN GENERATION CONTROL
    address public wolkSale;
    bool    public allSaleCompleted = false;
    bool    public openSaleCompleted = false;
    modifier isTransferable { require(allSaleCompleted); _; }
    modifier onlyWolk { assert(msg.sender == wolkSale); _; }

    // TOKEN GENERATION EVENTLOG
    event WolkCreated(address indexed _to, uint256 _tokenCreated);
    event WolkDestroyed(address indexed _from, uint256 _tokenDestroyed);
    event LogRefund(address indexed _to, uint256 _value);
}

contract WolkTGE is Wolk {

    // TOKEN GENERATION EVENT
    mapping (address => uint256) contribution;
    mapping (address => uint256) presaleLimit;
    mapping (address => bool) presaleContributor;
    uint256 public constant tokenGenerationMin = 50 * 10**6 * 10**decimals;
    uint256 public constant tokenGenerationMax = 150 * 10**6 * 10**decimals;
    uint256 public presale_start_block; 
    uint256 public start_block;
    uint256 public end_block;

    // @param _presaleStartBlock
    // @param _startBlock
    // @param _endBlock
    // @param _wolkWallet
    // @param _wolkSale
    // @return success
    // @dev Wolk Genesis Event [only accessible by Contract Owner]
    function wolkGenesis(uint256 _presaleStartBlock, uint256 _startBlock, uint256 _endBlock, address _wolkWallet, address _wolkSale) onlyOwner returns (bool success){
        require((totalTokens < 1) && (block.number <= _startBlock) && (_endBlock > _startBlock) && (_startBlock > _presaleStartBlock));
        presale_start_block = _presaleStartBlock;
        start_block = _startBlock;
        end_block = _endBlock;
        multisigWallet = _wolkWallet;
        wolkSale = _wolkSale;
        settlers[msg.sender] = true;
        return true;
    }

    // @param _presaleParticipants
    // @return success
    // @dev Adds addresses that are allowed to take part in presale [only accessible by current Contract Owner]
    function addParticipant(address[] _presaleParticipants, uint256[] _contributionLimits) onlyOwner returns (bool success) {
        require(_presaleParticipants.length == _contributionLimits.length);         
        for (uint cnt = 0; cnt < _presaleParticipants.length; cnt++){           
            presaleContributor[_presaleParticipants[cnt]] = true;
            presaleLimit[_presaleParticipants[cnt]] =  safeMul(_contributionLimits[cnt], 10**decimals);       
        }
        return true;
    } 

    // @param _presaleParticipants
    // @return success
    // @dev Revoke designated presale contributors [only accessible by current Contract Owner]
    function removeParticipant(address[] _presaleParticipants) onlyOwner returns (bool success){         
        for (uint cnt = 0; cnt < _presaleParticipants.length; cnt++){           
            presaleContributor[_presaleParticipants[cnt]] = false;
            presaleLimit[_presaleParticipants[cnt]] = 0;      
        }
        return true;
    }

    // @param _participant
    // @return remainingAllocation
    // @dev return PresaleLimit allocated to given address
    function participantBalance(address _participant) constant returns (uint256 remainingAllocation) {
        return presaleLimit[_participant];
    }
    

    // @param _participant
    // @dev use tokenGenerationEvent to handle Pre-sale and Open-sale
    function tokenGenerationEvent(address _participant) payable external {
        require( presaleContributor[_participant] && !openSaleCompleted && !allSaleCompleted && (block.number <= end_block) && msg.value > 0);

        /* Early Participation Discount (rounded to the nearest integer)
        ---------------------------------
        | Token Issued | Rate | Discount|
        ---------------------------------
        |   0  -  50MM | 1177 |  15.0%  |
        | 50MM -  60MM | 1143 |  12.5%  |
        | 60MM -  70MM | 1111 |  10.0%  |
        | 70MM -  80MM | 1081 |   7.5%  |
        | 80MM -  90MM | 1053 |   5.0%  |         
        | 90MM - 100MM | 1026 |   2.5%  |
        |    100MM+    | 1000 |   0.0%  |
        ---------------------------------
        */

        uint256 rate = 1000;  // Default Rate

        if ( totalTokens < (50 * 10**6 * 10**decimals) ) {  
            rate = 1177;
        } else if ( totalTokens < (60 * 10**6 * 10**decimals) ) {  
            rate = 1143;
        } else if ( totalTokens < (70 * 10**6 * 10**decimals) ) {  
            rate = 1111;
        } else if ( totalTokens < (80 * 10**6 * 10**decimals) ) {  
            rate = 1081;
        } else if ( totalTokens < (90 * 10**6 * 10**decimals) ) {  
            rate = 1053;
        } else if ( totalTokens < (100 * 10**6 * 10**decimals) ) {  
            rate = 1026;
        }else{
            rate = 1000;
        }

        if ((block.number < start_block) && (block.number >= presale_start_block))  { 
            require(presaleLimit[_participant] >= msg.value);
            presaleLimit[_participant] = safeSub(presaleLimit[_participant], msg.value);
        } else {
            require(block.number >= start_block) ;
        }

        uint256 tokens = safeMul(msg.value, rate);
        uint256 checkedSupply = safeAdd(totalTokens, tokens);
        require(checkedSupply <= tokenGenerationMax);

        totalTokens = checkedSupply;
        Transfer(address(this), _participant, tokens);
        balances[_participant] = safeAdd(balances[_participant], tokens);
        contribution[_participant] = safeAdd(contribution[_participant], msg.value);
        WolkCreated(_participant, tokens); // logs token creation
    }


    // @dev If Token Generation Minimum is Not Met, TGE Participants can call this func and request for refund
    function refund() external {
        require((contribution[msg.sender] > 0) && (!allSaleCompleted) && (totalTokens < tokenGenerationMin) && (block.number > end_block));
        uint256 tokenBalance = balances[msg.sender];
        uint256 refundBalance = contribution[msg.sender];
        balances[msg.sender] = 0;
        contribution[msg.sender] = 0;
        totalTokens = safeSub(totalTokens, tokenBalance);
        WolkDestroyed(msg.sender, tokenBalance);
        LogRefund(msg.sender, refundBalance);
        msg.sender.transfer(refundBalance); 
    }

    // @dev Finalizing the Open-Sale for Token Generation Event. 15% of Eth will be kept in contract to provide liquidity
    function finalizeOpenSale() onlyOwner {
        require((!openSaleCompleted) && (totalTokens >= tokenGenerationMin));
        openSaleCompleted = true;
        end_block = block.number;
        reserveBalance = safeDiv(safeMul(totalTokens, percentageETHReserve), 100000);
        var withdrawalBalance = safeSub(this.balance, reserveBalance);
        msg.sender.transfer(withdrawalBalance);
    }

    // @dev Finalizing the Private-Sale. Entire Eth will be kept in contract to provide liquidity. This func will conclude the entire sale.
    function finalize() onlyWolk payable external {
        require((openSaleCompleted) && (!allSaleCompleted));                                                                                                    
        uint256 privateSaleTokens =  safeDiv(safeMul(msg.value, 100000), percentageETHReserve);
        uint256 checkedSupply = safeAdd(totalTokens, privateSaleTokens);                                                                                                
        totalTokens = checkedSupply;                                                                                                                         
        reserveBalance = safeAdd(reserveBalance, msg.value);                                                                                                 
        Transfer(address(this), wolkSale, privateSaleTokens);                                                                                                              
        balances[wolkSale] = safeAdd(balances[wolkSale], privateSaleTokens);                                                                                                  
        WolkCreated(wolkSale, privateSaleTokens); // logs token creation for Presale events                                                                                                 
        allSaleCompleted = true;                                                                                                                                
    }
}

contract IBurnFormula {
    function calculateWolkToBurn(uint256 _value) public constant returns (uint256);
}

contract IFeeFormula {
    function calculateProviderFee(uint256 _value) public constant returns (uint256);
}

contract WolkProtocol is Wolk {

    // WOLK NETWORK PROTOCOL
    address public burnFormula;
    bool    public settlementIsRunning = true;
    uint256 public burnBasisPoints = 500;  // Burn rate (in BP) when Service Provider withdraws from data buyers' accounts
    mapping (address => mapping (address => bool)) authorized; // holds which accounts have approved which Service Providers
    mapping (address => uint256) feeBasisPoints;   // Fee (in BP) earned by Service Provider when depositing to data seller
    mapping (address => address) feeFormulas;      // Provider's customizable Fee mormula
    modifier isSettleable { require(settlementIsRunning); _; }


    // WOLK PROTOCOL Events:
    event AuthorizeServiceProvider(address indexed _owner, address _serviceProvider);
    event DeauthorizeServiceProvider(address indexed _owner, address _serviceProvider);
    event SetServiceProviderFee(address indexed _serviceProvider, uint256 _feeBasisPoints);
    event BurnTokens(address indexed _from, address indexed _serviceProvider, uint256 _value);

    // @param  _burnBasisPoints
    // @return success
    // @dev Set BurnRate on Wolk Protocol -- only Wolk can set this, affects Service Provider settleBuyer
    function setBurnRate(uint256 _burnBasisPoints) onlyOwner returns (bool success) {
        require((_burnBasisPoints > 0) && (_burnBasisPoints <= 1000));
        burnBasisPoints = _burnBasisPoints;
        return true;
    }
    
    // @param  _newBurnFormula
    // @return success
    // @dev Set the formula to use for burning -- only Wolk  can set this
    function setBurnFormula(address _newBurnFormula) onlyOwner returns (bool success){
        uint256 testBurning = estWolkToBurn(_newBurnFormula, 10 ** 18);
        require(testBurning > (5 * 10 ** 13));
        burnFormula = _newBurnFormula;
        return true;
    }
    
    // @param  _newFeeFormula
    // @return success
    // @dev Set the formula to use for settlement -- settler can customize its fee  
    function setFeeFormula(address _newFeeFormula) onlySettler returns (bool success){
        uint256 testSettling = estProviderFee(_newFeeFormula, 10 ** 18);
        require(testSettling > (5 * 10 ** 13));
        feeFormulas[msg.sender] = _newFeeFormula;
        return true;
    }
    
    // @param  _isRunning
    // @return success
    // @dev upating settlement status -- only Wolk can set this
    function updateSettlementStatus(bool _isRunning) onlyOwner returns (bool success){
        settlementIsRunning = _isRunning;
        return true;
    }
    
    // @param  _serviceProvider
    // @param  _feeBasisPoints
    // @return success
    // @dev Set Service Provider fee -- only Contract Owner can do this, affects Service Provider settleSeller
    function setServiceFee(address _serviceProvider, uint256 _feeBasisPoints) onlyOwner returns (bool success) {
        if (_feeBasisPoints <= 0 || _feeBasisPoints > 4000){
            // revoke Settler privilege
            settlers[_serviceProvider] = false;
            feeBasisPoints[_serviceProvider] = 0;
            return false;
        }else{
            feeBasisPoints[_serviceProvider] = _feeBasisPoints;
            settlers[_serviceProvider] = true;
            SetServiceProviderFee(_serviceProvider, _feeBasisPoints);
            return true;
        }
    }

    // @param  _serviceProvider
    // @return _feeBasisPoints
    // @dev Check service Fee (in BP) for a given provider
    function checkServiceFee(address _serviceProvider) constant returns (uint256 _feeBasisPoints) {
        return feeBasisPoints[_serviceProvider];
    }

    // @param _serviceProvider
    // @return _formulaAddress
    // @dev Returns the contract address of the Service Provider's fee formula
    function checkFeeSchedule(address _serviceProvider) constant returns (address _formulaAddress) {
        return feeFormulas[_serviceProvider];
    }
    
    // @param _value
    // @return wolkBurnt
    // @dev Returns estimate of Wolk to burn 
    function estWolkToBurn(address _burnFormula, uint256 _value) constant internal returns (uint256){
        if(_burnFormula != 0x0){
            uint256 wolkBurnt = IBurnFormula(_burnFormula).calculateWolkToBurn(_value);
            return wolkBurnt;    
        }else{
            return 0; 
        }
    }
    
    // @param _value
    // @param _serviceProvider
    // @return estFee
    // @dev Returns estimate of Service Provider's fee 
    function estProviderFee(address _serviceProvider, uint256 _value) constant internal returns (uint256){
        address ProviderFeeFormula = feeFormulas[_serviceProvider];
        if (ProviderFeeFormula != 0x0){
            uint256 estFee = IFeeFormula(ProviderFeeFormula).calculateProviderFee(_value);
            return estFee;      
        }else{
            return 0;  
        }
    }
    
    // @param  _buyer
    // @param  _value
    // @return success
    // @dev Service Provider Settlement with Buyer: a small percent is burnt (set in setBurnRate, stored in burnBasisPoints) when funds are transferred from buyer to Service Provider [only accessible by settlers]
    function settleBuyer(address _buyer, uint256 _value) onlySettler isSettleable returns (bool success) {
        require((burnBasisPoints > 0) && (burnBasisPoints <= 1000) && authorized[_buyer][msg.sender]); // Buyer must authorize Service Provider 
        require(balances[_buyer] >= _value && _value > 0);
        var WolkToBurn = estWolkToBurn(burnFormula, _value);
        var burnCap = safeDiv(safeMul(_value, burnBasisPoints), 10000); //can not burn more than this

        // If burn formula not found, use default burn rate. If Est to burn exceeds BurnCap, cut back to the cap
        if (WolkToBurn < 1) WolkToBurn = burnCap;
        if (WolkToBurn > burnCap) WolkToBurn = burnCap;
            
        var transferredToServiceProvider = safeSub(_value, WolkToBurn);
        balances[_buyer] = safeSub(balances[_buyer], _value);
        balances[msg.sender] = safeAdd(balances[msg.sender], transferredToServiceProvider);
        totalTokens = safeSub(totalTokens, WolkToBurn);
        Transfer(_buyer, msg.sender, transferredToServiceProvider);
        Transfer(_buyer, 0x00000000000000000000, WolkToBurn);
        BurnTokens(_buyer, msg.sender, WolkToBurn);
        return true;
    } 

    // @param  _seller
    // @param  _value
    // @return success
    // @dev Service Provider Settlement with Seller: a small percent is kept by Service Provider (set in setServiceFee, stored in feeBasisPoints) when funds are transferred from Service Provider to seller [only accessible by settlers]
    function settleSeller(address _seller, uint256 _value) onlySettler isSettleable returns (bool success) {
        // Service Providers have a % max fee (e.g. 20%)
        var serviceProviderBP = feeBasisPoints[msg.sender];
        require((serviceProviderBP > 0) && (serviceProviderBP <= 4000) && (_value > 0));
        var seviceFee = estProviderFee(msg.sender, _value);
        var Maximumfee = safeDiv(safeMul(_value, serviceProviderBP), 10000);
        
        // If provider's fee formula not set, use default burn rate. If Est fee exceeds Maximumfee, cut back to the fee
        if (seviceFee < 1) seviceFee = Maximumfee;  
        if (seviceFee > Maximumfee) seviceFee = Maximumfee;
        var transferredToSeller = safeSub(_value, seviceFee);
        require(balances[msg.sender] >= transferredToSeller );
        balances[_seller] = safeAdd(balances[_seller], transferredToSeller);
        Transfer(msg.sender, _seller, transferredToSeller);
        return true;
    }

    // @param _providerToAdd
    // @return success
    // @dev Buyer authorizes the Service Provider (to call settleBuyer). For security reason, _providerToAdd needs to be whitelisted by Wolk Inc first
    function authorizeProvider(address _providerToAdd) returns (bool success) {
        require(settlers[_providerToAdd]);
        authorized[msg.sender][_providerToAdd] = true;
        AuthorizeServiceProvider(msg.sender, _providerToAdd);
        return true;
    }

    // @param _providerToRemove
    // @return success
    // @dev Buyer deauthorizes the Service Provider (from calling settleBuyer)
    function deauthorizeProvider(address _providerToRemove) returns (bool success) {
        authorized[msg.sender][_providerToRemove] = false;
        DeauthorizeServiceProvider(msg.sender, _providerToRemove);
        return true;
    }

    // @param _owner
    // @param _serviceProvider
    // @return authorizationStatus
    // @dev Check authorization between account and Service Provider
    function checkAuthorization(address _owner, address _serviceProvider) constant returns (bool authorizationStatus) {
        return authorized[_owner][_serviceProvider];
    }

    // @param _owner
    // @param _providerToAdd
    // @return authorizationStatus
    // @dev Grant authorization between account and Service Provider on buyers' behalf [only accessible by Contract Owner]
    // @note Explicit permission from balance owner MUST be obtained beforehand
    function grantService(address _owner, address _providerToAdd) onlyOwner returns (bool authorizationStatus) {
        var isPreauthorized = authorized[_owner][msg.sender];
        if (isPreauthorized && settlers[_providerToAdd]) {
            authorized[_owner][_providerToAdd] = true;
            AuthorizeServiceProvider(msg.sender, _providerToAdd);
            return true;
        }else{
            return false;
        }
    }

    // @param _owner
    // @param _providerToRemove
    // @return authorization_status
    // @dev Revoke authorization between account and Service Provider on buyers' behalf [only accessible by Contract Owner]
    // @note Explicit permission from balance owner are NOT required for disabling ill-intent Service Provider
    function removeService(address _owner, address _providerToRemove) onlyOwner returns (bool authorizationStatus) {
        authorized[_owner][_providerToRemove] = false;
        DeauthorizeServiceProvider(_owner, _providerToRemove);
        return true;
    }
}

// Taken from https://github.com/bancorprotocol/contracts/blob/master/solidity/contracts/BancorFormula.sol
contract IBancorFormula {
    function calculatePurchaseReturn(uint256 _supply, uint256 _reserveBalance, uint8 _reserveRatio, uint256 _depositAmount) public constant returns (uint256);
    function calculateSaleReturn(uint256 _supply, uint256 _reserveBalance, uint8 _reserveRatio, uint256 _sellAmount) public constant returns (uint256);
}

contract WolkExchange is WolkProtocol, WolkTGE {

    uint256 public maxPerExchangeBP = 50;
    address public exchangeFormula;
    bool    public exchangeIsRunning = false;
    modifier isExchangable { require(exchangeIsRunning && allSaleCompleted); _; }
    
    // @param  _newExchangeformula
    // @return success
    // @dev Set the bancor formula to use -- only Wolk Inc can set this
    function setExchangeFormula(address _newExchangeformula) onlyOwner returns (bool success){
        require(sellWolkEstimate(10**decimals, _newExchangeformula) > 0);
        require(purchaseWolkEstimate(10**decimals, _newExchangeformula) > 0);
        exchangeIsRunning = false;
        exchangeFormula = _newExchangeformula;
        return true;
    }
    
    // @param  _isRunning
    // @return success
    // @dev upating exchange status -- only Wolk Inc can set this
    function updateExchangeStatus(bool _isRunning) onlyOwner returns (bool success){
        if (_isRunning){
            require(sellWolkEstimate(10**decimals, exchangeFormula) > 0);
            require(purchaseWolkEstimate(10**decimals, exchangeFormula) > 0);   
        }
        exchangeIsRunning = _isRunning;
        return true;
    }
    
    // @param  _maxPerExchange
    // @return success
    // @dev Set max sell token amount per transaction -- only Wolk Inc can set this
    function setMaxPerExchange(uint256 _maxPerExchange) onlyOwner returns (bool success) {
        require((_maxPerExchange >= 10) && (_maxPerExchange <= 100));
        maxPerExchangeBP = _maxPerExchange;
        return true;
    }

    // @return Estimated Liquidation Cap
    // @dev Liquidation Cap per transaction is used to ensure proper price discovery for Wolk Exchange 
    function estLiquidationCap() public constant returns (uint256) {
        if (openSaleCompleted){
            var liquidationMax  = safeDiv(safeMul(totalTokens, maxPerExchangeBP), 10000);
            if (liquidationMax < 100 * 10**decimals){ 
                liquidationMax = 100 * 10**decimals;
            }
            return liquidationMax;   
        }else{
            return 0;
        }
    }

    function sellWolkEstimate(uint256 _wolkAmountest, address _formula) internal returns(uint256) {
        uint256 ethReceivable =  IBancorFormula(_formula).calculateSaleReturn(totalTokens, reserveBalance, percentageETHReserve, _wolkAmountest);
        return ethReceivable;
    }
    
    function purchaseWolkEstimate(uint256 _ethAmountest, address _formula) internal returns(uint256) {
        uint256 wolkReceivable = IBancorFormula(_formula).calculatePurchaseReturn(totalTokens, reserveBalance, percentageETHReserve, _ethAmountest);
        return wolkReceivable;
    }
    
    // @param _wolkAmount
    // @return ethReceivable
    // @dev send Wolk into contract in exchange for eth, at an exchange rate based on the Bancor Protocol derivation and decrease totalSupply accordingly
    function sellWolk(uint256 _wolkAmount) isExchangable() returns(uint256) {
        uint256 sellCap = estLiquidationCap();
        require((balances[msg.sender] >= _wolkAmount));
        require(sellCap >= _wolkAmount);
        uint256 ethReceivable = sellWolkEstimate(_wolkAmount,exchangeFormula);
        require(this.balance > ethReceivable);
        balances[msg.sender] = safeSub(balances[msg.sender], _wolkAmount);
        totalTokens = safeSub(totalTokens, _wolkAmount);
        reserveBalance = safeSub(this.balance, ethReceivable);
        WolkDestroyed(msg.sender, _wolkAmount);
        Transfer(msg.sender, 0x00000000000000000000, _wolkAmount);
        msg.sender.transfer(ethReceivable);
        return ethReceivable;     
    }

    // @return wolkReceivable    
    // @dev send eth into contract in exchange for Wolk tokens, at an exchange rate based on the Bancor Protocol derivation and increase totalSupply accordingly
    function purchaseWolk(address _buyer) isExchangable() payable returns(uint256){
        require(msg.value > 0);
        uint256 wolkReceivable = purchaseWolkEstimate(msg.value, exchangeFormula);
        require(wolkReceivable > 0);
        totalTokens = safeAdd(totalTokens, wolkReceivable);
        balances[_buyer] = safeAdd(balances[_buyer], wolkReceivable);
        reserveBalance = safeAdd(reserveBalance, msg.value);
        WolkCreated(_buyer, wolkReceivable);
        Transfer(address(this),_buyer,wolkReceivable);
        return wolkReceivable;
    }

    // @dev  fallback function for purchase
    // @note Automatically fallback to tokenGenerationEvent before sale is completed. After the token generation event, fallback to purchaseWolk. Liquidity exchange will be enabled through updateExchangeStatus  
    function () payable {
        require(msg.value > 0);
        if(!openSaleCompleted){
            this.tokenGenerationEvent.value(msg.value)(msg.sender);
        }else if (block.number >= end_block){
            this.purchaseWolk.value(msg.value)(msg.sender);
        }else{
            revert();
        }
    }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_wolkAmount","type":"uint256"}],"name":"sellWolk","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_presaleParticipants","type":"address[]"},{"name":"_contributionLimits","type":"uint256[]"}],"name":"addParticipant","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_providerToAdd","type":"address"}],"name":"authorizeProvider","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_burnBasisPoints","type":"uint256"}],"name":"setBurnRate","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newExchangeformula","type":"address"}],"name":"setExchangeFormula","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeFormula","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeIsRunning","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_isRunning","type":"bool"}],"name":"updateExchangeStatus","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_buyer","type":"address"}],"name":"purchaseWolk","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"finalizeOpenSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"}],"name":"settleBuyer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"end_block","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_seller","type":"address"},{"name":"_value","type":"uint256"}],"name":"settleSeller","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenGenerationMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_providerToRemove","type":"address"}],"name":"deauthorizeProvider","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_serviceProvider","type":"address"}],"name":"checkAuthorization","outputs":[{"name":"authorizationStatus","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_serviceProvider","type":"address"}],"name":"checkServiceFee","outputs":[{"name":"_feeBasisPoints","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxPerExchangeBP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_providerToAdd","type":"address"}],"name":"grantService","outputs":[{"name":"authorizationStatus","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnFormula","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_participant","type":"address"}],"name":"participantBalance","outputs":[{"name":"remainingAllocation","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"percentageETHReserve","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_providerToRemove","type":"address"}],"name":"removeService","outputs":[{"name":"authorizationStatus","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"multisigWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"estLiquidationCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnBasisPoints","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_maxPerExchange","type":"uint256"}],"name":"setMaxPerExchange","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_presaleStartBlock","type":"uint256"},{"name":"_startBlock","type":"uint256"},{"name":"_endBlock","type":"uint256"},{"name":"_wolkWallet","type":"address"},{"name":"_wolkSale","type":"address"}],"name":"wolkGenesis","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"settlementIsRunning","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenGenerationMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"start_block","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openSaleCompleted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_isRunning","type":"bool"}],"name":"updateSettlementStatus","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"presale_start_block","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allSaleCompleted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_presaleParticipants","type":"address[]"}],"name":"removeParticipant","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_serviceProvider","type":"address"},{"name":"_feeBasisPoints","type":"uint256"}],"name":"setServiceFee","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wolkSale","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newBurnFormula","type":"address"}],"name":"setBurnFormula","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newFeeFormula","type":"address"}],"name":"setFeeFormula","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_participant","type":"address"}],"name":"tokenGenerationEvent","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_serviceProvider","type":"address"}],"name":"checkFeeSchedule","outputs":[{"name":"_formulaAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_serviceProvider","type":"address"}],"name":"AuthorizeServiceProvider","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_serviceProvider","type":"address"}],"name":"DeauthorizeServiceProvider","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_serviceProvider","type":"address"},{"indexed":false,"name":"_feeBasisPoints","type":"uint256"}],"name":"SetServiceProviderFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_serviceProvider","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"BurnTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenCreated","type":"uint256"}],"name":"WolkCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_tokenDestroyed","type":"uint256"}],"name":"WolkDestroyed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"LogRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prevOwner","type":"address"},{"indexed":false,"name":"_newOwner","type":"address"}],"name":"OwnerUpdate","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"}]

  Contract Creation Code Switch To Opcodes View
606060405260006005556008805460a060020a61ffff02191690556009805460a060020a60ff021990811674010000000000000000000000000000000000000000179091556101f4600a5560326014556015805490911690555b60038054600160a060020a03191633600160a060020a03161790555b5b612f69806100856000396000f300606060405236156102a25763ffffffff60e060020a600035041662310e1681146103b657806306fdde03146103de578063079ee6b314610469578063095ea7b31461050c578063112ea2621461054257806318160ddd14610575578063189d165e1461059a57806323b872dd146105c45780632659d8ef146106005780632f7a407b14610633578063313ce5671461066257806332c6f315146106875780633bee0613146106ae5780633d8c9b8c146106da578063421521b1146107005780634bb278f31461071557806354b8dfcb1461071f578063590e1ae3146107555780635e0b12591461076a57806364da8ad31461078f5780636712e0be146107c5578063673b57e9146107ea578063685c234a1461081d5780636c9c1d411461085657806370a0823114610887578063714d497a146108b8578063726df9cc146108dd57806379ba5097146109165780637e1c0c091461092b578063823ba0b814610950578063826c69b81461097f578063847dc0a7146109b05780638da5cb5b146109d95780638ea8e14914610a085780639075becf14610a4157806395d89b4114610a7057806399dd1ed914610afb5780639a436c9b14610b20578063a10954fe14610b45578063a9059cbb14610b6a578063acac0b9f14610ba0578063ad7e01c814610bca578063b1a9bd7714610c0c578063b57e6ea114610c33578063b87fb3db14610c58578063bcbfe43c14610c7d578063c5b1505714610ca4578063cba9c0e014610cd0578063d4ee1d9014610cf5578063dd62ed3e14610d24578063de17910814610d5b578063e814c94114610d82578063ef2fa16914610de5578063f2e1192a14610e1b578063f2fde38b14610e4a578063f7dadf7d14610e6b578063f7fca4f414610e9e578063fa6b129d14610ed1578063ff0935b114610ee7575b5b600034116102b057600080fd5b60085460a860020a900460ff16151561032b5730600160a060020a031663fa6b129d343360405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b151561031157600080fd5b6125ee5a03f1151561032257600080fd5b505050506103b2565b60135443106103ad5730600160a060020a0316633d8c9b8c343360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016020604051808303818588803b151561038b57600080fd5b6125ee5a03f1151561039c57600080fd5b5050505060405180519050506103b2565b600080fd5b5b5b005b34156103c157600080fd5b6103cc600435610f22565b60405190815260200160405180910390f35b34156103e957600080fd5b6103f16110cf565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561042e5780820151818401525b602001610415565b50505050905090810190601f16801561045b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047457600080fd5b6104f860046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061110695505050505050565b604051901515815260200160405180910390f35b341561051757600080fd5b6104f8600160a060020a03600435166024356111f3565b604051901515815260200160405180910390f35b341561054d57600080fd5b6104f8600160a060020a036004351661129a565b604051901515815260200160405180910390f35b341561058057600080fd5b6103cc61133a565b60405190815260200160405180910390f35b34156105a557600080fd5b6104f8600435611341565b604051901515815260200160405180910390f35b34156105cf57600080fd5b6104f8600160a060020a0360043581169060243516604435611388565b604051901515815260200160405180910390f35b341561060b57600080fd5b6104f8600160a060020a03600435166114e0565b604051901515815260200160405180910390f35b341561063e57600080fd5b61064661156a565b604051600160a060020a03909116815260200160405180910390f35b341561066d57600080fd5b6103cc611579565b60405190815260200160405180910390f35b341561069257600080fd5b6104f861157e565b604051901515815260200160405180910390f35b34156106b957600080fd5b6104f8600435151561158e565b604051901515815260200160405180910390f35b6103cc600160a060020a036004351661163a565b60405190815260200160405180910390f35b341561070b57600080fd5b6103b2611777565b005b6103b261185b565b005b341561072a57600080fd5b6104f8600160a060020a03600435166024356119be565b604051901515815260200160405180910390f35b341561076057600080fd5b6103b2611c10565b005b341561077557600080fd5b6103cc611d67565b60405190815260200160405180910390f35b341561079a57600080fd5b6104f8600160a060020a0360043516602435611d6d565b604051901515815260200160405180910390f35b34156107d057600080fd5b6103cc611ef6565b60405190815260200160405180910390f35b34156107f557600080fd5b6104f8600160a060020a0360043516611f05565b604051901515815260200160405180910390f35b341561082857600080fd5b6104f8600160a060020a0360043581169060243516611f7b565b604051901515815260200160405180910390f35b341561086157600080fd5b6103cc600160a060020a0360043516611fab565b60405190815260200160405180910390f35b341561089257600080fd5b6103cc600160a060020a0360043516611fca565b60405190815260200160405180910390f35b34156108c357600080fd5b6103cc611fe9565b60405190815260200160405180910390f35b34156108e857600080fd5b6104f8600160a060020a0360043581169060243516611fef565b604051901515815260200160405180910390f35b341561092157600080fd5b6103b26120f1565b005b341561093657600080fd5b6103cc612199565b60405190815260200160405180910390f35b341561095b57600080fd5b61064661219f565b604051600160a060020a03909116815260200160405180910390f35b341561098a57600080fd5b6103cc600160a060020a03600435166121ae565b60405190815260200160405180910390f35b34156109bb57600080fd5b6109c36121cd565b60405160ff909116815260200160405180910390f35b34156109e457600080fd5b6106466121d2565b604051600160a060020a03909116815260200160405180910390f35b3415610a1357600080fd5b6104f8600160a060020a03600435811690602435166121e1565b604051901515815260200160405180910390f35b3415610a4c57600080fd5b610646612274565b604051600160a060020a03909116815260200160405180910390f35b3415610a7b57600080fd5b6103f1612283565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561042e5780820151818401525b602001610415565b50505050905090810190601f16801561045b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610b0657600080fd5b6103cc6122ba565b60405190815260200160405180910390f35b3415610b2b57600080fd5b6103cc61231b565b60405190815260200160405180910390f35b3415610b5057600080fd5b6103cc612321565b60405190815260200160405180910390f35b3415610b7557600080fd5b6104f8600160a060020a0360043516602435612327565b604051901515815260200160405180910390f35b3415610bab57600080fd5b6104f860043561241b565b604051901515815260200160405180910390f35b3415610bd557600080fd5b6104f8600435602435604435600160a060020a0360643581169060843516612462565b604051901515815260200160405180910390f35b3415610c1757600080fd5b6104f8612524565b604051901515815260200160405180910390f35b3415610c3e57600080fd5b6103cc612534565b60405190815260200160405180910390f35b3415610c6357600080fd5b6103cc612543565b60405190815260200160405180910390f35b3415610c8857600080fd5b6104f8612549565b604051901515815260200160405180910390f35b3415610caf57600080fd5b6104f86004351515612559565b604051901515815260200160405180910390f35b3415610cdb57600080fd5b6103cc6125a6565b60405190815260200160405180910390f35b3415610d0057600080fd5b6106466125ac565b604051600160a060020a03909116815260200160405180910390f35b3415610d2f57600080fd5b6103cc600160a060020a03600435811690602435166125bb565b60405190815260200160405180910390f35b3415610d6657600080fd5b6104f86125e8565b604051901515815260200160405180910390f35b3415610d8d57600080fd5b6104f860046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506125f895505050505050565b604051901515815260200160405180910390f35b3415610df057600080fd5b6104f8600160a060020a03600435166024356126b1565b604051901515815260200160405180910390f35b3415610e2657600080fd5b61064661278a565b604051600160a060020a03909116815260200160405180910390f35b3415610e5557600080fd5b6103b2600160a060020a0360043516612799565b005b3415610e7657600080fd5b6104f8600160a060020a03600435166127f9565b604051901515815260200160405180910390f35b3415610ea957600080fd5b6104f8600160a060020a0360043516612870565b604051901515815260200160405180910390f35b6103b2600160a060020a0360043516612907565b005b3415610ef257600080fd5b610646600160a060020a0360043516612be6565b604051600160a060020a03909116815260200160405180910390f35b6000806000601560149054906101000a900460ff168015610f4c575060085460a060020a900460ff165b1515610f5757600080fd5b610f5f6122ba565b600160a060020a03331660009081526020819052604090205490925084901015610f8857600080fd5b83821015610f9557600080fd5b601554610fac908590600160a060020a0316612c07565b9050600160a060020a03301631819011610fc557600080fd5b600160a060020a033316600090815260208190526040902054610fe89085612c9d565b600160a060020a03331660009081526020819052604090205560025461100e9085612c9d565b600255611025600160a060020a0330163182612c9d565b600555600160a060020a0333167ff505eb6e610340eed3eea0048f8ec258cda0927f73be2d293288fde9a546f1ab8560405190815260200160405180910390a2600033600160a060020a0316600080516020612f1e8339815191528660405190815260200160405180910390a3600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156110c357600080fd5b8092505b5b5050919050565b60408051908101604052601381527f576f6c6b2050726f746f636f6c20546f6b656e00000000000000000000000000602082015281565b600354600090819033600160a060020a0390811691161461112357fe5b825184511461113157600080fd5b5060005b83518110156111e65760016010600086848151811061115057fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790556111a983828151811061119157fe5b90602001906020020151670de0b6b3a7640000612cb4565b600f60008684815181106111b957fe5b90602001906020020151600160a060020a031681526020810191909152604001600020555b600101611135565b600191505b5b5092915050565b60008115806112255750600160a060020a03338116600090815260016020908152604080832093871683529290522054155b151561123057600080fd5b600160a060020a03338116600081815260016020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03811660009081526007602052604081205460ff1615156112c157600080fd5b600160a060020a033381166000818152600b602090815260408083209487168352939052829020805460ff19166001179055907f8563cf3307d6904af4525af51010bc07d34ec3154f552d9e00f64ed395dc047090849051600160a060020a03909116815260200160405180910390a25060015b919050565b6002545b90565b60035460009033600160a060020a0390811691161461135c57fe5b60008211801561136e57506103e88211155b151561137957600080fd5b50600a81905560015b5b919050565b600160a060020a03808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906113f25750600160a060020a0380861660009081526001602090815260408083203390941683529290522054839010155b80156113fe5750600083115b156114d257600160a060020a0384166000908152602081905260409020546114269084612ce3565b600160a060020a0380861660009081526020819052604080822093909355908716815220546114559084612c9d565b600160a060020a0386166000908152602081905260409020556114788184612c9d565b600160a060020a0380871660008181526001602090815260408083203386168452909152908190209390935590861691600080516020612f1e8339815191529086905190815260200160405180910390a3600191506114d7565b600091505b5b509392505050565b60035460009033600160a060020a039081169116146114fb57fe5b600061150f670de0b6b3a764000084612c07565b1161151957600080fd5b600061152d670de0b6b3a764000084612d0b565b1161153757600080fd5b506015805474ffffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831617905560015b5b919050565b601554600160a060020a031681565b601281565b60155460a060020a900460ff1681565b60035460009033600160a060020a039081169116146115a957fe5b8115611607576015546000906115d190670de0b6b3a764000090600160a060020a0316612c07565b116115db57600080fd5b6015546000906115fd90670de0b6b3a764000090600160a060020a0316612d0b565b1161160757600080fd5b5b506015805474ff0000000000000000000000000000000000000000191660a060020a8315150217905560015b5b919050565b601554600090819060a060020a900460ff168015611661575060085460a060020a900460ff165b151561166c57600080fd5b6000341161167957600080fd5b601554611690903490600160a060020a0316612d0b565b90506000811161169f57600080fd5b6116ab60025482612ce3565b600255600160a060020a0383166000908152602081905260409020546116d19082612ce3565b600160a060020a0384166000908152602081905260409020556005546116f79034612ce3565b600555600160a060020a0383167f7ff6ea1c893a974b2f363e8f8e474a1b52958080d1fffe0d085c286de30035d28260405190815260200160405180910390a282600160a060020a031630600160a060020a0316600080516020612f1e8339815191528360405190815260200160405180910390a38091505b5b50919050565b60035460009033600160a060020a0390811691161461179257fe5b60085460a860020a900460ff161580156117ba57506002546a295be96e640669720000009010155b15156117c557600080fd5b6008805475ff000000000000000000000000000000000000000000191660a860020a179055436013556002546118099061180090600f612cb4565b620186a0612da1565b600581905561182390600160a060020a0330163190612c9d565b9050600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561185657600080fd5b5b5b50565b600854600090819033600160a060020a0390811691161461187857fe5b60085460a860020a900460ff16801561189b575060085460a060020a900460ff16155b15156118a657600080fd5b6118bd6118b634620186a0612cb4565b600f612da1565b91506118cb60025483612ce3565b9050806002819055506118e060055434612ce3565b600555600854600160a060020a03908116903016600080516020612f1e8339815191528460405190815260200160405180910390a3600854600160a060020a031660009081526020819052604090205461193a9083612ce3565b60088054600160a060020a039081166000908152602081905260409081902093909355905416907f7ff6ea1c893a974b2f363e8f8e474a1b52958080d1fffe0d085c286de30035d29084905190815260200160405180910390a26008805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b5050565b600160a060020a03331660009081526007602052604081205481908190819060ff1615156001146119eb57fe5b60095460a060020a900460ff161515611a0357600080fd5b6000600a54118015611a1957506103e8600a5411155b8015611a4b5750600160a060020a038087166000908152600b60209081526040808320339094168352929052205460ff165b1515611a5657600080fd5b600160a060020a038616600090815260208190526040902054859010801590611a7f5750600085115b1515611a8a57600080fd5b600954611aa090600160a060020a031686612de0565b9250611ab9611ab186600a54612cb4565b612710612da1565b91506001831015611ac8578192505b81831115611ad4578192505b611ade8584612c9d565b600160a060020a038716600090815260208190526040902054909150611b049086612c9d565b600160a060020a03808816600090815260208190526040808220939093553390911681522054611b349082612ce3565b600160a060020a033316600090815260208190526040902055600254611b5a9084612c9d565b600255600160a060020a03338116908716600080516020612f1e8339815191528360405190815260200160405180910390a3600086600160a060020a0316600080516020612f1e8339815191528560405190815260200160405180910390a333600160a060020a031686600160a060020a03167fa02fa7af120761e5cdeff8bc117c44fd425d0f51fd27155746f84421d87d18e68560405190815260200160405180910390a3600193505b5b5b50505092915050565b600160a060020a0333166000908152600e602052604081205481908190118015611c44575060085460a060020a900460ff16155b8015611c5d57506002546a295be96e6406697200000090105b8015611c6a575060135443115b1515611c7557600080fd5b505033600160a060020a03166000908152602081815260408083208054600e90935290832080549184905592909255600254909190611cb49083612c9d565b600255600160a060020a0333167ff505eb6e610340eed3eea0048f8ec258cda0927f73be2d293288fde9a546f1ab8360405190815260200160405180910390a233600160a060020a03167fb6c0eca8138e097d71e2dd31e19a1266487f0553f170b7260ffe68bcbe9ff8a78260405190815260200160405180910390a2600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156119b957600080fd5b5b5050565b60135481565b600160a060020a033316600090815260076020526040812054819081908190819060ff161515600114611d9c57fe5b60095460a060020a900460ff161515611db457600080fd5b600160a060020a0333166000908152600c6020526040812054945084118015611ddf5750610fa08411155b8015611deb5750600086115b1515611df657600080fd5b611e003387612e77565b9250611e17611ab18786612cb4565b612710612da1565b91506001831015611e26578192505b81831115611e32578192505b611e3c8684612c9d565b600160a060020a03331660009081526020819052604090205490915081901015611e6557600080fd5b600160a060020a038716600090815260208190526040902054611e889082612ce3565b60008089600160a060020a0316600160a060020a031681526020019081526020016000208190555086600160a060020a031633600160a060020a0316600080516020612f1e8339815191528360405190815260200160405180910390a3600194505b5b5b5050505092915050565b6a295be96e6406697200000081565b600160a060020a033381166000818152600b602090815260408083209486168352939052828120805460ff19169055917f79485d41c145ee4d7ebf84793ab927ebb3f929101dba7db48702ef527d02cf8390849051600160a060020a03909116815260200160405180910390a25060015b919050565b600160a060020a038083166000908152600b602090815260408083209385168352929052205460ff165b92915050565b600160a060020a0381166000908152600c60205260409020545b919050565b600160a060020a0381166000908152602081905260409020545b919050565b60145481565b600354600090819033600160a060020a0390811691161461200c57fe5b50600160a060020a038084166000908152600b60209081526040808320339094168352929052205460ff1680801561205c5750600160a060020a03831660009081526007602052604090205460ff165b156120df57600160a060020a038085166000908152600b60209081526040808320878516845290915290819020805460ff1916600117905533909116907f8563cf3307d6904af4525af51010bc07d34ec3154f552d9e00f64ed395dc047090859051600160a060020a03909116815260200160405180910390a2600191506111eb565b600091506111eb565b5b5b5092915050565b60045433600160a060020a0390811691161461210c57600080fd5b6003546004547f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a1600480546003805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a038416179091551690555b565b60025481565b600954600160a060020a031681565b600160a060020a0381166000908152600f60205260409020545b919050565b600f81565b600354600160a060020a031681565b60035460009033600160a060020a039081169116146121fc57fe5b600160a060020a038084166000818152600b602090815260408083209487168352939052829020805460ff19169055907f79485d41c145ee4d7ebf84793ab927ebb3f929101dba7db48702ef527d02cf8390849051600160a060020a03909116815260200160405180910390a25060015b5b92915050565b600654600160a060020a031681565b60408051908101604052600481527f574f4c4b00000000000000000000000000000000000000000000000000000000602082015281565b600854600090819060a860020a900460ff1615612311576122ea611ab1600254601454612cb4565b612710612da1565b905068056bc75e2d63100000811015612309575068056bc75e2d631000005b809150612316565b600091505b5b5090565b600a5481565b60055481565b600160a060020a0333166000908152602081905260408120548290108015906123505750600082115b1561240c57600160a060020a0333166000908152602081905260409020546123789083612c9d565b600160a060020a0333811660009081526020819052604080822093909355908516815220546123a79083612ce3565b60008085600160a060020a0316600160a060020a031681526020019081526020016000208190555082600160a060020a031633600160a060020a0316600080516020612f1e8339815191528460405190815260200160405180910390a3506001611294565b506000611294565b5b92915050565b60035460009033600160a060020a0390811691161461243657fe5b600a8210158015612448575060648211155b151561245357600080fd5b50601481905560015b5b919050565b60035460009033600160a060020a0390811691161461247d57fe5b600160025410801561248f5750844311155b801561249a57508484115b80156124a557508585115b15156124b057600080fd5b5060118590556012849055601383905560068054600160a060020a0380851673ffffffffffffffffffffffffffffffffffffffff199283161790925560088054848416921691909117905533166000908152600760205260409020805460ff191660019081179091555b5b95945050505050565b60095460a060020a900460ff1681565b6a7c13bc4b2c133c5600000081565b60125481565b60085460a860020a900460ff1681565b60035460009033600160a060020a0390811691161461257457fe5b506009805474ff0000000000000000000000000000000000000000191660a060020a8315150217905560015b5b919050565b60115481565b600454600160a060020a031681565b600160a060020a038083166000908152600160209081526040808320938516835292905220545b92915050565b60085460a060020a900460ff1681565b600354600090819033600160a060020a0390811691161461261557fe5b5060005b82518110156126a55760006010600085848151811061263457fe5b90602001906020020151600160a060020a0316815260208101919091526040016000908120805460ff191692151592909217909155600f8185848151811061267857fe5b90602001906020020151600160a060020a031681526020810191909152604001600020555b600101612619565b600191505b5b50919050565b60035460009033600160a060020a039081169116146126cc57fe5b6000821115806126dd5750610fa082115b156127155750600160a060020a0382166000908152600760209081526040808320805460ff19169055600c9091528120819055611294565b600160a060020a0383166000818152600c60209081526040808320869055600790915290819020805460ff191660011790557fe273f117e317b5f79c25ba280145c5a051fac58dc8482e8b2a14d04023521dcc9084905190815260200160405180910390a2506001611294565b5b5b92915050565b600854600160a060020a031681565b60035433600160a060020a039081169116146127b157fe5b600354600160a060020a03828116911614156127cc57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600354600090819033600160a060020a0390811691161461281657fe5b61282883670de0b6b3a7640000612de0565b9050652d79883d2000811161283c57600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055600191505b5b50919050565b600160a060020a033316600090815260076020526040812054819060ff16151560011461289957fe5b6128ab83670de0b6b3a7640000612e77565b9050652d79883d200081116128bf57600080fd5b33600160a060020a039081166000908152600d60205260409020805473ffffffffffffffffffffffffffffffffffffffff1916918516919091179055600191505b5b50919050565b600160a060020a0381166000908152601060205260408120548190819060ff16801561293d575060085460a860020a900460ff16155b8015612953575060085460a060020a900460ff16155b801561296157506013544311155b801561296d5750600034115b151561297857600080fd5b6002546103e893506a295be96e6406697200000090101561299d576104999250612a43565b6002546a31a17e847807b1bc0000009010156129bd576104779250612a43565b6002546a39e7139a8c08fa060000009010156129dd576104579250612a43565b6002546a422ca8b0a00a42500000009010156129fd576104399250612a43565b6002546a4a723dc6b40b8a9a000000901015612a1d5761041d9250612a43565b6002546a52b7d2dcc80cd2e4000000901015612a3d576104029250612a43565b6103e892505b5b5b5b5b5b60125443108015612a5b57506011544310155b15612ac757600160a060020a0384166000908152600f602052604090205434901015612a8657600080fd5b600160a060020a0384166000908152600f6020526040902054612aa99034612c9d565b600160a060020a0385166000908152600f6020526040902055612ad6565b601254431015612ad657600080fd5b5b612ae13484612cb4565b9150612aef60025483612ce3565b90506a7c13bc4b2c133c56000000811115612b0957600080fd5b6002819055600160a060020a03808516903016600080516020612f1e8339815191528460405190815260200160405180910390a3600160a060020a038416600090815260208190526040902054612b609083612ce3565b600160a060020a03851660009081526020818152604080832093909355600e90522054612b8d9034612ce3565b600160a060020a0385166000818152600e60205260409081902092909255907f7ff6ea1c893a974b2f363e8f8e474a1b52958080d1fffe0d085c286de30035d29084905190815260200160405180910390a25b50505050565b600160a060020a038082166000908152600d6020526040902054165b919050565b60008082600160a060020a031663f7a4c45c600254600554600f8860006040516020015260405160e060020a63ffffffff87160281526004810194909452602484019290925260ff1660448301526064820152608401602060405180830381600087803b1515612c7657600080fd5b6102c65a03f11515612c8757600080fd5b50505060405180519250829150505b5092915050565b600082821115612ca957fe5b508082035b92915050565b6000828202831580612cd05750828482811515612ccd57fe5b04145b1515612cd857fe5b8091505b5092915050565b6000828201838110801590612cd05750828110155b1515612cd857fe5b8091505b5092915050565b60008082600160a060020a031663949dfa63600254600554600f8860006040516020015260405160e060020a63ffffffff87160281526004810194909452602484019290925260ff1660448301526064820152608401602060405180830381600087803b1515612c7657600080fd5b6102c65a03f11515612c8757600080fd5b50505060405180519250829150505b5092915050565b600080808311612dad57fe5b8284811515612db857fe5b0490508284811515612dc657fe5b068184020184141515612cd857fe5b8091505b5092915050565b600080600160a060020a038416156120df5783600160a060020a031663926f949e8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612e4157600080fd5b6102c65a03f11515612e5257600080fd5b5050506040518051905090508091506111eb565b600091506111eb565b5b5092915050565b600160a060020a038083166000908152600d6020526040812054909116818115612f0f5781600160a060020a0316633e81d56e8560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612eea57600080fd5b6102c65a03f11515612efb57600080fd5b505050604051805190509050809250612f14565b600092505b5b5050929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058205a8993ccb2a082e5b161703ffa8714e1167abf59d33bf7d082dd1ff418d292fb0029

   Swarm Source:
bzzr://5a8993ccb2a082e5b161703ffa8714e1167abf59d33bf7d082dd1ff418d292fb

 

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