.
Sponsored Link:  Up to 2% Cryptocurrency Cashback - Reserve your card - Monaco App - www.mona.co
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.
  Latest 25 txns from a total Of 6027 transactions View All

TxHash Age From To Value [TxFee]
0x498b6a4d8ce6f4e1ecc9b118859048dc6e1636f5067d02da808e348abcd9d1b42 hrs 2 mins ago0xddd510cbf4f6cb5b3386c250f414e89a85b33463  IN   Wolk_Old0 Ether0.0011593965
0x55c69c79819cdbdaaba05593f6757dfa7ca0786cd094e1d2f10553c79fb41b423 hrs 30 mins ago0x0d48293a1c522918380fb077facf01c468dd1625  IN   Wolk_Old0 Ether0.000798273
0xf3094807d6c1b32e846cae21e02a176c8bbd09dc1bee37f7cb1587d521bf558d9 hrs 20 mins ago0x2107c98fef67c0a2789a38743bf3720b4171b539  IN   Wolk_Old0 Ether0.00190065
0x68aa9d6ea67994bcbb44177d72443a19e9aa38707c90b5970a89ccabc23922a310 hrs 54 mins ago0xf8cd8c4f741c64380806eae1c3e374ba48d1d46f  IN   Wolk_Old0 Ether0.0017695535
0xdb0d711cee3366de8231eb870cdf14a77a4556f08aeda06217d11ccbcab7ef3710 hrs 58 mins ago0x771c0b01bfc5090ec8b7ee4b8594375072584267  IN   Wolk_Old0 Ether0.001561157
0xb35c15e686aaa4dfb857f83f9dce3c2e0ef5831e2da2da3cd276b2305bc5ad4211 hrs 5 mins ago0x771c0b01bfc5090ec8b7ee4b8594375072584267  IN   Wolk_Old0 Ether0.0022268
0xa12b946807a0b8580ad2b860634744d7bc8bf784ff0f080772092452c94ae80813 hrs 4 mins ago0xa7e963d9bbeaa3a508a52d4df41f79a32bda91c3  IN   Wolk_Old0 Ether0.000798273
0x0aa2f8acc3a823b9600b8dccdb2aa4a19bb6a4c4d40bf726986adb75a4abadcf15 hrs 42 mins ago0x008ef0e604fb49d668d9315c06aefb3d59a49c38  IN   Wolk_Old0 Ether0.000304104
0x7ab250f74720e23e9e4235342e8ab50488e477d2fb9fa383c949bfb10746c9d816 hrs 22 mins ago0x340f3711c4180ecc9e3c01527f70c1b1c3e47287  IN   Wolk_Old0 Ether0.00190065
0x6576e485e90abeb534442cc1728c5cebe579d5f4204fa61fbf8d0d7cee12077b1 day 2 hrs ago0x59468040397e6f0492bda4b0949aa4e2685e5dc2  IN   Wolk_Old0 Ether0.000796929
0x7fa52dbe5325ea57edfe0ac2590efb86341909ffb49117095de2bf67ff3ed8d51 day 4 hrs ago0xcce47bfc956fa1de87e5a77b8de899010a6e632e  IN   Wolk_Old0 Ether0.000796929
0x49542f1b77a22d474a8787ca44a40965e2af5dd1abe14d9441d522fbdcff03851 day 5 hrs ago0x11ff19e7d3ecd7a1416abe461bb9c39092d63c72  IN   Wolk_Old0 Ether0.00038013
0xffafbc5b0ebead79d2fd5604ba8d43e54ad7c67bd9f4db803cbf43845dfe83bb2 days 15 hrs ago0xe7b0e8c2c95e20d39d536a6776cbfe24d22badca  IN   Wolk_Old0 Ether0.001100521
0xebf65c3340af0c0e49755d5131d4e8d604331ffd3d5dc47e01fedd0b7f3e1b892 days 16 hrs ago0x3cd6a6dca7dbde5da59f0ba85968ce833fdfb61b  IN   Wolk_Old0 Ether0.000798273
0x31e47bee0ca69b44c7c3cf5860211b7b5a3e6f56d252ba660863534f20d657f62 days 17 hrs ago0x900a4c99fee4fb0696594ed026c3c0862c4d1e8b  IN   Wolk_Old0 Ether0.00038013
0x2592ad118dc3260e64870c379cdf259890f98140bbf30eb36b668d5ce2ea304e2 days 17 hrs ago0x1873a5f9c3c139c6fb257c40db4b058d503e6950  IN   Wolk_Old0 Ether0.00052144
0xa34c6cb8609c3dffcf38a87df688c6a22fa18080fb7db3f20386d254c97f060c2 days 17 hrs ago0x24437235f35b7041e37d8f0545f0c58c30b98e32  IN   Wolk_Old0 Ether0.00024859
0xf8f5c8a32d12dbc96edcf46251f2e82005d16b907bb113497055e2a8e417fb562 days 20 hrs ago0x5530be42256e8fa645c2636ff6205979d4b15b3e  IN   Wolk_Old0 Ether0.00121679613
0x18f9442026d4bf5cdc9b9588a68a2f405ae454cf193f2c7b7578d8c86cfc625d2 days 22 hrs ago0x81d00629511337d32d268166dfaec8831c0c88f3  IN   Wolk_Old0 Ether0.000519729
0x85ceb7761b12b791e5fa1b5aacedf4aea706cbb25ca8d044788ea206e93521242 days 22 hrs ago0x81d00629511337d32d268166dfaec8831c0c88f3  IN   Wolk_Old0 Ether0.000441
0x290cba690213f44413a1f990c1bedce462a1d6b7e9cca48d3b25ec2273aac2f83 days 2 hrs ago0xeca664c1050ef40449229ca5b49a19c708ad7c36  IN   Wolk_Old0 Ether0.00152052
0x8de4adf0182719da24dc929659609c9a73428d4df0fc370e684448b9adff2df23 days 2 hrs ago0xeca664c1050ef40449229ca5b49a19c708ad7c36  IN   Wolk_Old0 Ether0.001604
0x03f13d9178beb558744515e90c253d28ec5399d8ea90dcec26b041e55c55bc3e3 days 2 hrs ago0x55c37c081852c5d9215a082f838a1f6391d7e1ba  IN   Wolk_Old0 Ether0.00036633
0x4c06bfe1e310f491aa9f4da5fa1d58d7eec6c0fb534c740ccc577cbf21f1ee673 days 17 hrs ago0x9e6033edd6ce498cc82051d78ef8de7c509243e7  IN   Wolk_Old0 Ether0.0002537
0xdd4af72de9df3a50b2a31e97c76525727d3050c78b854d92b42bb3f693f09e4c3 days 17 hrs ago0x9e6033edd6ce498cc82051d78ef8de7c509243e7  IN   Wolk_Old0 Ether0.0002537
[ 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
0x68aa9d6ea67994bcbb44177d72443a19e9aa38707c90b5970a89ccabc23922a3474425710 hrs 54 mins ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xf8cd8c4f741c64380806eae1c3e374ba48d1d46f2 Ether
0x18f9442026d4bf5cdc9b9588a68a2f405ae454cf193f2c7b7578d8c86cfc625d47299842 days 22 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x81d00629511337d32d268166dfaec8831c0c88f319.5 Ether
0xb60c97d0aded634ec632d1b26c22b13b037bc30ea2cc52cd7508a757fc84ce4f468019911 days 15 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x7a3933f84216fb8188cd8c03aa8bca78cf8b1b4e1 Ether
0xdad7389d04d2b26d30fad9f4491d4143398c6771189851d2beec0ed56fa826ce463532819 days 2 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x18f63a1b88d04cd5f7c91ec67374bdf4d82478823 Ether
0xd1758cdaa509612834bf5a2490139fef472997dd6655c60aabdbe89f8e27b31f463237719 days 14 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x8c0a0ba507ce136c29ec050781ee80697a06e3e91 Ether
0x2cad6d9d34b614d5d4026f1b33ea0936c5d55fe54b9241abf9a7c7fba5080937463071419 days 21 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x7a2b4fc201785792eb73c6922b6d8ab9a8f932a33 Ether
0xa3c93a70ff2cf4ef3caa409e34ece5d7c239baf6da4ddb6af028cbd1b7da4bea460984923 days 6 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xee3c1dd2f31d68878eb515112bc54f03907f4df20.1 Ether
0x438e0a47e9645d8e5adbe4d2e622f67ddb2a104764d007a65cdb6a5114b1baf3459852825 days 1 hr ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xa1dd0c192c34310b2c757ad5fa6278b6d9c84e8e2 Ether
0xb522bfb95977d221fff32b00523322c0ba6e243d29a96d68845015ca61716fcb459571425 days 12 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xbfa3f22321779344776ce5a7f5957ea7492532840.5 Ether
0x5e939be5449f028484dbb73f303bf4478aae3de1ae6c36884bc1d942709e00ae459413925 days 19 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x1eb523cf2133d6cceb4914bb7bedadfd7a3a66220.4 Ether
0x218be22bb847ec0a44bf27d8829e41bb6849de08a19ee64cfbd0529a638e2d94456111631 days 2 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xfc9f2d043140e4a5994a065751c8cd640b3e804e1.5 Ether
0x27a9fbde2bf3101fa4b38f24b88bad9769556e532ff95215617b126cbe953b74452373837 days 2 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xbe3c8b1bcef016f2da882e05fc9f05c8b4a70abd4.7 Ether
0x33548c8923a8d95a6474dd8aa1d48932d19420fb43fe306bb2230c1d43e58917451289938 days 20 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x6cbebf8d90126af3150a8087a28a4e4d178604ab10 Ether
0x0ed275cae3f7fe62bbfbd603c7b3c4af53c1729f267821a610cf0e03c983730d450589239 days 23 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xc3cd498a7e5f0988619fb4c462335d3bc9ab56360.94 Ether
0xfc458d801c7881ba8406e41e4e992c3ede6733c78a65038d03cd38ffd2b1113a450585239 days 23 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xe04cbd06e523aaadb5ebcb105d848ddb898ba9697 Ether
0xec3ee33b14adea58ad48e857e4efe9451ea5e1cefcda1461d6958aff49a99e42450492140 days 3 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x3acde62b965ab21888afdecb71edad4d25f5553b1.49 Ether
0x99aa2f863a80127c2c896c9758c4bfc978a1a23bbdba464bb4cd97c5eef513da449391041 days 21 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x331e0ad19eec21bfb3903c88d12b05dc888c66e46.2 Ether
0xa8964145a73f238237873a212ea83f5f157b6655c1b6475c97f8bfca24325573448743342 days 22 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xdb7f12b8fb88a24f1e2d5316f2b1eac5820f4b9d5.01255 Ether
0x1573a5c06162b1c24d73d9cabddd0a483070ac6429bde8c455cfc46b498af781448695543 days 17 mins ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x2591eeafe3bbb1794bb877c9a9efb583229f8b8f30 Ether
0x3d35d017ea0c28cb34089260d6c7298cdd6e29b906348f1c8d9764495052d3c0448620043 days 3 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x1d04e93528db72c8b8ec040f2d2a24ae231721731 Ether
0x04db250fa37f8581ceec42c21ac8dafd96bccdb56159e455ac9ab32817f9ba85447786544 days 11 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x499d6fe37f3f5a9ef79ac1138fa9d85cbd05ed5f0.42 Ether
0x9f51b20728378eaef4e7f0e6425ec75dce59c39e6a092c2c2c32ae87a031bbe8447395045 days 2 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x1ab8801931ffe670beed3fabc3db23b4369d57503.71 Ether
0x58557e6ff2dcebec1c72a2a709478ff26e546b2642e515925edc08cd6c730128447379145 days 3 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x344887f08dda3a54cda411801ebaa9f24b4bd4350.5 Ether
0x5d836415b2573501287fe69d3fda5789c310ccebda48c37edadb1337cada03ba447203745 days 10 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x8fc7b252951ab9634310ee83f996a3edfd4c82d94.75 Ether
0xf5620c7ec2d2ba3b5320cd167a315b227a4a4129ff36a68537f1e7e9f912ba31446922045 days 21 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x1c1a71d6f11992d1d4094b44224d8b0ace8552af2.5 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: WolkExchange
Compiler Version: 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 txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.