Sponsored Link:   Learn and build dApps today without code using Crowd Machine's Crowd App Studio.
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 6281 transactions

TxHash Age From To Value [TxFee]
0xf47b896c0b196c8c901c65e7bea3009dae2b4dfce814d40c80ca903926c3761e5 days 13 mins ago0xeeeb089c1935b45bf3f474b5698397e0c212ec9a  IN   Wolk_Old0 Ether0.00038013
0x580e6acc83d7633ae6b225044f50020a02a2024df5c9a81afa566e871cf5902a6 days 11 hrs ago0x71341a8392e65ce8ff2b41c00d3fe2ad87b9be00  IN   Wolk_Old0 Ether0.004219443
0x7a5f6541cfc99ac4dd7d0e3d1fc1f9122878eb1b42a06ddbd491d5595998cd7411 days 6 hrs ago0xa9217b61e64c2e3ac9fa0c6f3e42036b4ff64639  IN   Wolk_Old0 Ether0.003196
0x07c64d9ea2eb2364139807ecc93135a01fb9553560c9fcdd54c8aa2cc47c3ca118 days 3 hrs ago0xbfb3b07e272f355e6e1f7f004ada018724c9ed0a  IN   Wolk_Old0 Ether0
0x21ecd7d31b2c27e8d8ee216f4276022b654b2351c597438fffca8c37f6b3227919 days 1 hr ago0xc5e80e08ddecfee71184051dc922e688484cebaf  IN   Wolk_Old0 Ether0.000798273
0xf3bdbb44829071cd5c503da6a8fcfbd8de8417db8ae7905200ade7027da134d423 days 7 hrs ago0x11e415607850fc43050b95293185c2081f297265  IN   Wolk_Old0 Ether0.00038013
0x705bd4b3e27b8e29334c5042af4c3a8ee6429332a1d740623dc260af829968b826 days 21 hrs ago0x947b352092c9804777a537838e825fdf2596257e  IN   Wolk_Old0 Ether0.000133608
0x85f695165bae7901d4754f2cf158a9b12c0face0052c879429fcad5c259c382226 days 21 hrs ago0xae92234848cf733e56ac64c56684bd47d0e7776c  IN   Wolk_Old0 Ether0.00030564
0xeb80666863aa98b79541eca319057e06f15a173c52525230cef35cf5f0433f8534 days 8 hrs ago0x9a9b1d3636dfba530a11c3ad4d920c9ccee1a981  IN   Wolk_Old0 Ether0.0003459183
0xdffb7d852968bf34cba4ef2c30c415617768ab856395fa32fe8938dd210e029034 days 8 hrs ago0x9a9b1d3636dfba530a11c3ad4d920c9ccee1a981  IN   Wolk_Old0 Ether0.0005
0xd6ca584cac95506de862d2ce3a248d7bb44fc670fb5bb15472f24727850a578934 days 8 hrs ago0x9a9b1d3636dfba530a11c3ad4d920c9ccee1a981  IN   Wolk_Old0 Ether0.00025
0x89e1da12e465882ea0e71f6757156c4ef53a401aca92c8218a875009cba33f7c35 days 9 hrs ago0x448e1db1fd8e0cc93e0891cc85139c8f53d066af  IN   Wolk_Old0 Ether0.0005808391
0xde3946d33b2cbeb678455c66fcf48f9c09c61f874d4302f748809fa8ecb9d54838 days 7 hrs ago0xe0e062be2c9bb45d9a47bc8bb13207b06cfd70b6  IN   Wolk_Old0 Ether0.00038013
0xd4ab21b4819a08429d492478a5e6e2a43a558e496af59c2a211d22334f21eedc39 days 4 hrs ago0x91d9867c92ddce473e72aaf93698c0ccc4c28000  IN   Wolk_Old0 Ether0.000798273
0xf4d5e5dc80d2c357df3ab6ad3d3fa4fffac2290de266b05c5b46e4def9addba245 days 7 hrs ago0x7cd27d5ea30102b90892ede284c6e11560381344  IN   Wolk_Old0 Ether0.00038013
0xe41cd8c4d3e6b4e1806d453a771471c31ffcb62ca474a1f4c59c053e103ea9ae54 days 2 hrs ago0xb4e8b7eb39944255e945a60204fdf94d1a95f85a  IN   Wolk_Old0 Ether0.000955125
0x4adf0d966300a5f89702164e09aac8f58850f17d3a8faab293aee5baee5dd14a55 days 15 hrs ago0x7863fdcf1e54d0f442e663152f6ab2d8bb98adcf  IN   Wolk_Old0 Ether0.000228078
0x1fceb2e0e46f0aed95f0b8619855f683418fa55fadb53d3d80afb81f6c6db2f756 days 1 hr ago0xe99fefb57adb8cb48071fa9e00bc8610d64e7661  IN   Wolk_Old0 Ether0.001558533
0x0c38df643830a9cbaed0225c3fa930fe09fd6f5b5bda5afccab4c804efc07bec57 days 14 hrs ago0xaa5fbfcddc1a8cc93b95498880951526ee7314a5  IN   Wolk_Old0 Ether0.000518877464
0x83e9f8c531777a3cacf50760cee719ae8de976c250dc3cf7c0ff57005552c56760 days 8 hrs ago0xd840f0e16134ea528f2db49ee9eafb05d1026794  IN   Wolk_Old0 Ether0.0004911933
0xff4ceab9f5d3dfdace33276559f27545252174cae9abd4b3215d5a7a87b40cbb61 days 5 hrs ago0x2bb95b89c6c885a18510ce3d27b66eb33a334b29  IN   Wolk_Old0 Ether0.00069039
0xca7ea39630c3e1f263e2e52d1438170f1e92209bbf698b565da60ac32ff0115761 days 6 hrs ago0xf1c8258588e4488611268060ecc1a8e295215e11  IN   Wolk_Old0 Ether0.000345918309
0x98fe146592e18c7482ce1edd56730efa866a162a4d9918f4a4323b820abd211561 days 12 hrs ago0xef0224a27fcb2f14e7e61f62fc9edc5dac19e8bd  IN   Wolk_Old0 Ether0.000796929
0xd207e797bf25e9dce94d028bc48c94b3f0530d416bab73be55d4dc667583144367 days 9 hrs ago0x1126fcf3f1d02a3ca5044e8917d4e68dc94e3252  IN   Wolk_Old0 Ether0.000737888
0x9c72a5f4bd1f0b2a7a72f3a5b8556dc8b50ea7020c1d4c2aed56298cdbcf4e9d68 days 1 hr ago0xa7c4495a7bdf40494ef82ef46f2074be63d4e0bd  IN   Wolk_Old0 Ether0.005248287
[ 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
0x75afd2c62dcddc6099f65e026332d289e456e9a5d35826930688da4c21d455005422491101 days 3 hrs ago0x31a240648e2baf4f9f17225987f6f53fceb1699a0x728781e75735dc0962df3a51d7ef47e798a7107e0.000000007777777777 Ether
0xa3f858bc0ba9de9191af1594548f50cd6ca7d45a8021372ba7919b61a22d5f045203164137 days 22 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xe28970c7c73b4c2ef8bc15238b8b44ad40cebf3d30 Ether
0xfbd49e3857d424d3dc4bb780e5b9145276c57023cbe91650d8b295553146baf45138977148 days 20 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x1567dc4d627f12f59ea6287fc8b92039b957d2b24.9592 Ether
0xa736dc3d27fc4a999afa881abb811dfef528d11eeb44d5b5d98a015fba65f4d85016875169 days 9 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x9460504aa41d99367c13ec3f5dfb407560fb7cbf3.49 Ether
0x55dc7bd85d9ccb0ea6f3bb36a55e36f18fa074f78d06c9fce0715a74c670af034999673172 days 8 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xb99e8b77a7b49629ac881b4f9f0feae13200b07b1 Ether
0x571f5013fef10d48cb262c29ff354dfa75243a8ca1aadcb13804f7e51ad3e24e4932474183 days 18 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x8661dc85805e7ea7fab2db16df9e9fa053f1c5712.5 Ether
0x721c4a39e4ea7c3e2760cf6ece23ee0664b658536e79fac5a54d779268e8da6b4917746186 days 9 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xc3c1b8e3d95326e96ca32a6293c764a79bd35a5f10 Ether
0xbaa8271a23ea22050e4a3ff148f43e202ebbca361a33eec799a2cb5c644e770c4912481187 days 8 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xfca7c942e06acadde786bb2296bd1ead3aed455a4 Ether
0xd272cdaa8da37f3da221b45aaf157ac56c5f771ea0ffd792183a38236e92507d4912053187 days 10 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x6ab4a65d0d942f46115a218b5759815594ddb1ed3 Ether
0x38be5597d7f2fe1f00d572bffeaaa014c81a8990d6977cc39b26a946a0e0b35a4879139193 days 11 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x4ba5ae353f47ee76e172ea31ba48b3975de419a70.380978372 Ether
0xc93d5d7ba4d1dc7f5bcaf8a5c021666880188efc9ce34f75c53c840a856445464877627193 days 18 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xbffbb862e151f1dee5f08d88a7e3bda40c5515d32 Ether
0x5665773e40f6eaeb322ed8d8097526d5f89eafeef6bcbe62fc773b4d7aaef2784779052210 days 22 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x428512bd5e9f8e486972c89b423eed37d304d78610 Ether
0x96bfd03c0ef4036ef8a38751d0e3a1e05f84bec4129d901439eacc32f76e76f64764685213 days 11 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xf7ff150d81894beb14dbe332f7460a6f25b5ccb53 Ether
0x68aa9d6ea67994bcbb44177d72443a19e9aa38707c90b5970a89ccabc23922a34744257217 days 1 hr ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xf8cd8c4f741c64380806eae1c3e374ba48d1d46f2 Ether
0x18f9442026d4bf5cdc9b9588a68a2f405ae454cf193f2c7b7578d8c86cfc625d4729984219 days 13 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x81d00629511337d32d268166dfaec8831c0c88f319.5 Ether
0xb60c97d0aded634ec632d1b26c22b13b037bc30ea2cc52cd7508a757fc84ce4f4680199228 days 6 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x7a3933f84216fb8188cd8c03aa8bca78cf8b1b4e1 Ether
0xdad7389d04d2b26d30fad9f4491d4143398c6771189851d2beec0ed56fa826ce4635328235 days 17 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x18f63a1b88d04cd5f7c91ec67374bdf4d82478823 Ether
0xd1758cdaa509612834bf5a2490139fef472997dd6655c60aabdbe89f8e27b31f4632377236 days 5 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x8c0a0ba507ce136c29ec050781ee80697a06e3e91 Ether
0x2cad6d9d34b614d5d4026f1b33ea0936c5d55fe54b9241abf9a7c7fba50809374630714236 days 12 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x7a2b4fc201785792eb73c6922b6d8ab9a8f932a33 Ether
0xa3c93a70ff2cf4ef3caa409e34ece5d7c239baf6da4ddb6af028cbd1b7da4bea4609849239 days 20 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xee3c1dd2f31d68878eb515112bc54f03907f4df20.1 Ether
0x438e0a47e9645d8e5adbe4d2e622f67ddb2a104764d007a65cdb6a5114b1baf34598528241 days 16 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xa1dd0c192c34310b2c757ad5fa6278b6d9c84e8e2 Ether
0xb522bfb95977d221fff32b00523322c0ba6e243d29a96d68845015ca61716fcb4595714242 days 3 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xbfa3f22321779344776ce5a7f5957ea7492532840.5 Ether
0x5e939be5449f028484dbb73f303bf4478aae3de1ae6c36884bc1d942709e00ae4594139242 days 9 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0x1eb523cf2133d6cceb4914bb7bedadfd7a3a66220.4 Ether
0x218be22bb847ec0a44bf27d8829e41bb6849de08a19ee64cfbd0529a638e2d944561116247 days 17 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xfc9f2d043140e4a5994a065751c8cd640b3e804e1.5 Ether
0x27a9fbde2bf3101fa4b38f24b88bad9769556e532ff95215617b126cbe953b744523738253 days 17 hrs ago0x728781e75735dc0962df3a51d7ef47e798a7107e0xbe3c8b1bcef016f2da882e05fc9f05c8b4a70abd4.7 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
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.