Contract 0x7316203132adace374f530bd0850e66c2bfe6daa

TxHash Block Age From To Value [TxFee]
0xe9763f4fe56eb0b1fe86d83b1c89ef74d124aa4f037c9c9d90021848d3240f782850859212 days 21 hrs ago0x5c5e13a42a8b6f36a942b1f9b9459ad41eefa7f0 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.000020066
0x3a0cee420bbc8e52d3e5e83b57363f8c4becdb3cb216e23756ffb307d926b65d2850828212 days 21 hrs ago0xec169d7079562a3b95fd5d0dc13ce93575adec27 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.000021856
0x0742d68b46d8836ea991f7f38684fc9f3c5bb878021cbdde2001b120f5f4346d2850825212 days 21 hrs ago0xec169d7079562a3b95fd5d0dc13ce93575adec27 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.000022048
0x7e6fbcc9d9363cfb523789eafa35297b8b3d566df3c35860aeda8910267935692850004213 days 1 hr ago0xd8f69d84a7c0858a349674184136e147f5cc124e IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.7005 Ether0.000572962
0x0af3b5c6b165da9c486ba48f991bad78007c3ad9b3c4df8e9aa3f3fb1042c22e2849998213 days 1 hr ago0xd8f69d84a7c0858a349674184136e147f5cc124e IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.000115248
0x0838d476c44c73ddf62b717a402e1cc5e565109c008b55508bfc1cdd1e78e97d2849962213 days 1 hr ago0x8d3c41b10b731cefb76263bb84d6865a56aacc33 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.25 Ether0.00157907
0xc4952f179bcdbbef461167b66b354997dc0257d4dc2e723e5376cc3b746f77b42849959213 days 1 hr ago0x8d3c41b10b731cefb76263bb84d6865a56aacc33 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.25 Ether0.002368605
0xe939c67b4e96acac5b764eff89b2204c8665777aa350d08a4fe5984dc6d333bc2849955213 days 1 hr ago0x195c27c53fd551ad7c6fda79b1cae6c073045027 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.00036226
0x7feb20c499364c5db27ac7133853b4da6c5fb28044737095ecff3892f6950f1b2849924213 days 1 hr ago0x46ff69e563e3de8917b32d41ddd463cc4ded9643 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.003 Ether0.000667794
0xae98a5c9e492a9f780370d31c3a41bb6dec867d37f2635fa8f797a7962751a112849923213 days 1 hr ago0xda5eef9a1644637f510fbbf39f2e6f972cf42337 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.000022703
0x078ba8eedc6bf0a327bbd6ba4edb51420509575a69399174e62a8d5e38282fe42849922213 days 1 hr ago0x46ff69e563e3de8917b32d41ddd463cc4ded9643 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.003 Ether0.000637794
0x8dfe5937f6934a7aedd62ae0fc991de3684d1a2aa1b259743eaedbc0856646dd2849920213 days 1 hr ago0x46ff69e563e3de8917b32d41ddd463cc4ded9643 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.003 Ether0.000637794
0xb37a8aa250fa2d4aae8591a6255fc6ba8b272ce9ba84bd9cd39dfacc05cdb5352849918213 days 1 hr ago0x46ff69e563e3de8917b32d41ddd463cc4ded9643 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.003 Ether0.003006705
0x8f0736254b8022ede0ead2b3fc69f22273e38f705051df620b9a4b8c019a95e22849917213 days 1 hr ago0x46ff69e563e3de8917b32d41ddd463cc4ded9643 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.003 Ether0.000673908
0x83ee1e263ec9172862f65e002c1bfaea5d2b2d90222e3d5285052e4f1b37ec122849916213 days 1 hr ago0x4e827129e1f636ba2060bcf83c6862922d12e809 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.000105406
0x5be13cf492a5ae02a48bc91ce2bebaa1530fac32f29a97767963435878cd8f632849897213 days 1 hr ago0xfe871e75813ba01c7bb19f06f99fe7ce0d90019e IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.000427738
0x1a857985cbb301d26fdb924ae4f45665ae46681905f3b4c7283d056d130b3e4e2849864213 days 1 hr ago0x59de98213cec61e8045d983c251d5a338b05420f IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.000022639
0x17ba23d78d8311047d8395b79682c41b21a132f6054a732777cfcb3a632575382849864213 days 1 hr ago0xac01abd6aba564a37d7892c1d6c543aa3f2f850d IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.005699452
0x4d8c9c8a4d427e829a3e1f107d2de3e92789991a4c1d7e3664d2e9f63af7f8c52849863213 days 1 hr ago0x079ad57ba5c2c2db27266e06569ab18622568e19 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.065 Ether0.00297505
0x303b9a1ca70874e0fad639272ca87cf0bcffefa9da50b35d2b4d72922e607a222849860213 days 1 hr ago0x079ad57ba5c2c2db27266e06569ab18622568e19 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.065 Ether0.000285508
0xcee693ab061335e617d92c17b6fecae59a48fe415da44b72e4e5f7cc722f9c0c2849856213 days 1 hr ago0xeec5d37e3170d48d3bc849aefb3bf39d37db5814 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.0005 Ether0.0002887
0x4c700c513c42705788e3548455cd86496e58d4244fa416ed31a3068532a03b802849856213 days 1 hr ago0x8b3c7a09189c1e7c8666dbf299bb619292577161 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.001158058
0xbcbd4750308f58e3879396985c763db7bcef25be54738e2b50d3b6fa6041c9762849856213 days 1 hr ago0x079ad57ba5c2c2db27266e06569ab18622568e19 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0 Ether0.001210697
0x0b8c6c9795bf9c0708f369bee4235ee8cfbbc6a170be9f00459bdffc9b626d1c2849839213 days 1 hr ago0x079ad57ba5c2c2db27266e06569ab18622568e19 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.065 Ether0.003142546
0xf166b66871ac4964905809b397cb79bc334d10310f32bda5b52403546df4e9d62849836213 days 1 hr ago0x079ad57ba5c2c2db27266e06569ab18622568e19 IN  0x7316203132adace374f530bd0850e66c2bfe6daa0.065 Ether0.003856761
[ Download CSV Export 

Latest 25 internal transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xe9763f4fe56eb0b1fe86d83b1c89ef74d124aa4f037c9c9d90021848d3240f782850859212 days 21 hrs ago0x7316203132adace374f530bd0850e66c2bfe6daa0x5c5e13a42a8b6f36a942b1f9b9459ad41eefa7f07,185.067 Ether
0x0af3b5c6b165da9c486ba48f991bad78007c3ad9b3c4df8e9aa3f3fb1042c22e2849998213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x0af3b5c6b165da9c486ba48f991bad78007c3ad9b3c4df8e9aa3f3fb1042c22e2849998213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0xe939c67b4e96acac5b764eff89b2204c8665777aa350d08a4fe5984dc6d333bc2849955213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0xe939c67b4e96acac5b764eff89b2204c8665777aa350d08a4fe5984dc6d333bc2849955213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0xe939c67b4e96acac5b764eff89b2204c8665777aa350d08a4fe5984dc6d333bc2849955213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0xe939c67b4e96acac5b764eff89b2204c8665777aa350d08a4fe5984dc6d333bc2849955213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0xe939c67b4e96acac5b764eff89b2204c8665777aa350d08a4fe5984dc6d333bc2849955213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0xe939c67b4e96acac5b764eff89b2204c8665777aa350d08a4fe5984dc6d333bc2849955213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0xe939c67b4e96acac5b764eff89b2204c8665777aa350d08a4fe5984dc6d333bc2849955213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x5be13cf492a5ae02a48bc91ce2bebaa1530fac32f29a97767963435878cd8f632849897213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x5be13cf492a5ae02a48bc91ce2bebaa1530fac32f29a97767963435878cd8f632849897213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x5be13cf492a5ae02a48bc91ce2bebaa1530fac32f29a97767963435878cd8f632849897213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x5be13cf492a5ae02a48bc91ce2bebaa1530fac32f29a97767963435878cd8f632849897213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x5be13cf492a5ae02a48bc91ce2bebaa1530fac32f29a97767963435878cd8f632849897213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x5be13cf492a5ae02a48bc91ce2bebaa1530fac32f29a97767963435878cd8f632849897213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x17ba23d78d8311047d8395b79682c41b21a132f6054a732777cfcb3a632575382849864213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x17ba23d78d8311047d8395b79682c41b21a132f6054a732777cfcb3a632575382849864213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x17ba23d78d8311047d8395b79682c41b21a132f6054a732777cfcb3a632575382849864213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x17ba23d78d8311047d8395b79682c41b21a132f6054a732777cfcb3a632575382849864213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x17ba23d78d8311047d8395b79682c41b21a132f6054a732777cfcb3a632575382849864213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x17ba23d78d8311047d8395b79682c41b21a132f6054a732777cfcb3a632575382849864213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x17ba23d78d8311047d8395b79682c41b21a132f6054a732777cfcb3a632575382849864213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x17ba23d78d8311047d8395b79682c41b21a132f6054a732777cfcb3a632575382849864213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
0x17ba23d78d8311047d8395b79682c41b21a132f6054a732777cfcb3a632575382849864213 days 1 hr ago0x7316203132adace374f530bd0850e66c2bfe6daa0x26bd79635125abdf9f53d6d4acf384afe75fd3000 Ether
[ Download CSV Export 

Contract Source Code Verified (Exact Match)

Contract Name:
Mineral

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.18;




/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    
    uint256 c = a / b;
    
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}





/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}








/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}









/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

}









/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}




/**
 * @title Math
 * @dev Assorted math operations
 */

library Math {
  function max64(uint64 a, uint64 b) internal pure returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal pure returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal pure returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal pure returns (uint256) {
    return a < b ? a : b;
  }
}






/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
contract BurnableToken is StandardToken {

    event Burn(address indexed burner, uint256 value);

    /**
     * @dev Burns a specific amount of tokens.
     * @param _value The amount of token to be burned.
     */
    function burn(uint256 _value) public {
        require(_value > 0);
        require(_value <= balances[msg.sender]);
        
        

        address burner = msg.sender;
        balances[burner] = balances[burner].sub(_value);
        totalSupply = totalSupply.sub(_value);
        Burn(burner, _value);
    }
}





/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }


  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}









contract Jewel {
    function incise(address owner, uint256 value) external returns (uint);
}

contract DayQualitys {
    function getAreaQualityByDay(uint32 time, uint32 area) external returns (uint32);
}

contract Mineral is BurnableToken, Ownable {

    string public name = "Mineral";
    string public symbol = "ORE";
    uint8 public decimals = 18;

    uint256 public constant INITIAL_SUPPLY = 500 * 1000 * 1000 * (10 ** uint256(decimals));

    uint public constant MINER_4_HOURS = 0.0005 ether;
    uint public constant MINER_8_HOURS = 0.001 ether;
    uint public constant MINER_24_HOURS = 0.003 ether;

    mapping(address => uint[][72]) public deployRange;

    
    
    uint public timeScale = 1; 

    
    
    mapping(uint32 => uint32[3][72]) private areaHourDeployed;

    
    struct AreaHourDeployed {
        uint32[72] lastCollectHour;
        
        mapping(uint32 => uint32[3][72]) hour; 
    }
    
    
    mapping(address => AreaHourDeployed) private userAreaHourDeployed;

    
    uint8 public constant CHECK_POINT_HOUR = 4;

    
    
    mapping(uint32 => uint32[72]) private areaCheckPoints;

    
    mapping(uint32 => uint) private dayAverageOutput;

    
    struct AreaCheckPoint {
        
        mapping(uint32 => uint32[72]) hour;
    }

    
    
    mapping(address => AreaCheckPoint) private userAreaCheckPoints;

    uint256 amountEther;

    
    mapping (address => uint) public remainEther;

    uint32 public constractDeployTime = uint32(now) / 1 hours * 1 hours;

    mapping(address => uint) activeArea; 
    
    bool enableWhiteList = true;
    mapping(address => bool) whiteUserList;    
    address serverAddress;

    bool enableCheckArea = true;

    Jewel public jewelContract;
    DayQualitys public dayQualitysContract;

    function Mineral() Ownable() public {
        totalSupply = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        dayAverageOutput[0] = 241920 * 10 ** uint256(decimals);
    }

    
    function setTimeScale(uint scale) public onlyOwner {
        timeScale = scale;
    }

    
    function setConstractDeployTime(uint32 time) public onlyOwner {
        constractDeployTime = time;
    }

    function disableWhiteUserList() public onlyOwner {
        enableWhiteList = false;
    }

    function disableCheckArea() public onlyOwner {
        enableCheckArea = false;
    }

    modifier checkWhiteList() {
        if (enableWhiteList) {
            require(whiteUserList[msg.sender]);
        }
        _;
    }

    function setServerAddress(address addr) public onlyOwner {
        serverAddress = addr;
    }

    function authUser(string addr) public {
        require(msg.sender == serverAddress || msg.sender == owner);
        address s = bytesToAddress(bytes(addr));
        whiteUserList[s] = true;
    }

    function bytesToAddress (bytes b) internal view returns (address) {
        uint result = 0;
        for (uint i = 0; i < b.length; i++) {
            uint c = uint(b[i]);
            if (c >= 48 && c <= 57) {
                result = result * 16 + (c - 48);
            }
            if(c >= 65 && c <= 90) {
                result = result * 16 + (c - 55);
            }
            if(c >= 97 && c <= 122) {
                result = result * 16 + (c - 87);
            }
        }
        return address(result);
    }

    function setDayQualitys(address dayQualitys) public onlyOwner {
        dayQualitysContract = DayQualitys(dayQualitys);
    }

    function getMyDeployAt(uint32 area, uint32 hour) public view returns (uint32[3]) {
        return userAreaHourDeployed[msg.sender].hour[hour][area];
    }

    function getMyMinersAt(uint32 area, uint32 hour) public view returns (uint32) {
        return _getUserMinersAt(msg.sender, area, hour);
    }

    function _getUserMinersAt(address user, uint32 area, uint32 hour) internal view returns(uint32) {
        //now start from start's nearest check point
        uint32 nc = hour/CHECK_POINT_HOUR*CHECK_POINT_HOUR;
        if (userAreaCheckPoints[user].hour[nc][area] == 0 && userAreaCheckPoints[user].hour[nc + CHECK_POINT_HOUR][area] == 0) {
            return 0;
        }
        uint32 h = 0;
        int64 userInc = 0;
        uint32[3] storage ptUser;
        AreaHourDeployed storage _userAreaHourDeployed = userAreaHourDeployed[user];
        
        for (h = nc; h <= hour; ++h) {
            
            
            
            ptUser = _userAreaHourDeployed.hour[h][area];
            userInc += ptUser[0] + ptUser[1] + ptUser[2] - _userAreaHourDeployed.hour[h - 4][area][0] - 
                _userAreaHourDeployed.hour[h - 8][area][1] - _userAreaHourDeployed.hour[h - 24][area][2];
        }
        return userAreaCheckPoints[user].hour[nc][area] + uint32(userInc);
    }

    function getDeployAt(uint32 area, uint32 hour) public view returns (uint32[3]) {
        return areaHourDeployed[hour][area];
    }


    function getMinersAt(uint32 area, uint32 hour) public view returns (uint32) {
        return _getMinersAt(area, hour);
    }

    function _getMinersAt(uint32 area, uint32 hour) internal view returns (uint32) {
        //now start from start's nearest check point
        uint32 nc = hour/CHECK_POINT_HOUR*CHECK_POINT_HOUR;
        uint32 h = 0;
        int64 userInc = 0;
        int64 totalInc = 0;
        uint32[3] storage ptArea;
        
        for (h = nc; h <= hour; ++h) {
            
            
            
            ptArea = areaHourDeployed[h][area];
            totalInc += ptArea[0] + ptArea[1] + ptArea[2] - areaHourDeployed[h - 4][area][0] - areaHourDeployed[h - 8][area][1] - areaHourDeployed[h - 24][area][2];
        }

        return areaCheckPoints[nc][area] + uint32(totalInc);
    }

    function updateArea(uint areaId) internal pure returns (uint) {
        
        uint row = areaId / 8;
        uint colum = areaId % 8;

        uint result = uint(1) << areaId;
        if (row-1 >= 0) {
            result |= uint(1) << ((row-1)*8+colum);
        }
        if (row+1 < 9) {
            result |= uint(1) << ((row+1)*8+colum);
        }
        if (colum-1 >= 0) {
            result |= uint(1) << (row*8+colum-1);
        }
        if (colum+1 < 8) {
            result |= uint(1) << (row*8+colum+1);
        }
        
        return result;
    }

    function checkArea(uint32[] area, address user) internal {
        if (enableCheckArea) {
            uint[] memory distinctArea = new uint[](area.length);
            uint distinctAreaLength = 0;
        
            for (uint i = 0; i < area.length; i++) {
                bool find = false;
                for (uint j = 0; j < distinctAreaLength; j++) {
                    if (distinctArea[j] == area[i]) {
                        find = true;
                        break;
                    }
                }     
                if (!find) {
                    distinctArea[distinctAreaLength] = area[i];
                    distinctAreaLength += 1;
                }
            }

            if (activeArea[user] == 0) {
                require(distinctAreaLength == 1);
                activeArea[user] = updateArea(distinctArea[0]);
            } else {
                uint userActiveArea = activeArea[user];
                uint updateActiveArea = userActiveArea;
                for (i = 0; i < distinctAreaLength; i++) {
                    require(userActiveArea & uint(1) << distinctArea[i] > 0);
                    updateActiveArea = updateActiveArea | updateArea(distinctArea[i]);
                }

                activeArea[user] = updateActiveArea;
            }
        }
    }

    function deployMiners(address user, uint32[] area, uint32[] period, uint32[] count) public checkWhiteList payable {
        require(area.length > 0);
        require(area.length == period.length);
        require(area.length == count.length);
        address _user = user;
        if (_user == address(0)) {
            _user = msg.sender;
        }
        
        uint32 _hour = uint32((now - constractDeployTime) * timeScale / 1 hours);

        checkArea(area, user);
        
        uint payment = _deployMiners(_user, _hour, area, period, count);
        _updateCheckPoints(_user, _hour, area, period, count);

        require(payment <= msg.value);
        remainEther[msg.sender] += (msg.value - payment);
        amountEther += payment;
    }

    function deployMinersTest(uint32 _hour, address user, uint32[] area, uint32[] period, uint32[] count) public checkWhiteList payable {
        require(area.length > 0);
        require(area.length == period.length);
        require(area.length == count.length);
        address _user = user;
        if (_user == address(0)) {
            _user = msg.sender;
        }
        

        checkArea(area, user);
        
        uint payment = _deployMiners(_user, _hour, area, period, count);
        _updateCheckPoints(_user, _hour, area, period, count);

        require(payment <= msg.value);
        remainEther[msg.sender] += (msg.value - payment);
        amountEther += payment;
    }

    function _deployMiners(address _user, uint32 _hour, uint32[] memory area, uint32[] memory period, uint32[] memory count) internal returns(uint){
        uint payment = 0;
        uint32 minerCount = 0;
        uint32[3][72] storage _areaDeployed = areaHourDeployed[_hour];
        uint32[3][72] storage _userAreaDeployed = userAreaHourDeployed[_user].hour[_hour];
        
        
        for (uint index = 0; index < area.length; ++index) {
            require (period[index] == 4 || period[index] == 8 || period[index] == 24);
            if (period[index] == 4) {
                _areaDeployed[area[index]][0] += count[index];
                _userAreaDeployed[area[index]][0] += count[index];
                payment += count[index] * MINER_4_HOURS;
            } else if (period[index] == 8) {
                _areaDeployed[area[index]][1] += count[index];
                _userAreaDeployed[area[index]][1] += count[index];
                payment += count[index] * MINER_8_HOURS;
            } else if (period[index] == 24) {
                _areaDeployed[area[index]][2] += count[index];
                _userAreaDeployed[area[index]][2] += count[index];
                payment += count[index] * MINER_24_HOURS;
            }
            minerCount += count[index];
            DeployMiner(_user, area[index], _hour, _hour + period[index], count[index]);

            adjustDeployRange(area[index], _hour, _hour + period[index]);
        }
        return payment;
    }   

    function adjustDeployRange(uint area, uint start, uint end) internal {
        uint len = deployRange[msg.sender][area].length;
        if (len == 0) {
            deployRange[msg.sender][area].push(start | (end << 128));
        } else {
            uint s = uint128(deployRange[msg.sender][area][len - 1]);
            uint e = uint128(deployRange[msg.sender][area][len - 1] >> 128);
            
            if (start >= s && start < e) {
                end = e > end ? e : end;
                deployRange[msg.sender][area][len - 1] = s | (end << 128);
            } else {
                deployRange[msg.sender][area].push(start | (end << 128));
            }
        }
    }

    function getDeployArrayLength(uint area) public view returns (uint) {
        return deployRange[msg.sender][area].length;
    }
    
    function getDeploy(uint area, uint index) public view returns (uint,uint) {
        uint s = uint128(deployRange[msg.sender][area][index]);
        uint e = uint128(deployRange[msg.sender][area][index] >> 128);
        return (s, e);
    }

    function _updateCheckPoints(address _user, uint32 _hour, uint32[] memory area, uint32[] memory period, uint32[] memory count) internal {
        uint32 _area = 0;
        uint32 _count = 0;
        uint32 ce4 = _hour + 4;
        uint32 ce8 = _hour + 8;
        uint32 ce24 = _hour + 24;
        uint32 cs = (_hour/CHECK_POINT_HOUR+1)*CHECK_POINT_HOUR;
        AreaCheckPoint storage _userAreaCheckPoints = userAreaCheckPoints[_user];
        uint32 cp = 0;
        for (uint index = 0; index < area.length; ++index) {
            _area = area[index];
            _count = count[index];
            if (period[index] == 4) {
                for (cp = cs; cp <= ce4; cp += CHECK_POINT_HOUR) {
                    areaCheckPoints[cp][_area] += _count;
                    _userAreaCheckPoints.hour[cp][_area] += _count;
                }
            } else if (period[index] == 8) {
                for (cp = cs; cp <= ce8; cp += CHECK_POINT_HOUR) {
                    areaCheckPoints[cp][_area] += _count;
                    _userAreaCheckPoints.hour[cp][_area] += _count;
                }
            } else if (period[index] == 24) {
                for (cp = cs; cp <= ce24; cp += CHECK_POINT_HOUR) {
                    areaCheckPoints[cp][_area] += _count;
                    _userAreaCheckPoints.hour[cp][_area] += _count;
                }
            }
        }
    }

    

    event DeployMiner(address addr, uint32 area, uint32 start, uint32 end, uint32 count);

    event Collect(address addr, uint32 area, uint32 start, uint32 end, uint areaCount);


    function _transfer(address _from, address _to, uint256 _value) internal returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(_from, _to, _value);
        return true;
    }

    function getMyLastCollectHour(uint32 area) public view returns (uint32){
        return userAreaHourDeployed[msg.sender].lastCollectHour[area];
    }

    
    
    function collect(address user, uint32[] area) public  checkWhiteList {
        require(address(dayQualitysContract) != address(0));
        uint32 current = uint32((now - constractDeployTime) * timeScale / 1 hours);
        require(area.length > 0);
        address _user = user;
        if (_user == address(0)) {
            _user = msg.sender;
        }
        uint total = 0;
        
        for (uint a = 0; a < area.length; ++a) {
            uint len = deployRange[msg.sender][area[a]].length;
            bool finish = true;
            for (uint i = 0; i < len; i += 1) {
                uint s = uint128(deployRange[msg.sender][area[a]][i]);
                uint e = uint128(deployRange[msg.sender][area[a]][i] >> 128);
                if (current < e && current >= s ) {
                    total += _collect(_user, uint32(s), current, area[a]);
                    
                    deployRange[msg.sender][area[a]][i] = current | (e << 128);
                    finish = false;
                } else if (current >= e) {
                    total += _collect(_user, uint32(s), uint32(e), area[a]);
                }
            }
            
            if (finish) {
                deployRange[msg.sender][area[a]].length = 0;
            } else {
                deployRange[msg.sender][area[a]][0] = deployRange[msg.sender][area[a]][len - 1];
                deployRange[msg.sender][area[a]].length = 1;
            }
        }    
        _transfer(owner, _user, total);
    }

    function _collect(address _user, uint32 start, uint32 end, uint32 area) internal returns (uint) {
        uint result = 0;
        uint32 writeCount = 1;
        uint income = 0;
        uint32[] memory totalMiners = new uint32[](CHECK_POINT_HOUR);
        uint32[] memory userMiners = new uint32[](CHECK_POINT_HOUR);
        uint32 ps = start/CHECK_POINT_HOUR*CHECK_POINT_HOUR+CHECK_POINT_HOUR;
        if (ps >= end) {
            
            (income, writeCount) = _collectMinersByCheckPoints(_user, area, start, end, totalMiners, userMiners, writeCount);
            result += income;
        } else {
            
            (income, writeCount) = _collectMinersByCheckPoints(_user, area, start, ps, totalMiners, userMiners, writeCount);
            result += income;

            while (ps < end) {
                (income, writeCount) = _collectMinersByCheckPoints(_user, area, ps, uint32(Math.min64(end, ps + CHECK_POINT_HOUR)), totalMiners, userMiners, writeCount);
                result += income;

                ps += CHECK_POINT_HOUR;
            }
        }
        Collect(_user, area, start, end, result);
        return result;
    }

    function _collectMinersByCheckPoints(address _user, uint32 area, uint32 start, uint32 end, uint32[] memory totalMiners, uint32[] memory userMiners, uint32 _writeCount) internal returns (uint income, uint32 writeCount) {
        //now start from start's nearest check point
        writeCount = _writeCount;
        income = 0;
        
        
        if (userAreaCheckPoints[_user].hour[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR][area] == 0 && userAreaCheckPoints[_user].hour[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR + CHECK_POINT_HOUR][area] == 0) {
            return;
        }
        _getMinersByCheckPoints(_user, area, start, end, totalMiners, userMiners);
        uint ao = dayAverageOutput[start / 24];
        if (ao == 0) {
            uint32 d = start / 24;
            for (; d >= 0; --d) {
                if (dayAverageOutput[d] != 0) {
                    break;
                }
            } 
            ao = dayAverageOutput[d];
            for (d = d+1; d <= start / 24; ++d) {
                ao = ao*9996/10000;
                if ((start / 24 - d) < writeCount) {
                    dayAverageOutput[d] = ao;
                }
            }
            if (writeCount > (start / 24 - d - 1)) {
                writeCount = writeCount - (start / 24 - d - 1);
            } else {
                writeCount = 0;
            }
        }

        uint week = dayQualitysContract.getAreaQualityByDay(uint32(start * 1 hours + constractDeployTime), area);
        require(week > 0);

        ao = week * ao / 10 / 24 / 72;
        
        income = _getTotalIncomeAt(end - start, userMiners, totalMiners, ao, week);

        if (week == 10) { 
            income = income * 8 / 10;
        } else if (week == 5) { 
            income = income * 6 / 10;
        } 
    }

    function _getTotalIncomeAt(uint32 hourLength, uint32[] memory userMiners, uint32[] memory totalMiners, uint areaOutput, uint week) internal view returns(uint) {
        uint income = 0;
        for (uint i = 0; i < hourLength; ++i) {
            if (userMiners[i] != 0 && totalMiners[i] != 0) {
                income += (Math.min256(10 ** uint256(decimals), areaOutput / totalMiners[i]) * userMiners[i]);
            }
        }
        return income;
    } 

    function _getMinersByCheckPoints(address _user, uint32 area, uint32 start, uint32 end, uint32[] memory totalMiners, uint32[] memory userMiners) internal view {
        require((end - start) <= CHECK_POINT_HOUR);
        //now start from start's nearest check point
        uint32 h = 0;
        int64 userInc = 0;
        int64 totalInc = 0;
        uint32[3] storage ptUser;
        uint32[3] storage ptArea;
        AreaHourDeployed storage _userAreaHourDeployed = userAreaHourDeployed[_user];
        
        for (h = start/CHECK_POINT_HOUR*CHECK_POINT_HOUR; h <= start; ++h) {
            
            
            
            ptUser = _userAreaHourDeployed.hour[h][area];
            ptArea = areaHourDeployed[h][area];
            totalInc += ptArea[0] + ptArea[1] + ptArea[2] - areaHourDeployed[h - 4][area][0] - areaHourDeployed[h - 8][area][1] - areaHourDeployed[h - 24][area][2];
            userInc += ptUser[0] + ptUser[1] + ptUser[2] - _userAreaHourDeployed.hour[h - 4][area][0] - _userAreaHourDeployed.hour[h - 8][area][1] - _userAreaHourDeployed.hour[h - 24][area][2];
        }

        totalMiners[0] = areaCheckPoints[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR][area] + uint32(totalInc);
        userMiners[0] = userAreaCheckPoints[_user].hour[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR][area] + uint32(userInc);

        uint32 i = 1;
        for (h = start + 1; h < end; ++h) {
            
            
            
            ptUser = _userAreaHourDeployed.hour[h][area];
            ptArea = areaHourDeployed[h][area];
            totalMiners[i] = totalMiners[i-1] + ptArea[0] + ptArea[1] + ptArea[2] - areaHourDeployed[h - 4][area][0] - areaHourDeployed[h - 8][area][1] - areaHourDeployed[h - 24][area][2];
            userMiners[i] = userMiners[i-1] + ptUser[0] + ptUser[1] + ptUser[2] - _userAreaHourDeployed.hour[h - 4][area][0] - _userAreaHourDeployed.hour[h - 8][area][1] - _userAreaHourDeployed.hour[h - 24][area][2];
            ++i;
        }
    }

    
    function withdraw() public {
        uint remain = remainEther[msg.sender]; 
        require(remain > 0);
        remainEther[msg.sender] = 0;

        msg.sender.transfer(remain);
    }

    
    function withdrawMinerFee() public onlyOwner {
        require(amountEther > 0);
        owner.transfer(amountEther);
        amountEther = 0;
    }
}

Contract ABI

[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"remainEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableWhiteUserList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CHECK_POINT_HOUR","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawMinerFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getMyDeployAt","outputs":[{"name":"","type":"uint32[3]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint256"}],"name":"getDeployArrayLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getDeployAt","outputs":[{"name":"","type":"uint32[3]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getMyMinersAt","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_hour","type":"uint32"},{"name":"user","type":"address"},{"name":"area","type":"uint32[]"},{"name":"period","type":"uint32[]"},{"name":"count","type":"uint32[]"}],"name":"deployMinersTest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setServerAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"area","type":"uint32[]"}],"name":"collect","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MINER_8_HOURS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint256"},{"name":"index","type":"uint256"}],"name":"getDeploy","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"string"}],"name":"authUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MINER_4_HOURS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"scale","type":"uint256"}],"name":"setTimeScale","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINER_24_HOURS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dayQualitysContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"deployRange","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint32"}],"name":"setConstractDeployTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"constractDeployTime","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"}],"name":"getMyLastCollectHour","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableCheckArea","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"jewelContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getMinersAt","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"area","type":"uint32[]"},{"name":"period","type":"uint32[]"},{"name":"count","type":"uint32[]"}],"name":"deployMiners","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"dayQualitys","type":"address"}],"name":"setDayQualitys","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"timeScale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"area","type":"uint32"},{"indexed":false,"name":"start","type":"uint32"},{"indexed":false,"name":"end","type":"uint32"},{"indexed":false,"name":"count","type":"uint32"}],"name":"DeployMiner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"area","type":"uint32"},{"indexed":false,"name":"start","type":"uint32"},{"indexed":false,"name":"end","type":"uint32"},{"indexed":false,"name":"areaCount","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","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"},{"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"}]

Contract Creation Code

606060405260408051908101604052600781527f4d696e6572616c00000000000000000000000000000000000000000000000000602082015260049080516200004d9291602001906200019b565b5060408051908101604052600381527f4f5245000000000000000000000000000000000000000000000000000000000060208201526005908051620000979291602001906200019b565b506006805460ff191660121790556001600855610e1063ffffffff42166010805463ffffffff191692909104610e100263ffffffff169190911790556012805460ff19166001179055601480547401000000000000000000000000000000000000000060a060020a60ff021990911617905534156200011557600080fd5b60038054600160a060020a03191633600160a060020a03169081179091556006805460ff908116600a90810a631dcd65000260008181559485526001602090815260408620919091559254938052600c90925291909116900a6203b100027f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e85562000240565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001de57805160ff19168380011785556200020e565b828001600101855582156200020e579182015b828111156200020e578251825591602001919060010190620001f1565b506200021c92915062000220565b5090565b6200023d91905b808211156200021c576000815560010162000227565b90565b613bdd80620002506000396000f3006060604052600436106102195763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630433df85811461021e57806306fdde031461024f578063095ea7b3146102d957806314dacf5b1461030f5780631813aea51461032457806318160ddd1461034d57806323b872dd1461036057806328ce5cdb146103885780632b048f771461039b5780632c027eb9146103f55780632ff2e9dc1461040b578063313ce5671461041e5780633b404266146104315780633ccfd60b146104535780633dd00c42146104665780634204f7d5146104a157806342966c681461057f57806347b64eb0146105955780634d6a7d33146105b45780634dbd71eb1461061157806350beb835146106245780635a589fc91461065557806363c2558a146106a657806366188463146106b957806366b3fe66146106db57806370a08231146106f15780638da5cb5b146107105780638e73d8571461073f5780638ffdbf0b1461075257806390ce34ec1461076557806395d89b411461078a578063a5ccd8551461079d578063a7d53800146107b9578063a9059cbb146107cc578063a949f3af146107ee578063b74d13a51461080a578063cc99ece11461081d578063d6387a3e14610830578063d73dd62314610852578063dd62ed3e14610874578063eea0d16814610899578063f0a7975f1461096b578063f2fde38b1461098a578063f32b85e8146109a9575b600080fd5b341561022957600080fd5b61023d600160a060020a03600435166109bc565b60405190815260200160405180910390f35b341561025a57600080fd5b6102626109ce565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561029e578082015183820152602001610286565b50505050905090810190601f1680156102cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102e457600080fd5b6102fb600160a060020a0360043516602435610a6c565b604051901515815260200160405180910390f35b341561031a57600080fd5b610322610ad8565b005b341561032f57600080fd5b610337610aff565b60405160ff909116815260200160405180910390f35b341561035857600080fd5b61023d610b04565b341561036b57600080fd5b6102fb600160a060020a0360043581169060243516604435610b0a565b341561039357600080fd5b610322610c8c565b34156103a657600080fd5b6103bd63ffffffff60043581169060243516610cf7565b6040518082606080838360005b838110156103e25780820151838201526020016103ca565b5050505090500191505060405180910390f35b341561040057600080fd5b61023d600435610d9d565b341561041657600080fd5b61023d610dc8565b341561042957600080fd5b610337610dda565b341561043c57600080fd5b6103bd63ffffffff60043581169060243516610de3565b341561045e57600080fd5b610322610e0e565b341561047157600080fd5b61048863ffffffff60043581169060243516610e7a565b60405163ffffffff909116815260200160405180910390f35b6103226004803563ffffffff169060248035600160a060020a0316919060649060443590810190830135806020808202016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610e8e95505050505050565b341561058a57600080fd5b610322600435610f6b565b34156105a057600080fd5b610322600160a060020a0360043516611034565b34156105bf57600080fd5b61032260048035600160a060020a031690604460248035908101908301358060208082020160405190810160405280939291908181526020018383602002808284375094965061107e95505050505050565b341561061c57600080fd5b61023d6114e5565b341561062f57600080fd5b61063d6004356024356114f0565b60405191825260208201526040908101905180910390f35b341561066057600080fd5b61032260046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506115ae95505050505050565b34156106b157600080fd5b61023d611616565b34156106c457600080fd5b6102fb600160a060020a0360043516602435611621565b34156106e657600080fd5b61032260043561171b565b34156106fc57600080fd5b61023d600160a060020a036004351661173b565b341561071b57600080fd5b610723611756565b604051600160a060020a03909116815260200160405180910390f35b341561074a57600080fd5b61023d611765565b341561075d57600080fd5b610723611770565b341561077057600080fd5b61023d600160a060020a036004351660243560443561177f565b341561079557600080fd5b6102626117b9565b34156107a857600080fd5b61032263ffffffff60043516611824565b34156107c457600080fd5b61048861185b565b34156107d757600080fd5b6102fb600160a060020a0360043516602435611867565b34156107f957600080fd5b61048863ffffffff60043516611962565b341561081557600080fd5b6103226119ae565b341561082857600080fd5b6107236119e9565b341561083b57600080fd5b61048863ffffffff600435811690602435166119f8565b341561085d57600080fd5b6102fb600160a060020a0360043516602435611a04565b341561087f57600080fd5b61023d600160a060020a0360043581169060243516611aa8565b61032260048035600160a060020a03169060446024803590810190830135806020808202016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650611ad395505050505050565b341561097657600080fd5b610322600160a060020a0360043516611b8b565b341561099557600080fd5b610322600160a060020a0360043516611bd5565b34156109b457600080fd5b61023d611c70565b600f6020526000908152604090205481565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a645780601f10610a3957610100808354040283529160200191610a64565b820191906000526020600020905b815481529060010190602001808311610a4757829003601f168201915b505050505081565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60035433600160a060020a03908116911614610af357600080fd5b6012805460ff19169055565b600481565b60005481565b6000600160a060020a0383161515610b2157600080fd5b600160a060020a038416600090815260016020526040902054821115610b4657600080fd5b600160a060020a0380851660009081526002602090815260408083203390941683529290522054821115610b7957600080fd5b600160a060020a038416600090815260016020526040902054610ba2908363ffffffff611c7616565b600160a060020a038086166000908152600160205260408082209390935590851681522054610bd7908363ffffffff611c8816565b600160a060020a03808516600090815260016020908152604080832094909455878316825260028152838220339093168252919091522054610c1f908363ffffffff611c7616565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60035433600160a060020a03908116911614610ca757600080fd5b600e5460009011610cb757600080fd5b600354600e54600160a060020a039091169080156108fc0290604051600060405180830381858888f193505050501515610cf057600080fd5b6000600e55565b610cff613b2d565b600160a060020a0333166000908152600a6020908152604080832063ffffffff8087168552600990910190925290912090841660488110610d3c57fe5b0160036060604051908101604052919060608301826000855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610d5557509498975050505050505050565b600160a060020a03331660009081526007602052604081208260488110610dc057fe5b015492915050565b60065460ff16600a0a631dcd65000281565b60065460ff1681565b610deb613b2d565b63ffffffff808316600090815260096020526040902090841660488110610d3c57fe5b600160a060020a0333166000908152600f6020526040812054908111610e3357600080fd5b600160a060020a0333166000818152600f60205260408082209190915582156108fc0290839051600060405180830381858888f193505050501515610e7757600080fd5b50565b6000610e87338484611c97565b9392505050565b601254600090819060ff1615610ec557600160a060020a03331660009081526013602052604090205460ff161515610ec557600080fd5b6000855111610ed357600080fd5b8351855114610ee157600080fd5b8251855114610eef57600080fd5b859150600160a060020a0382161515610f06573391505b610f108587611f1a565b610f1d8288878787612116565b9050610f2c8288878787612635565b34811115610f3957600080fd5b600160a060020a0333166000908152600f60205260409020805434839003019055600e80549091019055505050505050565b6000808211610f7957600080fd5b600160a060020a033316600090815260016020526040902054821115610f9e57600080fd5b5033600160a060020a038116600090815260016020526040902054610fc39083611c76565b600160a060020a03821660009081526001602052604081209190915554610ff0908363ffffffff611c7616565b600055600160a060020a0381167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405190815260200160405180910390a25050565b60035433600160a060020a0390811691161461104f57600080fd5b6014805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000806000806000806000806000601260009054906101000a900460ff16156110c857600160a060020a03331660009081526013602052604090205460ff1615156110c857600080fd5b601654600160a060020a031615156110df57600080fd5b600854601054610e109163ffffffff90911642030204985060008a511161110557600080fd5b8a9750600160a060020a038816151561111c573397505b60009650600095505b89518610156114c057600160a060020a03331660009081526007602052604090208a878151811061115257fe5b9060200190602002015163ffffffff166048811061116c57fe5b0154945060019350600092505b8483101561135d57600160a060020a03331660009081526007602052604090208a87815181106111a557fe5b9060200190602002015163ffffffff16604881106111bf57fe5b018054849081106111cc57fe5b9060005260206000209001546fffffffffffffffffffffffffffffffff16915060806007600033600160a060020a0316600160a060020a031681526020019081526020016000208b888151811061121f57fe5b9060200190602002015163ffffffff166048811061123957fe5b0180548590811061124657fe5b9060005260206000209001549060020a90046fffffffffffffffffffffffffffffffff169050808963ffffffff161080156112875750818963ffffffff1610155b1561132d576112ad88838b8d8a8151811061129e57fe5b9060200190602002015161298d565b600160a060020a033316600090815260076020526040902097019663ffffffff8a16700100000000000000000000000000000000830217908b88815181106112f157fe5b9060200190602002015163ffffffff166048811061130b57fe5b0180548590811061131857fe5b60009182526020822001919091559350611352565b63ffffffff89168190106113525761134d8883838d8a8151811061129e57fe5b870196505b600183019250611179565b83156113b257600160a060020a03331660009081526007602052604081208b888151811061138757fe5b9060200190602002015163ffffffff16604881106113a157fe5b6113ac910182613b55565b506114b5565b600160a060020a03331660009081526007602052604090208a87815181106113d657fe5b9060200190602002015163ffffffff16604881106113f057fe5b018054600019870190811061140157fe5b6000918252602080832090910154600160a060020a0333168352600790915260409091208b888151811061143157fe5b9060200190602002015163ffffffff166048811061144b57fe5b018054600090811061145957fe5b6000918252602080832090910192909255600160a060020a03331681526007909152604090206001908b888151811061148e57fe5b9060200190602002015163ffffffff16604881106114a857fe5b6114b3910182613b55565b505b856001019550611125565b6003546114d790600160a060020a03168989612b05565b505050505050505050505050565b66038d7ea4c6800081565b600160a060020a0333166000908152600760205260408120819081908190866048811061151957fe5b0180548690811061152657fe5b6000918252602080832090910154600160a060020a0333168352600790915260409091206fffffffffffffffffffffffffffffffff9091169250608090876048811061156e57fe5b0180548790811061157b57fe5b60009182526020909120015492976fffffffffffffffffffffffffffffffff60029290920a909304169550909350505050565b60145460009033600160a060020a03908116911614806115dc575060035433600160a060020a039081169116145b15156115e757600080fd5b6115f082612c00565b600160a060020a03166000908152601360205260409020805460ff191660011790555050565b6601c6bf5263400081565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561167e57600160a060020a0333811660009081526002602090815260408083209388168352929052908120556116b5565b61168e818463ffffffff611c7616565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b60035433600160a060020a0390811691161461173657600080fd5b600855565b600160a060020a031660009081526001602052604090205490565b600354600160a060020a031681565b660aa87bee53800081565b601654600160a060020a031681565b6007602052600083815260409020826048811061179857fe5b018054829081106117a557fe5b600091825260209091200154925083915050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a645780601f10610a3957610100808354040283529160200191610a64565b60035433600160a060020a0390811691161461183f57600080fd5b6010805463ffffffff191663ffffffff92909216919091179055565b60105463ffffffff1681565b6000600160a060020a038316151561187e57600080fd5b600160a060020a0333166000908152600160205260409020548211156118a357600080fd5b600160a060020a0333166000908152600160205260409020546118cc908363ffffffff611c7616565b600160a060020a033381166000908152600160205260408082209390935590851681522054611901908363ffffffff611c8816565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600160a060020a0333166000908152600a6020526040812063ffffffff83166048811061198b57fe5b600891828204019190066004029054906101000a900463ffffffff169050919050565b60035433600160a060020a039081169116146119c957600080fd5b6014805474ff000000000000000000000000000000000000000019169055565b601554600160a060020a031681565b6000610e878383612cb3565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054611a3c908363ffffffff611c8816565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b6012546000908190819060ff1615611b0c57600160a060020a03331660009081526013602052604090205460ff161515611b0c57600080fd5b6000865111611b1a57600080fd5b8451865114611b2857600080fd5b8351865114611b3657600080fd5b869250600160a060020a0383161515611b4d573392505b600854601054610e109163ffffffff909116420302049150611b6f8688611f1a565b611b7c8383888888612116565b9050610f2c8383888888612635565b60035433600160a060020a03908116911614611ba657600080fd5b6016805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035433600160a060020a03908116911614611bf057600080fd5b600160a060020a0381161515611c0557600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085481565b600082821115611c8257fe5b50900390565b600082820183811015610e8757fe5b6000808080808060048063ffffffff8916600160a060020a038c166000908152600d60209081526040808320949093049490940263ffffffff81811683529390945220919650891660488110611ce957fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff166000148015611d755750600160a060020a0389166000908152600d6020908152604080832063ffffffff60048a0181168552925290912090891660488110611d4f57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff166000145b15611d835760009550611f0e565b50600160a060020a0388166000908152600a602052604081208594509092505b63ffffffff80881690851611611eb65763ffffffff8085166000908152600983016020526040902090891660488110611dd857fe5b63ffffffff6017198701811660009081526009850160205260409020929091019350891660488110611e0657fe5b015463ffffffff6007198601811660009081526009840160205260409020604060020a909204811691908a1660488110611e3c57fe5b015463ffffffff6003198701811660009081526009850160205260409020640100000000909204811691908b1660488110611e7357fe5b015484546001979097019663ffffffff9182168183166401000000008304841601604060020a909204831691909101039190910391909103169290920191611da3565b600160a060020a0389166000908152600d6020908152604080832063ffffffff808a168552925290912084918a1660488110611eee57fe5b600891828204019190066004029054906101000a900463ffffffff160195505b50505050509392505050565b611f22613b7e565b6000806000806000806014809054906101000a900460ff161561210b578851604051805910611f4e5750595b9080825280602002602001820160405250965060009550600094505b885185101561201c5760009350600092505b85831015611fd057888581518110611f9057fe5b9060200190602002015163ffffffff16878481518110611fac57fe5b906020019060200201511415611fc55760019350611fd0565b600190920191611f7c565b83151561201157888581518110611fe357fe5b9060200190602002015163ffffffff16878781518110611fff57fe5b60209081029091010152600195909501945b600190940193611f6a565b600160a060020a0388166000908152601160205260409020541515612085576001861461204857600080fd5b6120678760008151811061205857fe5b90602001906020020151612e20565b600160a060020a03891660009081526011602052604090205561210b565b5050600160a060020a038616600090815260116020526040812054909350805b858510156120ef5760008786815181106120bb57fe5b9060200190602002015160020a8316116120d457600080fd5b6120e387868151811061205857fe5b600190950194176120a5565b600160a060020a03881660009081526011602052604090208190555b505050505050505050565b63ffffffff84166000818152600960208181526040808420600160a060020a038b168552600a8352818520958552949092019052812090918291829190825b88518110156126265787818151811061216a57fe5b9060200190602002015163ffffffff16600414806121a3575087818151811061218f57fe5b9060200190602002015163ffffffff166008145b806121c957508781815181106121b557fe5b9060200190602002015163ffffffff166018145b15156121d457600080fd5b8781815181106121e057fe5b9060200190602002015163ffffffff16600414156122dc5786818151811061220457fe5b90602001906020020151838a838151811061221b57fe5b9060200190602002015163ffffffff166048811061223557fe5b01805463ffffffff19811663ffffffff918216939093011691909117905586818151811061225f57fe5b90602001906020020151828a838151811061227657fe5b9060200190602002015163ffffffff166048811061229057fe5b01805463ffffffff19811663ffffffff91821693909301169190911790556601c6bf526340008782815181106122c257fe5b9060200190602002015163ffffffff160285019450612510565b8781815181106122e857fe5b9060200190602002015163ffffffff16600814156123e85786818151811061230c57fe5b90602001906020020151838a838151811061232357fe5b9060200190602002015163ffffffff166048811061233d57fe5b01805463ffffffff64010000000080830482169094011690920267ffffffff000000001990921691909117905586818151811061237657fe5b90602001906020020151828a838151811061238d57fe5b9060200190602002015163ffffffff16604881106123a757fe5b01805463ffffffff64010000000080830482169094011690920267ffffffff000000001990921691909117905566038d7ea4c680008782815181106122c257fe5b8781815181106123f457fe5b9060200190602002015163ffffffff16601814156125105786818151811061241857fe5b90602001906020020151838a838151811061242f57fe5b9060200190602002015163ffffffff166048811061244957fe5b01805463ffffffff604060020a8083048216909401169092026bffffffff00000000000000001990921691909117905586818151811061248557fe5b90602001906020020151828a838151811061249c57fe5b9060200190602002015163ffffffff16604881106124b657fe5b01805463ffffffff604060020a8083048216909401169092026bffffffff000000000000000019909216919091179055660aa87bee5380008782815181106124fa57fe5b9060200190602002015163ffffffff1602850194505b86818151811061251c57fe5b90602001906020020151840193507f66412e9e4538ab9be49dd3e9c38afd30dc90b3bfdfe105047cf5cc945c311af68b8a838151811061255857fe5b906020019060200201518c8b858151811061256f57fe5b906020019060200201518e018b868151811061258757fe5b90602001906020020151604051600160a060020a03909516855263ffffffff938416602086015291831660408086019190915290831660608501529116608083015260a0909101905180910390a161261e8982815181106125e457fe5b9060200190602002015163ffffffff168b63ffffffff168a848151811061260757fe5b906020019060200201518d0163ffffffff16612ea1565b600101612155565b50929998505050505050505050565b600160a060020a0385166000908152600d602052604081208190600487810191600889019160188a0191600163ffffffff8c16839004019091029085805b8b5181101561297d578b818151811061268857fe5b9060200190602002015198508981815181106126a057fe5b9060200190602002015197508a81815181106126b857fe5b9060200190602002015163ffffffff166004141561279d578391505b63ffffffff808816908316116127985763ffffffff8083166000908152600b6020526040902089918b166048811061270857fe5b6008808204929092018054929091066004026101000a63ffffffff81810219841693829004811694909401841602919091179055828116600090815260208590526040902089918b166048811061275b57fe5b6008808204909201805463ffffffff60049490930684026101000a80820484169095018316850292909402199093161790915591909101906126d4565b612975565b8a81815181106127a957fe5b9060200190602002015163ffffffff1660081415612889578391505b63ffffffff808716908316116127985763ffffffff8083166000908152600b6020526040902089918b16604881106127f957fe5b6008808204929092018054929091066004026101000a63ffffffff81810219841693829004811694909401841602919091179055828116600090815260208590526040902089918b166048811061284c57fe5b6008808204909201805463ffffffff60049490930684026101000a80820484169095018316850292909402199093161790915591909101906127c5565b8a818151811061289557fe5b9060200190602002015163ffffffff1660181415612975578391505b63ffffffff808616908316116129755763ffffffff8083166000908152600b6020526040902089918b16604881106128e557fe5b6008808204929092018054929091066004026101000a63ffffffff81810219841693829004811694909401841602919091179055828116600090815260208590526040902089918b166048811061293857fe5b6008808204909201805463ffffffff60049490930684026101000a80820484169095018316850292909402199093161790915591909101906128b1565b600101612673565b5050505050505050505050505050565b60008060008061299b613b7e565b6129a3613b7e565b60009450600193508492508260046040518059106129be5750595b9080825280602002602001820160405250925060046040518059106129e05750595b908082528060200260200182016040525091506004808063ffffffff8d16040201905063ffffffff808a1690821610612a2f57612a228b898c8c87878b6130c6565b9681019695509350612a8f565b612a3e8b898c8487878b6130c6565b96810196955093505b8863ffffffff168163ffffffff161015612a8f57612a7f8b8983612a7763ffffffff808f16906004840116613408565b87878b6130c6565b9681019695509350600401612a47565b7feb20d87b6aef9216f658e1fcee101a026ada2f53b25e6fc37e6ed979b8d9f44f8b898c8c8a604051600160a060020a03909516855263ffffffff938416602086015291831660408086019190915292166060840152608083015260a0909101905180910390a150939998505050505050505050565b6000600160a060020a0383161515612b1c57600080fd5b600160a060020a038416600090815260016020526040902054821115612b4157600080fd5b600160a060020a038416600090815260016020526040902054612b6a908363ffffffff611c7616565b600160a060020a038086166000908152600160205260408082209390935590851681522054612b9f908363ffffffff611c8816565b600160a060020a03808516600081815260016020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60008080805b8451821015612caa57848281518110612c1b57fe5b016020015160f860020a900460f860020a0260f860020a9004905060308110158015612c48575060398111155b15612c595760308103836010020192505b60418110158015612c6b5750605a8111155b15612c7c5760378103836010020192505b60618110158015612c8e5750607a8111155b15612c9f5760578103836010020192505b600190910190612c06565b50909392505050565b6000600463ffffffff831681900402808280805b63ffffffff80881690851611612dd25763ffffffff808516600090815260096020526040902090891660488110612cfa57fe5b63ffffffff601719870181166000908152600960205260409020929091019250891660488110612d2657fe5b015463ffffffff600719860181166000908152600960205260409020604060020a909204811691908a1660488110612d5a57fe5b015463ffffffff600319870181166000908152600960205260409020640100000000909204811691908b1660488110612d8f57fe5b015483546001979097019663ffffffff9182168183166401000000008304841601604060020a909204831691909101039190910391909103169190910190612cc7565b63ffffffff8086166000908152600b6020526040902083918a1660488110612df657fe5b600891828204019190066004029054906101000a900463ffffffff16019550505050505092915050565b60006008808304908306600284900a6000198301849010612e4a576008600019840102820160020a175b6009836001011015612e645760086001840102820160020a175b6000600019830110612e7f576000196008840283010160020a175b6008826001011015612e995760016008840283010160020a175b949350505050565b600160a060020a0333166000908152600760205260408120819081908660488110612ec857fe5b01549250821515612f3057600160a060020a03331660009081526007602052604090208660488110612ef657fe5b01805460018101612f078382613b55565b5060009182526020909120700100000000000000000000000000000000860287179101556130be565b600160a060020a03331660009081526007602052604090208660488110612f5357fe5b0180546000198501908110612f6457fe5b6000918252602080832090910154600160a060020a0333168352600790915260409091206fffffffffffffffffffffffffffffffff90911692506080908760488110612fac57fe5b0180546000198601908110612fbd57fe5b9060005260206000209001549060020a90046fffffffffffffffffffffffffffffffff169050818510158015612ff257508085105b15613065578381116130045783613006565b805b600160a060020a03331660009081526007602052604090209094507001000000000000000000000000000000008502831790876048811061304357fe5b018054600019860190811061305457fe5b6000918252602090912001556130be565b600160a060020a0333166000908152600760205260409020866048811061308857fe5b018054600181016130998382613b55565b5060009182526020909120700100000000000000000000000000000000860287179101555b505050505050565b600160a060020a0387166000908152600d60209081526040808320600463ffffffff8a811682900490910281168552925282208391839182918291908c166048811061310e57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1660001480156131a35750600160a060020a038c166000908152600d60209081526040808320600463ffffffff8f81168290048202909101811685529252909120908c166048811061317d57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff166000145b156131ad576133f9565b6131bb8c8c8c8c8c8c613432565b601863ffffffff8b811691909104166000908152600c602052604090205492508215156132fc57601863ffffffff8b160491505b600063ffffffff8316106132295763ffffffff82166000908152600c60205260409020541561321d57613229565b600019909101906131ef565b63ffffffff82166000908152600c602052604090205492506001909101905b601863ffffffff8b160463ffffffff168263ffffffff161115156132bd5761271061270c84020492508363ffffffff168260188c63ffffffff1681151561328b57fe5b040363ffffffff1610156132b25763ffffffff82166000908152600c602052604090208390555b816001019150613248565b600182601863ffffffff8d1604030363ffffffff168463ffffffff1611156132f757600182601863ffffffff8d16040303840393506132fc565b600093505b601654601054600160a060020a0390911690630eb3f9939063ffffffff16610e108d02018d60006040516020015260405163ffffffff8481167c0100000000000000000000000000000000000000000000000000000000028252928316600482015291166024820152604401602060405180830381600087803b151561338157600080fd5b6102c65a03f1151561339257600080fd5b505050604051805163ffffffff16915050600081116133b057600080fd5b60486018600a83860204040492506133cd8a8a03888a8685613a50565b945080600a14156133e657600a600886020494506133f9565b80600514156133f957600a600686020494505b50505097509795505050505050565b60008167ffffffffffffffff168367ffffffffffffffff161061342b5781610e87565b5090919050565b6000808080808080600463ffffffff8c8c0316111561345057600080fd5b600160a060020a038d166000908152600a60205260408120600463ffffffff8e1681900402985090965086955091505b63ffffffff808c16908816116136815763ffffffff80881660009081526009840160205260409020908d16604881106134b557fe5b63ffffffff808a1660009081526009602052604090209290910195508d16604881106134dd57fe5b63ffffffff6017198a01811660009081526009602052604090209290910194508d166048811061350957fe5b015463ffffffff600719890181166000908152600960205260409020604060020a909204811691908e166048811061353d57fe5b015463ffffffff6003198a0181166000908152600960205260409020640100000000909204811691908f166048811061357257fe5b015485546017198b0163ffffffff908116600090815260098801602052604090209281168282166401000000008404831601604060020a909304821692909201919091039290920392909203811696909601958d16604881106135d157fe5b015463ffffffff6007198901811660009081526009850160205260409020604060020a909204811691908e166048811061360757fe5b015463ffffffff6003198a01811660009081526009860160205260409020640100000000909204811691908f166048811061363e57fe5b0154865460019a909a019963ffffffff9182168183166401000000008304841601604060020a909204831691909101039190910391909103169590950194613480565b84600b6000600460ff16600460ff168f63ffffffff168115156136a057fe5b040263ffffffff1663ffffffff1681526020019081526020016000208d63ffffffff166048811015156136cf57fe5b600891828204019190066004029054906101000a900463ffffffff1601896000815181106136f957fe5b9060200190602002019063ffffffff16908163ffffffff168152505085600d60008f600160a060020a0316600160a060020a031681526020019081526020016000206000016000600460ff16600460ff168f63ffffffff1681151561375a57fe5b040263ffffffff1663ffffffff1681526020019081526020016000208d63ffffffff1660488110151561378957fe5b600891828204019190066004029054906101000a900463ffffffff1601886000815181106137b357fe5b63ffffffff9092166020928302909101909101525060018a810196505b8963ffffffff168763ffffffff161015613a415763ffffffff80881660009081526009840160205260409020908d166048811061380957fe5b63ffffffff808a1660009081526009602052604090209290910195508d166048811061383157fe5b63ffffffff6017198a01811660009081526009602052604090209290910194508d166048811061385d57fe5b015463ffffffff600719890181166000908152600960205260409020604060020a909204811691908e166048811061389157fe5b015463ffffffff6003198a0181166000908152600960205260409020640100000000909204811691908f16604881106138c657fe5b0154855463ffffffff91821691604060020a82048116916401000000008104821691908116908f90600019890116815181106138fe57fe5b90602001906020020151010101030303898263ffffffff168151811061392057fe5b63ffffffff92831660209182029092018101919091526017198901821660009081526009850190915260409020908d166048811061395a57fe5b015463ffffffff6007198901811660009081526009850160205260409020604060020a909204811691908e166048811061399057fe5b015463ffffffff6003198a01811660009081526009860160205260409020640100000000909204811691908f16604881106139c757fe5b0154865463ffffffff91821691604060020a82048116916401000000008104821691908116908e90600019890116815181106139ff57fe5b90602001906020020151010101030303888263ffffffff1681518110613a2157fe5b63ffffffff909216602092830290910190910152600196870196016137d0565b50505050505050505050505050565b600080805b8763ffffffff16811015613b1357868181518110613a6f57fe5b9060200190602002015163ffffffff1615801590613aa75750858181518110613a9457fe5b9060200190602002015163ffffffff1615155b15613b0b57868181518110613ab857fe5b9060200190602002015160065463ffffffff9190911690613b059060ff16600a0a888481518110613ae557fe5b9060200190602002015163ffffffff1688811515613aff57fe5b04613b1e565b02820191505b600101613a55565b509695505050505050565b600081831061342b5781610e87565b60606040519081016040526003815b600081526000199091019060200181613b3c5790505090565b815481835581811511613b7957600083815260209020613b79918101908301613b90565b505050565b60206040519081016040526000815290565b613bae91905b80821115613baa5760008155600101613b96565b5090565b905600a165627a7a72305820827523d06695c4c331e8b3fa7bada8812718676f1f4517e398572374541d9a850029

Swarm Source

bzzr://827523d06695c4c331e8b3fa7bada8812718676f1f4517e398572374541d9a85
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward