Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 193 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x35d415bf0e6bbf8e10eba814e10325c46a2cf009at txn 0xa5294c95847deb5dc73c958ba83480061c0ff56d2442a82c686d5c66f710ea0b
Token Balance:
 Latest 25 transactions from a total of 193 transactions

TxHash Age From To Value [TxFee]
0xa9bd3cf714e94ef4c5e9f97654328086b4792ea9d7c8168a9f729cb2ed3bfc5519 days 8 hrs ago0x4c89f8b78ee966ab1bd2d0fd77304b6dd3223e7e  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0 Ether0.0000537072
0x360fa6d4ca028b9ef8c80ab1b10ccc64497beb66d4846a88bf41d5f9ecffc00721 days 6 hrs ago0xdfea4be32b1f777d82a6389a0d4f399569c46202  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.05 Ether0.000103244
0xe2f74ce2b50be5f5eb4e922853cd4834f57e13f9a6c3a9aaa69248bbe8aff7f821 days 7 hrs ago0x43b29a7bc0378fc77f14096fe7801d03eaa2310c  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.000121768
0x8a30a476906df208b3f83fbe9f9c4fc8c5befaf79877790d47091114cb92fdbe21 days 7 hrs ago0x7a5ae7fc64d2bb059258fd41e919c66fec7d7c7f  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.000121768
0x8c77265573a0116be4e830029cc8edee8628c43fd97ff5416e7ed6a011b05a2e21 days 7 hrs ago0x08ff6e7fb9063a11145378fed35c8c96efbbf7c7  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.39 Ether0.000118838
0x25556ceb0283b6099a54a88090ea0d7d9a9dd1834d082bd99eb48d2e30d0ab6621 days 7 hrs ago0x08ff6e7fb9063a11145378fed35c8c96efbbf7c7  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.000121768
0xa8f417a729053bf04a73ffbb863d8b0e73d65554227acde6c0cf6abd2ad111bf21 days 7 hrs ago0x1bcef7c5211e1e2823e4083ca212371f92237ef9  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.000121768
0xd35e322cdd26fc7ab9640b06f40340476868354d31af8fd46215282809db434d21 days 7 hrs ago0x1bcef7c5211e1e2823e4083ca212371f92237ef9  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.000121768
0xc0084364df474b0ce5141f9764fd4b67fe6085a7ecae2ccd4d62ec2f83d2464a21 days 7 hrs ago0xf0bb18303f9adf2b3852926438daf80900f005d0  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.05 Ether0.000103244
0x1841907f25e51051d83676706f4c0af2f69b749a6eebb33be860b4832dc3266521 days 7 hrs ago0x1bcef7c5211e1e2823e4083ca212371f92237ef9  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.39 Ether0.000178257
0x3a172b6e1b4f3c3d504fae54fa30620e32105552c4a4128fa501b363f8ff266621 days 8 hrs ago0xf0bb18303f9adf2b3852926438daf80900f005d0  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.000206043
0xd769afc3a406540d176d3f562a108706532c88898f717701aa2206a8bae300d921 days 8 hrs ago0x1bcef7c5211e1e2823e4083ca212371f92237ef9  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.05 Ether0.000118838
0xac3e34421dbae2a103ea7cae20699f41c9ceaba1f1e25d11b2f919bc7e16e20821 days 8 hrs ago0x04c3924b6aaad6fcc3d131a0a785f78883eaffe7  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.05 Ether0.000129055
0x1337e4beb53ded8e5395ff4cde275671addabe58fd0a551d033a22c862ff616a21 days 8 hrs ago0x985c0a74b9783022e4ad5c75279d2acab9dae96d  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.000182652
0x9061a3754e48f377e83be67d7a3e9bc0c7ee68e7ae662b2c45b180dc19ded6f421 days 8 hrs ago0xc2dd139f769c6c4855f83c814e3d699df3ae2cff  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.000182652
0xccf182b3f850499e83345a29b03c5ce66232d5d7f765c2ee3bda43f40a5d356421 days 8 hrs ago0xc2dd139f769c6c4855f83c814e3d699df3ae2cff  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.05 Ether0.000178257
0x77486a94202dd25c0887afe3e35ac335e401586d197a72b2f13f73152f38628c21 days 9 hrs ago0x2ea6edbca7deb8015b533b18978d068f34eed0a8  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.0001717025
0xf7b8046d865c30d11e73c7d0129493f97a8752c9130b6f10725a03c92f67592e21 days 9 hrs ago0xc2dd139f769c6c4855f83c814e3d699df3ae2cff  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.05 Ether0.000118838
0x24be906c76a0f70bdc20bee0fd48b7adab6e8c5210188ed833bc06b60d8b3fc421 days 10 hrs ago0xba0e95a462905d45e819cdcba3a43b30f778e8cf  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.05 Ether0.000237676
0x3916985cc1a0bf418c5eaaef8e01659f2fbdca17b7a398da2120b1781a00d97c21 days 10 hrs ago0x54e660c3510a6a167433e38a95e3b77149c108e5  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.000365304
0x5ac987819d059ba694e1120d9b1104db3fee9f17ebb03aaca79a2578d3a8236921 days 10 hrs ago0x72b46488cb9c59b2fd5a0d6bd99e008047344b88  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.000137362
0xea076dd1008bba4c612ff7375562c77596fa180aa8dd8e3d26d6c7c20c87ea4321 days 10 hrs ago0x0fdb4d09a6b70f6e32d7fa315b14441fb3aa71cb  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.0001717025
0xa47dea00bd75ddf73726d4d3b6b98860a625efb3ad5034e467307c2ae06df77521 days 10 hrs ago0x72b46488cb9c59b2fd5a0d6bd99e008047344b88  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.0001648344
0x437d95afeec11f70511e41714d6aacb9322455c56e722cf7e462f8485c5e355621 days 10 hrs ago0xc32d8cc52e37684a9977cb231be34a850b63038c  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.009 Ether0.0001648344
0xb795c0172ab70abb7b03bdc6a44e58da791b114ee9e4f625498a2981f83e826a21 days 10 hrs ago0x72b46488cb9c59b2fd5a0d6bd99e008047344b88  IN   0x448e0209610a9064c776ae0255ad71ef49d58d0a0.05 Ether0.000178257
[ 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
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x448e0209610a9064c776ae0255ad71ef49d58d0a0x18099f0105da836e34bb1b6f985dd13b8ef30ccd1 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.39 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.61 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x448e0209610a9064c776ae0255ad71ef49d58d0a0x18099f0105da836e34bb1b6f985dd13b8ef30ccd1 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.39 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.61 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x448e0209610a9064c776ae0255ad71ef49d58d0a0x18099f0105da836e34bb1b6f985dd13b8ef30ccd1 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.39 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.61 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x448e0209610a9064c776ae0255ad71ef49d58d0a0x18099f0105da836e34bb1b6f985dd13b8ef30ccd1 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.39 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.61 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x448e0209610a9064c776ae0255ad71ef49d58d0a0x18099f0105da836e34bb1b6f985dd13b8ef30ccd1 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.39 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.61 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x448e0209610a9064c776ae0255ad71ef49d58d0a0x18099f0105da836e34bb1b6f985dd13b8ef30ccd1 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.39 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.61 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x448e0209610a9064c776ae0255ad71ef49d58d0a0x18099f0105da836e34bb1b6f985dd13b8ef30ccd1 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.39 Ether
0xbbf513bb5822d8c8d211e5d0ee6f658a6c8031b50798cabf0344c4910664b04b697644321 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.61 Ether
0xf3bcd24b71312673d05fdf058cf31ec8ada75163dd6daec6d457d20ec7553f90697642221 days 6 hrs ago0x448e0209610a9064c776ae0255ad71ef49d58d0a0x18099f0105da836e34bb1b6f985dd13b8ef30ccd1 Ether
0xf3bcd24b71312673d05fdf058cf31ec8ada75163dd6daec6d457d20ec7553f90697642221 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.39 Ether
0xf3bcd24b71312673d05fdf058cf31ec8ada75163dd6daec6d457d20ec7553f90697642221 days 6 hrs ago0x18099f0105da836e34bb1b6f985dd13b8ef30ccd0x448e0209610a9064c776ae0255ad71ef49d58d0a0.61 Ether
0xf3bcd24b71312673d05fdf058cf31ec8ada75163dd6daec6d457d20ec7553f90697642221 days 6 hrs ago0x448e0209610a9064c776ae0255ad71ef49d58d0a0x18099f0105da836e34bb1b6f985dd13b8ef30ccd1 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Luckyblock
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

/**
 * @title -luckyblock
 * play a luckyblock : )
 * Contact us for further cooperation [email protected]
 *
 * ██╗      ██╗   ██╗  ██████╗ ██╗  ██╗ ██╗   ██╗ ██████╗  ██╗       ██████╗   ██████╗ ██╗  ██╗
 * ██║      ██║   ██║ ██╔════╝ ██║ ██╔╝ ╚██╗ ██╔╝ ██╔══██╗ ██║      ██╔═══██╗ ██╔════╝ ██║ ██╔╝
 * ██║      ██║   ██║ ██║      █████╔╝   ╚████╔╝  ██████╔╝ ██║      ██║   ██║ ██║      █████╔╝
 * ██║      ██║   ██║ ██║      ██╔═██╗    ╚██╔╝   ██╔══██╗ ██║      ██║   ██║ ██║      ██╔═██╗
 * ███████╗ ╚██████╔╝ ╚██████╗ ██║  ██╗    ██║    ██████╔╝ ███████╗ ╚██████╔╝ ╚██████╗ ██║  ██╗
 * ╚══════╝  ╚═════╝   ╚═════╝ ╚═╝  ╚═╝    ╚═╝    ╚═════╝  ╚══════╝  ╚═════╝   ╚═════╝ ╚═╝  ╚═╝
 *
 * ---
 * POWERED BY
 * ╦   ╔═╗ ╦═╗ ╔╦╗ ╦   ╔═╗ ╔═╗ ╔═╗      ╔╦╗ ╔═╗ ╔═╗ ╔╦╗
 * ║   ║ ║ ╠╦╝  ║║ ║   ║╣  ╚═╗ ╚═╗       ║  ║╣  ╠═╣ ║║║
 * ╩═╝ ╚═╝ ╩╚═ ═╩╝ ╩═╝ ╚═╝ ╚═╝ ╚═╝       ╩  ╚═╝ ╩ ╩ ╩ ╩
 * game at https://game.lordless.io
 * code at https://github.com/lordlessio
 */


// File: node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @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 OwnershipRenounced(address indexed previousOwner);
  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() 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 relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @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 {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

// File: node_modules/zeppelin-solidity/contracts/lifecycle/Pausable.sol

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() public onlyOwner whenNotPaused {
    paused = true;
    emit Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() public onlyOwner whenPaused {
    paused = false;
    emit Unpause();
  }
}

// File: node_modules/zeppelin-solidity/contracts/access/rbac/Roles.sol

/**
 * @title Roles
 * @author Francisco Giordano (@frangio)
 * @dev Library for managing addresses assigned to a Role.
 * See RBAC.sol for example usage.
 */
library Roles {
  struct Role {
    mapping (address => bool) bearer;
  }

  /**
   * @dev give an address access to this role
   */
  function add(Role storage _role, address _addr)
    internal
  {
    _role.bearer[_addr] = true;
  }

  /**
   * @dev remove an address' access to this role
   */
  function remove(Role storage _role, address _addr)
    internal
  {
    _role.bearer[_addr] = false;
  }

  /**
   * @dev check if an address has this role
   * // reverts
   */
  function check(Role storage _role, address _addr)
    internal
    view
  {
    require(has(_role, _addr));
  }

  /**
   * @dev check if an address has this role
   * @return bool
   */
  function has(Role storage _role, address _addr)
    internal
    view
    returns (bool)
  {
    return _role.bearer[_addr];
  }
}

// File: node_modules/zeppelin-solidity/contracts/access/rbac/RBAC.sol

/**
 * @title RBAC (Role-Based Access Control)
 * @author Matt Condon (@Shrugs)
 * @dev Stores and provides setters and getters for roles and addresses.
 * Supports unlimited numbers of roles and addresses.
 * See //contracts/mocks/RBACMock.sol for an example of usage.
 * This RBAC method uses strings to key roles. It may be beneficial
 * for you to write your own implementation of this interface using Enums or similar.
 */
contract RBAC {
  using Roles for Roles.Role;

  mapping (string => Roles.Role) private roles;

  event RoleAdded(address indexed operator, string role);
  event RoleRemoved(address indexed operator, string role);

  /**
   * @dev reverts if addr does not have role
   * @param _operator address
   * @param _role the name of the role
   * // reverts
   */
  function checkRole(address _operator, string _role)
    public
    view
  {
    roles[_role].check(_operator);
  }

  /**
   * @dev determine if addr has role
   * @param _operator address
   * @param _role the name of the role
   * @return bool
   */
  function hasRole(address _operator, string _role)
    public
    view
    returns (bool)
  {
    return roles[_role].has(_operator);
  }

  /**
   * @dev add a role to an address
   * @param _operator address
   * @param _role the name of the role
   */
  function addRole(address _operator, string _role)
    internal
  {
    roles[_role].add(_operator);
    emit RoleAdded(_operator, _role);
  }

  /**
   * @dev remove a role from an address
   * @param _operator address
   * @param _role the name of the role
   */
  function removeRole(address _operator, string _role)
    internal
  {
    roles[_role].remove(_operator);
    emit RoleRemoved(_operator, _role);
  }

  /**
   * @dev modifier to scope access to a single role (uses msg.sender as addr)
   * @param _role the name of the role
   * // reverts
   */
  modifier onlyRole(string _role)
  {
    checkRole(msg.sender, _role);
    _;
  }

  /**
   * @dev modifier to scope access to a set of roles (uses msg.sender as addr)
   * @param _roles the names of the roles to scope access to
   * // reverts
   *
   * @TODO - when solidity supports dynamic arrays as arguments to modifiers, provide this
   *  see: https://github.com/ethereum/solidity/issues/2467
   */
  // modifier onlyRoles(string[] _roles) {
  //     bool hasAnyRole = false;
  //     for (uint8 i = 0; i < _roles.length; i++) {
  //         if (hasRole(msg.sender, _roles[i])) {
  //             hasAnyRole = true;
  //             break;
  //         }
  //     }

  //     require(hasAnyRole);

  //     _;
  // }
}

// File: node_modules/zeppelin-solidity/contracts/ownership/Superuser.sol

/**
 * @title Superuser
 * @dev The Superuser contract defines a single superuser who can transfer the ownership
 * of a contract to a new address, even if he is not the owner.
 * A superuser can transfer his role to a new address.
 */
contract Superuser is Ownable, RBAC {
  string public constant ROLE_SUPERUSER = "superuser";

  constructor () public {
    addRole(msg.sender, ROLE_SUPERUSER);
  }

  /**
   * @dev Throws if called by any account that's not a superuser.
   */
  modifier onlySuperuser() {
    checkRole(msg.sender, ROLE_SUPERUSER);
    _;
  }

  modifier onlyOwnerOrSuperuser() {
    require(msg.sender == owner || isSuperuser(msg.sender));
    _;
  }

  /**
   * @dev getter to determine if address has superuser role
   */
  function isSuperuser(address _addr)
    public
    view
    returns (bool)
  {
    return hasRole(_addr, ROLE_SUPERUSER);
  }

  /**
   * @dev Allows the current superuser to transfer his role to a newSuperuser.
   * @param _newSuperuser The address to transfer ownership to.
   */
  function transferSuperuser(address _newSuperuser) public onlySuperuser {
    require(_newSuperuser != address(0));
    removeRole(msg.sender, ROLE_SUPERUSER);
    addRole(_newSuperuser, ROLE_SUPERUSER);
  }

  /**
   * @dev Allows the current superuser or owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwnerOrSuperuser {
    _transferOwnership(_newOwner);
  }
}

// File: contracts/lib/SafeMath.sol

/**
 * @title SafeMath
 */
library SafeMath {
  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) 
      internal 
      pure 
      returns (uint256 c) 
  {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    require(c / a == b, "SafeMath mul failed");
    return c;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b)
      internal
      pure
      returns (uint256) 
  {
    require(b <= a, "SafeMath sub failed");
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b)
      internal
      pure
      returns (uint256 c) 
  {
    c = a + b;
    require(c >= a, "SafeMath add failed");
    return c;
  }
  
  /**
    * @dev gives square root of given x.
    */
  function sqrt(uint256 x)
      internal
      pure
      returns (uint256 y) 
  {
    uint256 z = ((add(x,1)) / 2);
    y = x;
    while (z < y) 
    {
      y = z;
      z = ((add((x / z),z)) / 2);
    }
  }
  
  /**
    * @dev gives square. batchplies x by x
    */
  function sq(uint256 x)
      internal
      pure
      returns (uint256)
  {
    return (mul(x,x));
  }
  
  /**
    * @dev x to the power of y 
    */
  function pwr(uint256 x, uint256 y)
      internal 
      pure 
      returns (uint256)
  {
    if (x==0)
        return (0);
    else if (y==0)
        return (1);
    else 
    {
      uint256 z = x;
      for (uint256 i=1; i < y; i++)
        z = mul(z,x);
      return (z);
    }
  }
}

// File: contracts/luckyblock/ILuckyblock.sol

/**
 * @title -luckyblock Interface
 */

interface ILuckyblock{

  function getLuckyblockSpend(
    bytes32 luckyblockId
  ) external view returns (
    address[],
    uint256[],
    uint256
  ); 

  function getLuckyblockEarn(
    bytes32 luckyblockId
    ) external view returns (
    address[],
    uint256[],
    int[],
    uint256,
    int
  );

  function getLuckyblockBase(
    bytes32 luckyblockId
    ) external view returns (
      bool
  );

  function addLuckyblock(uint256 seed) external;

  function start(
    bytes32 luckyblockId
  ) external;

  function stop(
    bytes32 luckyblockId
  ) external;

  function updateLuckyblockSpend(
    bytes32 luckyblockId,
    address[] spendTokenAddresses, 
    uint256[] spendTokenCount,
    uint256 spendEtherCount
  ) external;

  function updateLuckyblockEarn (
    bytes32 luckyblockId,
    address[] earnTokenAddresses,
    uint256[] earnTokenCount,
    int[] earnTokenProbability, // (0 - 100)
    uint256 earnEtherCount,
    int earnEtherProbability
  ) external;

  function getLuckyblockIds()external view returns(bytes32[]);
  function play(bytes32 luckyblockId) external payable;
  function withdrawToken(address contractAddress, address to, uint256 balance) external;
  function withdrawEth(address to, uint256 balance) external;

  
  

  /* Events */

  event Play (
    bytes32 indexed luckyblockId,
    address user,
    uint8 random
  );

  event WithdrawToken (
    address indexed contractAddress,
    address to,
    uint256 count
  );

  event WithdrawEth (
    address to,
    uint256 count
  );

  event Pay (
    address from,
    uint256 value
  );
}

// File: contracts/luckyblock/Luckyblock.sol




contract ERC20Interface {
  function transfer(address to, uint tokens) public returns (bool);
  function transferFrom(address from, address to, uint tokens) public returns (bool);
  function balanceOf(address tokenOwner) public view returns (uint256);
  function allowance(address tokenOwner, address spender) public view returns (uint);
}
contract Luckyblock is Superuser, Pausable, ILuckyblock {

  using SafeMath for *;

  struct User {
    address user;
    string name;
    uint256 verifytime;
    uint256 verifyFee;
  }

  struct LuckyblockBase {
    bool ended;
  }

  struct LuckyblockSpend {
    address[] spendTokenAddresses;
    uint256[] spendTokenCount;
    uint256 spendEtherCount;
  }

  struct LuckyblockEarn {
    address[] earnTokenAddresses;
    uint256[] earnTokenCount;
    int[] earnTokenProbability; // (0 - 100)
    uint256 earnEtherCount;
    int earnEtherProbability;
  }

  bytes32[] public luckyblockIds; //

  mapping (address => bytes32[]) contractAddressToLuckyblockId;

  mapping (bytes32 => LuckyblockEarn) luckyblockIdToLuckyblockEarn;
  mapping (bytes32 => LuckyblockSpend) luckyblockIdToLuckyblockSpend;
  mapping (bytes32 => LuckyblockBase) luckyblockIdToLuckyblockBase;


  mapping (bytes32 => mapping (address => bool)) luckyblockIdToUserAddress;
  mapping (address => uint256) contractAddressToLuckyblockCount;

  function () public payable {
    emit Pay(msg.sender, msg.value);
  }

  function getLuckyblockIds()external view returns(bytes32[]){
    return luckyblockIds;
  }

  function getLuckyblockSpend(
    bytes32 luckyblockId
    ) external view returns (
      address[],
      uint256[],
      uint256
    ) {
    LuckyblockSpend storage _luckyblockSpend = luckyblockIdToLuckyblockSpend[luckyblockId];
    return (
      _luckyblockSpend.spendTokenAddresses,
      _luckyblockSpend.spendTokenCount,
      _luckyblockSpend.spendEtherCount
      );
  }

  function getLuckyblockEarn(
    bytes32 luckyblockId
    ) external view returns (
      address[],
      uint256[],
      int[],
      uint256,
      int
    ) {
    LuckyblockEarn storage _luckyblockEarn = luckyblockIdToLuckyblockEarn[luckyblockId];
    return (
      _luckyblockEarn.earnTokenAddresses,
      _luckyblockEarn.earnTokenCount,
      _luckyblockEarn.earnTokenProbability,
      _luckyblockEarn.earnEtherCount,
      _luckyblockEarn.earnEtherProbability
      );
  }

  function getLuckyblockBase(
    bytes32 luckyblockId
    ) external view returns (
      bool
    ) {
    LuckyblockBase storage _luckyblockBase = luckyblockIdToLuckyblockBase[luckyblockId];
    return (
      _luckyblockBase.ended
      );
  }
  
  function addLuckyblock(uint256 seed) external onlyOwnerOrSuperuser {
    bytes32 luckyblockId = keccak256(
      abi.encodePacked(block.timestamp, seed)
    );
    LuckyblockBase memory _luckyblockBase = LuckyblockBase(
      false
    );
    luckyblockIds.push(luckyblockId);
    luckyblockIdToLuckyblockBase[luckyblockId] = _luckyblockBase;
  }

  function start(bytes32 luckyblockId) external{
    LuckyblockBase storage _luckyblockBase = luckyblockIdToLuckyblockBase[luckyblockId];
    _luckyblockBase.ended = false;
    luckyblockIdToLuckyblockBase[luckyblockId] = _luckyblockBase;
  }

  function stop(bytes32 luckyblockId) external{
    LuckyblockBase storage _luckyblockBase = luckyblockIdToLuckyblockBase[luckyblockId];
    _luckyblockBase.ended = true;
    luckyblockIdToLuckyblockBase[luckyblockId] = _luckyblockBase;
  }

  function updateLuckyblockSpend (
    bytes32 luckyblockId,
    address[] spendTokenAddresses, 
    uint256[] spendTokenCount,
    uint256 spendEtherCount
    ) external onlyOwnerOrSuperuser {
    LuckyblockSpend memory _luckyblockSpend = LuckyblockSpend(
      spendTokenAddresses,
      spendTokenCount,
      spendEtherCount
    );
    luckyblockIdToLuckyblockSpend[luckyblockId] = _luckyblockSpend;
  }

  function updateLuckyblockEarn (
    bytes32 luckyblockId,
    address[] earnTokenAddresses,
    uint256[] earnTokenCount,
    int[] earnTokenProbability, // (0 - 100)
    uint256 earnEtherCount,
    int earnEtherProbability
    ) external onlyOwnerOrSuperuser {
    LuckyblockEarn memory _luckyblockEarn = LuckyblockEarn(
      earnTokenAddresses,
      earnTokenCount,
      earnTokenProbability, // (0 - 100)
      earnEtherCount,
      earnEtherProbability
    );
    luckyblockIdToLuckyblockEarn[luckyblockId] = _luckyblockEarn;
  }


  function play(bytes32 luckyblockId) external payable whenNotPaused {
    LuckyblockBase storage _luckyblockBase = luckyblockIdToLuckyblockBase[luckyblockId];
    LuckyblockSpend storage _luckyblockSpend = luckyblockIdToLuckyblockSpend[luckyblockId];
    LuckyblockEarn storage _luckyblockEarn = luckyblockIdToLuckyblockEarn[luckyblockId];
    
    require(!_luckyblockBase.ended, "luckyblock is ended");

    // check sender's ether balance 
    require(msg.value >= _luckyblockSpend.spendEtherCount, "sender value not enough");

    // check spend
    if (_luckyblockSpend.spendTokenAddresses[0] != address(0x0)) {
      for (uint8 i = 0; i < _luckyblockSpend.spendTokenAddresses.length; i++) {

        // check sender's erc20 balance 
        require(
          ERC20Interface(
            _luckyblockSpend.spendTokenAddresses[i]
          ).balanceOf(address(msg.sender)) >= _luckyblockSpend.spendTokenCount[i]
        );

        require(
          ERC20Interface(
            _luckyblockSpend.spendTokenAddresses[i]
          ).allowance(address(msg.sender), address(this)) >= _luckyblockSpend.spendTokenCount[i]
        );

        // transfer erc20 token
        ERC20Interface(_luckyblockSpend.spendTokenAddresses[i])
          .transferFrom(msg.sender, address(this), _luckyblockSpend.spendTokenCount[i]);
        }
    }
    
    // check earn erc20
    if (_luckyblockEarn.earnTokenAddresses[0] !=
      address(0x0)) {
      for (uint8 j= 0; j < _luckyblockEarn.earnTokenAddresses.length; j++) {
        // check sender's erc20 balance 
        uint256 earnTokenCount = _luckyblockEarn.earnTokenCount[j];
        require(
          ERC20Interface(_luckyblockEarn.earnTokenAddresses[j])
          .balanceOf(address(this)) >= earnTokenCount
        );
      }
    }
    
    // check earn ether
    require(address(this).balance >= _luckyblockEarn.earnEtherCount, "contract value not enough");

    // do a random
    uint8 _random = random();

    // earn erc20
    for (uint8 k = 0; k < _luckyblockEarn.earnTokenAddresses.length; k++){
      // if win erc20
      if (_luckyblockEarn.earnTokenAddresses[0] 
        != address(0x0)){
        if (_random + _luckyblockEarn.earnTokenProbability[k] >= 100) {
          ERC20Interface(_luckyblockEarn.earnTokenAddresses[k])
            .transfer(msg.sender, _luckyblockEarn.earnTokenCount[k]);
        }
      }
    }
    uint256 value = msg.value;
    uint256 payExcess = value.sub(_luckyblockSpend.spendEtherCount);
    
    // if win ether
    if (_random + _luckyblockEarn.earnEtherProbability >= 100) {
      uint256 balance = _luckyblockEarn.earnEtherCount.add(payExcess);
      if (balance > 0){
        msg.sender.transfer(balance);
      }
    } else if (payExcess > 0) {
      msg.sender.transfer(payExcess);
    }
    
    emit Play(luckyblockId, msg.sender, _random);
  }

  function withdrawToken(address contractAddress, address to, uint256 balance)
    external onlyOwnerOrSuperuser {
    ERC20Interface erc20 = ERC20Interface(contractAddress);
    if (balance == uint256(0x0)){
      erc20.transfer(to, erc20.balanceOf(address(this)));
      emit WithdrawToken(contractAddress, to, erc20.balanceOf(address(this)));
    } else {
      erc20.transfer(to, balance);
      emit WithdrawToken(contractAddress, to, balance);
    }
  }

  function withdrawEth(address to, uint256 balance) external onlySuperuser {
    if (balance == uint256(0x0)) {
      to.transfer(address(this).balance);
      emit WithdrawEth(to, address(this).balance);
    } else {
      to.transfer(balance);
      emit WithdrawEth(to, balance);
    }
  }

  function random() private view returns (uint8) {
    return uint8(uint256(keccak256(block.timestamp, block.difficulty))%100); // random 0-99
  }

}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"luckyblockId","type":"bytes32"}],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"contractAddress","type":"address"},{"name":"to","type":"address"},{"name":"balance","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getLuckyblockIds","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"},{"name":"_role","type":"string"}],"name":"checkRole","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"luckyblockId","type":"bytes32"}],"name":"getLuckyblockSpend","outputs":[{"name":"","type":"address[]"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"luckyblockIds","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"balance","type":"uint256"}],"name":"withdrawEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"},{"name":"_role","type":"string"}],"name":"hasRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"luckyblockId","type":"bytes32"},{"name":"earnTokenAddresses","type":"address[]"},{"name":"earnTokenCount","type":"uint256[]"},{"name":"earnTokenProbability","type":"int256[]"},{"name":"earnEtherCount","type":"uint256"},{"name":"earnEtherProbability","type":"int256"}],"name":"updateLuckyblockEarn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newSuperuser","type":"address"}],"name":"transferSuperuser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"luckyblockId","type":"bytes32"},{"name":"spendTokenAddresses","type":"address[]"},{"name":"spendTokenCount","type":"uint256[]"},{"name":"spendEtherCount","type":"uint256"}],"name":"updateLuckyblockSpend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"luckyblockId","type":"bytes32"}],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"luckyblockId","type":"bytes32"}],"name":"getLuckyblockEarn","outputs":[{"name":"","type":"address[]"},{"name":"","type":"uint256[]"},{"name":"","type":"int256[]"},{"name":"","type":"uint256"},{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isSuperuser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"seed","type":"uint256"}],"name":"addLuckyblock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"luckyblockId","type":"bytes32"}],"name":"play","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"luckyblockId","type":"bytes32"}],"name":"getLuckyblockBase","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ROLE_SUPERUSER","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"luckyblockId","type":"bytes32"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"random","type":"uint8"}],"name":"Play","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"contractAddress","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"count","type":"uint256"}],"name":"WithdrawToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"count","type":"uint256"}],"name":"WithdrawEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Pay","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6002805460ff1916905560008054600160a060020a0319163390811790915560c0604052600960809081527f737570657275736572000000000000000000000000000000000000000000000060a05262000063919064010000000062000069810204565b620001b4565b620000e5826001836040518082805190602001908083835b60208310620000a25780518252601f19909201916020918201910162000081565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506401000000006200018f810262001ffb1704565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200015057818101518382015260200162000136565b50505050905090810190601f1680156200017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6121d480620001c46000396000f3006080604052600436106101245763ffffffff60e060020a600035041663015a18ed811461016057806301e336671461017a57806306e232c4146101a45780630988ca8c146102095780630bbdb4691461027057806310c5a247146103285780631b9a91a414610352578063217fe6c6146103765780633ccd09af146103f15780633f4ba83a1461043357806357c393fa146104485780635b7dc56a146104695780635c975abb1461049c57806363c4f031146104b1578063715018a6146104c957806371a4dc5e146104de5780638456cb59146105e25780638da5cb5b146105f7578063bceee05e14610628578063bd7173dd14610649578063c7a1865b14610661578063d09375981461066c578063ebb4f48414610684578063f2fde38b1461070e575b6040805133815234602082015281517f357b676c439b9e49b4410f8eb8680bee4223724802d8e3fd422e1756f87b475f929181900390910190a1005b34801561016c57600080fd5b5061017860043561072f565b005b34801561018657600080fd5b50610178600160a060020a0360043581169060243516604435610747565b3480156101b057600080fd5b506101b9610a16565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101f55781810151838201526020016101dd565b505050509050019250505060405180910390f35b34801561021557600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610178958335600160a060020a0316953695604494919390910191908190840183828082843750949750610a709650505050505050565b34801561027c57600080fd5b50610288600435610ade565b604051808060200180602001848152602001838103835286818151815260200191508051906020019060200280838360005b838110156102d25781810151838201526020016102ba565b50505050905001838103825285818151815260200191508051906020019060200280838360005b838110156103115781810151838201526020016102f9565b505050509050019550505050505060405180910390f35b34801561033457600080fd5b50610340600435610bb8565b60408051918252519081900360200190f35b34801561035e57600080fd5b50610178600160a060020a0360043516602435610bd7565b34801561038257600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103dd958335600160a060020a0316953695604494919390910191908190840183828082843750949750610d0a9650505050505050565b604080519115158252519081900360200190f35b3480156103fd57600080fd5b5061017860048035906024803580820192908101359160443580820192908101359160643590810191013560843560a435610d7d565b34801561043f57600080fd5b50610178610ee2565b34801561045457600080fd5b50610178600160a060020a0360043516610f3f565b34801561047557600080fd5b50610178600480359060248035808201929081013591604435908101910135606435610fde565b3480156104a857600080fd5b506103dd6110de565b3480156104bd57600080fd5b506101786004356110e7565b3480156104d557600080fd5b5061017861110d565b3480156104ea57600080fd5b506104f6600435611179565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019060200280838360005b8381101561054a578181015183820152602001610532565b50505050905001848103835288818151815260200191508051906020019060200280838360005b83811015610589578181015183820152602001610571565b50505050905001848103825287818151815260200191508051906020019060200280838360005b838110156105c85781810151838201526020016105b0565b505050509050019850505050505050505060405180910390f35b3480156105ee57600080fd5b506101786112ba565b34801561060357600080fd5b5061060c611319565b60408051600160a060020a039092168252519081900360200190f35b34801561063457600080fd5b506103dd600160a060020a0360043516611328565b34801561065557600080fd5b5061017860043561135d565b61017860043561146a565b34801561067857600080fd5b506103dd600435611c00565b34801561069057600080fd5b50610699611c15565b6040805160208082528351818301528351919283929083019185019080838360005b838110156106d35781810151838201526020016106bb565b50505050905090810190601f1680156107005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561071a57600080fd5b50610178600160a060020a0360043516611c3a565b6000908152600760205260409020805460ff19169055565b60008054600160a060020a0316331480610765575061076533611328565b151561077057600080fd5b508281151561093a576040805160e060020a6370a082310281523060048201529051600160a060020a0383169163a9059cbb91869184916370a08231916024808201926020929091908290030181600087803b1580156107cf57600080fd5b505af11580156107e3573d6000803e3d6000fd5b505050506040513d60208110156107f957600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561084857600080fd5b505af115801561085c573d6000803e3d6000fd5b505050506040513d602081101561087257600080fd5b50506040805160e060020a6370a082310281523060048201529051600160a060020a03808716927f037238854fe57fbf51f09946f854fc3916fe83938d6521f09bd05463839f13049287928616916370a082319160248083019260209291908290030181600087803b1580156108e757600080fd5b505af11580156108fb573d6000803e3d6000fd5b505050506040513d602081101561091157600080fd5b505160408051600160a060020a03909316835260208301919091528051918290030190a2610a10565b80600160a060020a031663a9059cbb84846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561099d57600080fd5b505af11580156109b1573d6000803e3d6000fd5b505050506040513d60208110156109c757600080fd5b505060408051600160a060020a038581168252602082018590528251908716927f037238854fe57fbf51f09946f854fc3916fe83938d6521f09bd05463839f1304928290030190a25b50505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610a6557602002820191906000526020600020905b81548152600190910190602001808311610a50575b505050505090505b90565b610ada826001836040518082805190602001908083835b60208310610aa65780518252601f199092019160209182019101610a87565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611c6b565b5050565b60008181526006602090815260408083206002810154815483518186028101860190945280845260609586959094849360018501939092859190830182828015610b5157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b33575b5050505050925081805480602002602001604051908101604052809291908181526020018280548015610ba357602002820191906000526020600020905b815481526020019060010190808311610b8f575b50505050509150935093509350509193909250565b6003805482908110610bc657fe5b600091825260209091200154905081565b610c0433604080519081016040528060098152602001600080516020612189833981519152815250610a70565b801515610c8b57604051600160a060020a03831690303180156108fc02916000818181858888f19350505050158015610c41573d6000803e3d6000fd5b5060408051600160a060020a03841681523031602082015281517fccbd99ba6da8f29b2a4f65e474e3c3973564d356c162c08d45f3dc7f0cb5b3aa929181900390910190a1610ada565b604051600160a060020a0383169082156108fc029083906000818181858888f19350505050158015610cc1573d6000803e3d6000fd5b5060408051600160a060020a03841681526020810183905281517fccbd99ba6da8f29b2a4f65e474e3c3973564d356c162c08d45f3dc7f0cb5b3aa929181900390910190a15050565b6000610d76836001846040518082805190602001908083835b60208310610d425780518252601f199092019160209182019101610d23565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611c80565b9392505050565b610d85612020565b600054600160a060020a0316331480610da25750610da233611328565b1515610dad57600080fd5b60a0604051908101604052808a8a80806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050815260200188888080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505081526020018686808060200260200160405190810160405280939291908181526020018383602002808284375050509284525050506020808201869052604091820185905260008d815260058252919091208251805193945084939192610e8a92849290910190612050565b506020828101518051610ea392600185019201906120c2565b5060408201518051610ebf9160028401916020909101906120c2565b506060820151600382015560809091015160049091015550505050505050505050565b600054600160a060020a03163314610ef957600080fd5b60025460ff161515610f0a57600080fd5b6002805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b610f6c33604080519081016040528060098152602001600080516020612189833981519152815250610a70565b600160a060020a0381161515610f8157600080fd5b610fae33604080519081016040528060098152602001600080516020612189833981519152815250611c9f565b610fdb81604080519081016040528060098152602001600080516020612189833981519152815250611db0565b50565b610fe6612109565b600054600160a060020a0316331480611003575061100333611328565b151561100e57600080fd5b606060405190810160405280878780806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050815260200185858080602002602001604051908101604052809392919081815260200183836020028082843750505092845250505060209081018490526000898152600682526040902082518051939450849391926110ae92849290910190612050565b5060208281015180516110c792600185019201906120c2565b506040820151816002015590505050505050505050565b60025460ff1681565b6000908152600760205260409020805460ff1990811660011760ff811615159116179055565b600054600160a060020a0316331461112457600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600081815260056020908152604080832060038101546004820154825484518187028101870190955280855260609687968796919586959094859460018601946002870194909187918301828280156111fb57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116111dd575b505050505094508380548060200260200160405190810160405280929190818152602001828054801561124d57602002820191906000526020600020905b815481526020019060010190808311611239575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561129f57602002820191906000526020600020905b81548152602001906001019080831161128b575b50505050509250955095509550955095505091939590929450565b600054600160a060020a031633146112d157600080fd5b60025460ff16156112e157600080fd5b6002805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600054600160a060020a031681565b600061135782604080519081016040528060098152602001600080516020612189833981519152815250610d0a565b92915050565b600061136761212b565b600054600160a060020a0316331480611384575061138433611328565b151561138f57600080fd5b428360405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b602083106113e65780518252601f1990920191602091820191016113c7565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208282018552600080845260038054600181019091557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018290559081526007909152929092209151825460ff191690151517909155505050505050565b6000806000806000806000806000806000600260009054906101000a900460ff1615151561149757600080fd5b60008c815260076020908152604080832060068352818420600590935292208254929d50909b50995060ff1615611518576040805160e560020a62461bcd02815260206004820152601360248201527f6c75636b79626c6f636b20697320656e64656400000000000000000000000000604482015290519081900360640190fd5b60028a0154341015611574576040805160e560020a62461bcd02815260206004820152601760248201527f73656e6465722076616c7565206e6f7420656e6f756768000000000000000000604482015290519081900360640190fd5b89546000908b908290811061158557fe5b600091825260209091200154600160a060020a03161461184657600097505b895460ff891610156118465760018a01805460ff8a169081106115c357fe5b90600052602060002001548a6000018960ff168154811015156115e257fe5b60009182526020808320909101546040805160e060020a6370a082310281523360048201529051600160a060020a03909216936370a082319360248084019491939192918390030190829087803b15801561163c57600080fd5b505af1158015611650573d6000803e3d6000fd5b505050506040513d602081101561166657600080fd5b5051101561167357600080fd5b60018a01805460ff8a1690811061168657fe5b90600052602060002001548a6000018960ff168154811015156116a557fe5b6000918252602080832090910154604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600160a060020a039092169363dd62ed3e9360448084019491939192918390030190829087803b15801561171b57600080fd5b505af115801561172f573d6000803e3d6000fd5b505050506040513d602081101561174557600080fd5b5051101561175257600080fd5b89548a9060ff8a1690811061176357fe5b60009182526020909120015460018b018054600160a060020a03909216916323b872dd91339130919060ff8e1690811061179957fe5b90600052602060002001546040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050602060405180830381600087803b15801561180f57600080fd5b505af1158015611823573d6000803e3d6000fd5b505050506040513d602081101561183957600080fd5b50506001909701966115a4565b88546000908a908290811061185757fe5b600091825260209091200154600160a060020a03161461195357600096505b885460ff881610156119535760018901805460ff891690811061189557fe5b9060005260206000200154955085896000018860ff168154811015156118b757fe5b60009182526020808320909101546040805160e060020a6370a082310281523060048201529051600160a060020a03909216936370a082319360248084019491939192918390030190829087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506040513d602081101561193b57600080fd5b5051101561194857600080fd5b600190960195611876565b6003890154303110156119b0576040805160e560020a62461bcd02815260206004820152601960248201527f636f6e74726163742076616c7565206e6f7420656e6f75676800000000000000604482015290519081900360640190fd5b6119b8611e82565b9450600093505b885460ff85161015611afc5788546000908a90829081106119dc57fe5b600091825260209091200154600160a060020a031614611af1576064896002018560ff16815481101515611a0c57fe5b90600052602060002001548660ff1601121515611af1578854899060ff8616908110611a3457fe5b60009182526020909120015460018a018054600160a060020a039092169163a9059cbb91339160ff8916908110611a6757fe5b90600052602060002001546040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015611ac457600080fd5b505af1158015611ad8573d6000803e3d6000fd5b505050506040513d6020811015611aee57600080fd5b50505b6001909301926119bf565b60028a0154349350611b1590849063ffffffff611ea116565b9150606489600401548660ff1601121515611b7e576003890154611b3f908363ffffffff611f0116565b90506000811115611b7957604051339082156108fc029083906000818181858888f19350505050158015611b77573d6000803e3d6000fd5b505b611bb6565b6000821115611bb657604051339083156108fc029084906000818181858888f19350505050158015611bb4573d6000803e3d6000fd5b505b6040805133815260ff8716602082015281518e927f1009100be547b15253a834b07028268987e77a9111d95d8c973ffdc19a374604928290030190a2505050505050505050505050565b60009081526007602052604090205460ff1690565b6040805180820190915260098152600080516020612189833981519152602082015281565b600054600160a060020a0316331480611c575750611c5733611328565b1515611c6257600080fd5b610fdb81611f5c565b611c758282611c80565b1515610ada57600080fd5b600160a060020a03166000908152602091909152604090205460ff1690565b611d09826001836040518082805190602001908083835b60208310611cd55780518252601f199092019160209182019101611cb6565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611fd9565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b83811015611d72578181015183820152602001611d5a565b50505050905090810190601f168015611d9f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b611e1a826001836040518082805190602001908083835b60208310611de65780518252601f199092019160209182019101611dc7565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611ffb565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b7004898260405180806020018281038252838181518152602001915080519060200190808383600083811015611d72578181015183820152602001611d5a565b6040805142815244602082015281519081900390910190206064900690565b600082821115611efb576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b81810182811015611357576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515611f7157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b60a06040519081016040528060608152602001606081526020016060815260200160008152602001600081525090565b8280548282559060005260206000209081019282156120b2579160200282015b828111156120b2578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909116178255602090920191600190910190612070565b506120be92915061213d565b5090565b8280548282559060005260206000209081019282156120fd579160200282015b828111156120fd5782518255916020019190600101906120e2565b506120be92915061216e565b6060604051908101604052806060815260200160608152602001600081525090565b60408051602081019091526000815290565b610a6d91905b808211156120be57805473ffffffffffffffffffffffffffffffffffffffff19168155600101612143565b610a6d91905b808211156120be576000815560010161217456007375706572757365720000000000000000000000000000000000000000000000a165627a7a723058200f4740bec48ec1a0809a8c9cbd414987e450f1b490a4cd00df6c11902d7ae0e20029

   Swarm Source:
bzzr://0f4740bec48ec1a0809a8c9cbd414987e450f1b490a4cd00df6c11902d7ae0e2

 

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