ETH Price: $3,481.53 (-6.20%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Create Avatar64608292018-10-05 23:50:282285 days ago1538783428IN
0xbEaD01bD...451c1fF91
0 ETH0.000008070.1
Create Avatar62459592018-08-31 10:03:492321 days ago1535709829IN
0xbEaD01bD...451c1fF91
0 ETH0.000867714
Create Avatar62431032018-08-30 22:35:342321 days ago1535668534IN
0xbEaD01bD...451c1fF91
0 ETH0.000502652.3
Create Avatar62426842018-08-30 20:59:222321 days ago1535662762IN
0xbEaD01bD...451c1fF91
0 ETH0.000517042.4
Create Avatar62421822018-08-30 18:56:252321 days ago1535655385IN
0xbEaD01bD...451c1fF91
0 ETH0.000544232.5
Create Avatar62421692018-08-30 18:54:102321 days ago1535655250IN
0xbEaD01bD...451c1fF91
0 ETH0.000568062.6
Create Avatar62346122018-08-29 12:17:082323 days ago1535545028IN
0xbEaD01bD...451c1fF91
0 ETH0.000491982.25
Create Avatar62317832018-08-29 0:33:272323 days ago1535502807IN
0xbEaD01bD...451c1fF91
0 ETH0.000431822
Create Avatar62286622018-08-28 12:00:192324 days ago1535457619IN
0xbEaD01bD...451c1fF91
0 ETH0.000872484
Create Avatar62260922018-08-28 1:27:572324 days ago1535419677IN
0xbEaD01bD...451c1fF91
0 ETH0.000674843.1
Create Avatar62254072018-08-27 22:33:412324 days ago1535409221IN
0xbEaD01bD...451c1fF91
0 ETH0.000431822
Create Avatar62231232018-08-27 13:31:062325 days ago1535376666IN
0xbEaD01bD...451c1fF91
0 ETH0.000655973
Create Avatar62196922018-08-26 23:30:142325 days ago1535326214IN
0xbEaD01bD...451c1fF91
0 ETH0.000053371.8
Create Avatar62196922018-08-26 23:30:142325 days ago1535326214IN
0xbEaD01bD...451c1fF91
0 ETH0.000430742
Create Avatar62188512018-08-26 20:03:272325 days ago1535313807IN
0xbEaD01bD...451c1fF91
0 ETH0.000430742
Create Avatar62175522018-08-26 14:57:362326 days ago1535295456IN
0xbEaD01bD...451c1fF91
0 ETH0.001084355
Create Avatar62174832018-08-26 14:40:492326 days ago1535294449IN
0xbEaD01bD...451c1fF91
0 ETH0.000714093.3
Create Avatar62117112018-08-25 15:34:542327 days ago1535211294IN
0xbEaD01bD...451c1fF91
0 ETH0.000622112.875
Create Avatar62059252018-08-24 15:53:342328 days ago1535126014IN
0xbEaD01bD...451c1fF91
0 ETH0.0021537210
Create Avatar62042682018-08-24 9:21:212328 days ago1535102481IN
0xbEaD01bD...451c1fF91
0 ETH0.000476462.2
Create Avatar62017032018-08-23 22:55:512328 days ago1535064951IN
0xbEaD01bD...451c1fF91
0 ETH0.00045632.1
Create Avatar62014932018-08-23 21:58:362328 days ago1535061516IN
0xbEaD01bD...451c1fF91
0 ETH0.000454822.1
Create Avatar61973842018-08-23 4:58:302329 days ago1535000310IN
0xbEaD01bD...451c1fF91
0 ETH0.000429552
Create Avatar61946352018-08-22 17:51:392329 days ago1534960299IN
0xbEaD01bD...451c1fF91
0 ETH0.000650243
Create Avatar61932622018-08-22 12:16:252330 days ago1534940185IN
0xbEaD01bD...451c1fF91
0 ETH0.000621942.875
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AvatarOperator

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-07-30
*/

pragma solidity ^0.4.24;

interface ERC721 /* is ERC165 */ {
    /// @dev This emits when ownership of any NFT changes by any mechanism.
    ///  This event emits when NFTs are created (`from` == 0) and destroyed
    ///  (`to` == 0). Exception: during contract creation, any number of NFTs
    ///  may be created and assigned without emitting Transfer. At the time of
    ///  any transfer, the approved address for that NFT (if any) is reset to none.
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);

    /// @dev This emits when the approved address for an NFT is changed or
    ///  reaffirmed. The zero address indicates there is no approved address.
    ///  When a Transfer event emits, this also indicates that the approved
    ///  address for that NFT (if any) is reset to none.
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);

    /// @dev This emits when an operator is enabled or disabled for an owner.
    ///  The operator can manage all NFTs of the owner.
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    /// @notice Count all NFTs assigned to an owner
    /// @dev NFTs assigned to the zero address are considered invalid, and this
    ///  function throws for queries about the zero address.
    /// @param _owner An address for whom to query the balance
    /// @return The number of NFTs owned by `_owner`, possibly zero
    function balanceOf(address _owner) external view returns (uint256);

    /// @notice Find the owner of an NFT
    /// @dev NFTs assigned to zero address are considered invalid, and queries
    ///  about them do throw.
    /// @param _tokenId The identifier for an NFT
    /// @return The address of the owner of the NFT
    function ownerOf(uint256 _tokenId) external view returns (address);

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT. When transfer is complete, this function
    ///  checks if `_to` is a smart contract (code size > 0). If so, it calls
    ///  `onERC721Received` on `_to` and throws if the return value is not
    ///  `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    /// @param data Additional data with no specified format, sent in call to `_to`
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external;

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev This works identically to the other function with an extra data parameter,
    ///  except this function just sets data to "".
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external;

    /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
    ///  TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
    ///  THEY MAY BE PERMANENTLY LOST
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function transferFrom(address _from, address _to, uint256 _tokenId) external;

    /// @notice Change or reaffirm the approved address for an NFT
    /// @dev The zero address indicates there is no approved address.
    ///  Throws unless `msg.sender` is the current NFT owner, or an authorized
    ///  operator of the current owner.
    /// @param _approved The new approved NFT controller
    /// @param _tokenId The NFT to approve
    function approve(address _approved, uint256 _tokenId) external;

    /// @notice Enable or disable approval for a third party ("operator") to manage
    ///  all of `msg.sender`'s assets
    /// @dev Emits the ApprovalForAll event. The contract MUST allow
    ///  multiple operators per owner.
    /// @param _operator Address to add to the set of authorized operators
    /// @param _approved True if the operator is approved, false to revoke approval
    function setApprovalForAll(address _operator, bool _approved) external;

    /// @notice Get the approved address for a single NFT
    /// @dev Throws if `_tokenId` is not a valid NFT.
    /// @param _tokenId The NFT to find the approved address for
    /// @return The approved address for this NFT, or the zero address if there is none
    function getApproved(uint256 _tokenId) external view returns (address);

    /// @notice Query if an address is an authorized operator for another address
    /// @param _owner The address that owns the NFTs
    /// @param _operator The address that acts on behalf of the owner
    /// @return True if `_operator` is an approved operator for `_owner`, false otherwise
    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}

interface AvatarService {
  function updateAvatarInfo(address _owner, uint256 _tokenId, string _name, uint256 _dna) external;
  function createAvatar(address _owner, string _name, uint256 _dna) external  returns(uint256);
  function getMountTokenIds(address _owner,uint256 _tokenId, address _avatarItemAddress) external view returns(uint256[]); 
  function getAvatarInfo(uint256 _tokenId) external view returns (string _name, uint256 _dna);
  function getOwnedTokenIds(address _owner) external view returns(uint256[] _tokenIds);
}


/**
 * @title BitGuildAccessAdmin
 * @dev Allow two roles: 'owner' or 'operator'
 *      - owner: admin/superuser (e.g. with financial rights)
 *      - operator: can update configurations
 */
contract BitGuildAccessAdmin {
  address public owner;
  address[] public operators;

  uint public MAX_OPS = 20; // Default maximum number of operators allowed

  mapping(address => bool) public isOperator;

  event OwnershipTransferred(
      address indexed previousOwner,
      address indexed newOwner
  );
  event OperatorAdded(address operator);
  event OperatorRemoved(address operator);

  // @dev The BitGuildAccessAdmin constructor: sets owner 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 Throws if called by any non-operator account. Owner has all ops rights.
  modifier onlyOperator {
    require(
      isOperator[msg.sender] || msg.sender == owner,
      "Permission denied. Must be an operator or the 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),
      "Invalid new owner address."
    );
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }

  /**
    * @dev Allows the current owner or operators to add operators
    * @param _newOperator New operator address
    */
  function addOperator(address _newOperator) public onlyOwner {
    require(
      _newOperator != address(0),
      "Invalid new operator address."
    );

    // Make sure no dups
    require(
      !isOperator[_newOperator],
      "New operator exists."
    );

    // Only allow so many ops
    require(
      operators.length < MAX_OPS,
      "Overflow."
    );

    operators.push(_newOperator);
    isOperator[_newOperator] = true;

    emit OperatorAdded(_newOperator);
  }

  /**
    * @dev Allows the current owner or operators to remove operator
    * @param _operator Address of the operator to be removed
    */
  function removeOperator(address _operator) public onlyOwner {
    // Make sure operators array is not empty
    require(
      operators.length > 0,
      "No operator."
    );

    // Make sure the operator exists
    require(
      isOperator[_operator],
      "Not an operator."
    );

    // Manual array manipulation:
    // - replace the _operator with last operator in array
    // - remove the last item from array
    address lastOperator = operators[operators.length - 1];
    for (uint i = 0; i < operators.length; i++) {
      if (operators[i] == _operator) {
        operators[i] = lastOperator;
      }
    }
    operators.length -= 1; // remove the last element

    isOperator[_operator] = false;
    emit OperatorRemoved(_operator);
  }

  // @dev Remove ALL operators
  function removeAllOps() public onlyOwner {
    for (uint i = 0; i < operators.length; i++) {
      isOperator[operators[i]] = false;
    }
    operators.length = 0;
  } 

}

contract AvatarOperator is BitGuildAccessAdmin {

  // every user can own avatar count
  uint8 public PER_USER_MAX_AVATAR_COUNT = 1;

  event AvatarCreateSuccess(address indexed _owner, uint256 tokenId);

  AvatarService internal avatarService;
  address internal avatarAddress;

  modifier nameValid(string _name){
    bytes memory nameBytes = bytes(_name);
    require(nameBytes.length > 0);
    require(nameBytes.length < 16);
    for(uint8 i = 0; i < nameBytes.length; ++i) {
      uint8 asc = uint8(nameBytes[i]);
      require (
        asc == 95 || (asc >= 48 && asc <= 57) || (asc >= 65 && asc <= 90) || (asc >= 97 && asc <= 122), "Invalid name"); 
    }
    _;
  }

  function setMaxAvatarNumber(uint8 _maxNumber) external onlyOwner {
    PER_USER_MAX_AVATAR_COUNT = _maxNumber;
  }

  function injectAvatarService(address _addr) external onlyOwner {
    avatarService = AvatarService(_addr);
    avatarAddress = _addr;
  }
  
  function updateAvatarInfo(uint256 _tokenId, string _name, uint256 _dna) external nameValid(_name){
    avatarService.updateAvatarInfo(msg.sender, _tokenId, _name, _dna);
  }

  function createAvatar(string _name, uint256 _dna) external nameValid(_name) returns (uint256 _tokenId){
    require(ERC721(avatarAddress).balanceOf(msg.sender) < PER_USER_MAX_AVATAR_COUNT);
    _tokenId = avatarService.createAvatar(msg.sender, _name, _dna);
    emit AvatarCreateSuccess(msg.sender, _tokenId);
  }

  function getMountTokenIds(uint256 _tokenId, address _avatarItemAddress) external view returns(uint256[]){
    return avatarService.getMountTokenIds(msg.sender, _tokenId, _avatarItemAddress);
  }

  function getAvatarInfo(uint256 _tokenId) external view returns (string _name, uint256 _dna) {
    return avatarService.getAvatarInfo(_tokenId);
  }

  function getOwnedTokenIds() external view returns(uint256[] _tokenIds) {
    return avatarService.getOwnedTokenIds(msg.sender);
  }
  
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"PER_USER_MAX_AVATAR_COUNT","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getAvatarInfo","outputs":[{"name":"_name","type":"string"},{"name":"_dna","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"injectAvatarService","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isOperator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_OPS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_name","type":"string"},{"name":"_dna","type":"uint256"}],"name":"updateAvatarInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getOwnedTokenIds","outputs":[{"name":"_tokenIds","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"removeAllOps","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_dna","type":"uint256"}],"name":"createAvatar","outputs":[{"name":"_tokenId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"operators","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_maxNumber","type":"uint8"}],"name":"setMaxAvatarNumber","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":"_tokenId","type":"uint256"},{"name":"_avatarItemAddress","type":"address"}],"name":"getMountTokenIds","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"AvatarCreateSuccess","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":false,"name":"operator","type":"address"}],"name":"OperatorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"operator","type":"address"}],"name":"OperatorRemoved","type":"event"}]

608060405260146002556004805460ff1916600117905560008054600160a060020a031916331790556112bf806100376000396000f3006080604052600436106100cc5763ffffffff60e060020a60003504166334df8b6381146100d157806343a92f24146100fc57806343bd262e146101935780636d70f7ae146101b6578063786431c1146101eb5780638da5cb5b146102125780639870d7fe14610243578063a59799e614610264578063ac8a584a1461028b578063b0d8b51f146102ac578063bc14016b14610311578063d1d9331814610326578063e28d49061461034a578063e8ff269e14610362578063f2fde38b1461037d578063f4ffa7a91461039e575b600080fd5b3480156100dd57600080fd5b506100e66103c2565b6040805160ff9092168252519081900360200190f35b34801561010857600080fd5b506101146004356103cb565b6040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561015757818101518382015260200161013f565b50505050905090810190601f1680156101845780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561019f57600080fd5b506101b4600160a060020a03600435166104c3565b005b3480156101c257600080fd5b506101d7600160a060020a036004351661052d565b604080519115158252519081900360200190f35b3480156101f757600080fd5b50610200610542565b60408051918252519081900360200190f35b34801561021e57600080fd5b50610227610548565b60408051600160a060020a039092168252519081900360200190f35b34801561024f57600080fd5b506101b4600160a060020a0360043516610557565b34801561027057600080fd5b506101b4600480359060248035908101910135604435610740565b34801561029757600080fd5b506101b4600160a060020a036004351661096a565b3480156102b857600080fd5b506102c1610b6e565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102fd5781810151838201526020016102e5565b505050509050019250505060405180910390f35b34801561031d57600080fd5b506101b4610c6c565b34801561033257600080fd5b50610200602460048035828101929101359035610cf4565b34801561035657600080fd5b50610227600435611007565b34801561036e57600080fd5b506101b460ff6004351661102f565b34801561038957600080fd5b506101b4600160a060020a036004351661105c565b3480156103aa57600080fd5b506102c1600435600160a060020a036024351661113b565b60045460ff1681565b60606000600460019054906101000a9004600160a060020a0316600160a060020a03166343a92f24846040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b15801561042d57600080fd5b505af1158015610441573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561046a57600080fd5b81019080805164010000000081111561048257600080fd5b8201602081018481111561049557600080fd5b81516401000000008111828201871017156104af57600080fd5b505060209091015190945092505050915091565b600054600160a060020a031633146104da57600080fd5b6004805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03939093169283021790556005805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60036020526000908152604090205460ff1681565b60025481565b600054600160a060020a031681565b600054600160a060020a0316331461056e57600080fd5b600160a060020a03811615156105ce576040805160e560020a62461bcd02815260206004820152601d60248201527f496e76616c6964206e6577206f70657261746f7220616464726573732e000000604482015290519081900360640190fd5b600160a060020a03811660009081526003602052604090205460ff161561063f576040805160e560020a62461bcd02815260206004820152601460248201527f4e6577206f70657261746f72206578697374732e000000000000000000000000604482015290519081900360640190fd5b6002546001541061069a576040805160e560020a62461bcd02815260206004820152600960248201527f4f766572666c6f772e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038416908117909155600081815260036020908152604091829020805460ff19169094179093558051918252517fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d929181900390910190a150565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843750508451859450600093508392508210905061078557600080fd5b825160101161079357600080fd5b600091505b82518260ff1610156108a657828260ff168151811015156107b557fe5b01602001517f0100000000000000000000000000000000000000000000000000000000000000908190048102049050605f60ff82161480610809575060308160ff1610158015610809575060398160ff1611155b80610827575060418160ff16101580156108275750605a8160ff1611155b80610845575060618160ff16101580156108455750607a8160ff1611155b151561089b576040805160e560020a62461bcd02815260206004820152600c60248201527f496e76616c6964206e616d650000000000000000000000000000000000000000604482015290519081900360640190fd5b816001019150610798565b600460019054906101000a9004600160a060020a0316600160a060020a0316632de541e0338a8a8a8a6040518663ffffffff1660e060020a0281526004018086600160a060020a0316600160a060020a0316815260200185815260200180602001838152602001828103825285858281815260200192508082843782019150509650505050505050600060405180830381600087803b15801561094857600080fd5b505af115801561095c573d6000803e3d6000fd5b505050505050505050505050565b600080548190600160a060020a0316331461098457600080fd5b6001546000106109de576040805160e560020a62461bcd02815260206004820152600c60248201527f4e6f206f70657261746f722e0000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831660009081526003602052604090205460ff161515610a50576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420616e206f70657261746f722e00000000000000000000000000000000604482015290519081900360640190fd5b600180546000198101908110610a6257fe5b6000918252602082200154600160a060020a0316925090505b600154811015610b005782600160a060020a0316600182815481101515610a9e57fe5b600091825260209091200154600160a060020a03161415610af85781600182815481101515610ac957fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600101610a7b565b600180546000190190610b13908261124c565b50600160a060020a038316600081815260036020908152604091829020805460ff19169055815192835290517f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9281900390910190a1505050565b60048054604080517f4fac7e41000000000000000000000000000000000000000000000000000000008152339381019390935251606092610100909204600160a060020a031691634fac7e4191602480830192600092919082900301818387803b158015610bdb57600080fd5b505af1158015610bef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610c1857600080fd5b810190808051640100000000811115610c3057600080fd5b82016020810184811115610c4357600080fd5b8151856020820283011164010000000082111715610c6057600080fd5b50909450505050505b90565b60008054600160a060020a03163314610c8457600080fd5b5060005b600154811015610ce357600060036000600184815481101515610ca757fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff1916911515919091179055600101610c88565b6000610cf060018261124c565b5050565b600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437505084518594506000935083925082109050610d3b57600080fd5b8251601011610d4957600080fd5b600091505b82518260ff161015610e5c57828260ff16815181101515610d6b57fe5b01602001517f0100000000000000000000000000000000000000000000000000000000000000908190048102049050605f60ff82161480610dbf575060308160ff1610158015610dbf575060398160ff1611155b80610ddd575060418160ff1610158015610ddd5750605a8160ff1611155b80610dfb575060618160ff1610158015610dfb5750607a8160ff1611155b1515610e51576040805160e560020a62461bcd02815260206004820152600c60248201527f496e76616c6964206e616d650000000000000000000000000000000000000000604482015290519081900360640190fd5b816001019150610d4e565b60048054600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815233948101949094525160ff90921692600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b158015610ecd57600080fd5b505af1158015610ee1573d6000803e3d6000fd5b505050506040513d6020811015610ef757600080fd5b505110610f0357600080fd5b600480546040517fc1f8056b00000000000000000000000000000000000000000000000000000000815233928101838152604482018a9052606060248301908152606483018c9052610100909304600160a060020a03169363c1f8056b9390928d928d928d92608401858580828437820191505095505050505050602060405180830381600087803b158015610f9857600080fd5b505af1158015610fac573d6000803e3d6000fd5b505050506040513d6020811015610fc257600080fd5b505160408051828152905191965033917f3ed007694d319430cbd9343d00b5fc088e164a8862c7d5e495f40d0cbae6847e9181900360200190a2505050509392505050565b600180548290811061101557fe5b600091825260209091200154600160a060020a0316905081565b600054600160a060020a0316331461104657600080fd5b6004805460ff191660ff92909216919091179055565b600054600160a060020a0316331461107357600080fd5b600160a060020a03811615156110d3576040805160e560020a62461bcd02815260206004820152601a60248201527f496e76616c6964206e6577206f776e657220616464726573732e000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60048054604080517f911cec25000000000000000000000000000000000000000000000000000000008152339381019390935260248301859052600160a060020a03848116604485015290516060936101009093049091169163911cec2591606480830192600092919082900301818387803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156111f757600080fd5b81019080805164010000000081111561120f57600080fd5b8201602081018481111561122257600080fd5b815185602082028301116401000000008211171561123f57600080fd5b5090979650505050505050565b81548183558181111561127057600083815260209020611270918101908301611275565b505050565b610c6991905b8082111561128f576000815560010161127b565b50905600a165627a7a723058208836f72f3d8a3405730a7d0d1baa8e066ee361902f26dcbf81593233b8d93ca30029

Deployed Bytecode

0x6080604052600436106100cc5763ffffffff60e060020a60003504166334df8b6381146100d157806343a92f24146100fc57806343bd262e146101935780636d70f7ae146101b6578063786431c1146101eb5780638da5cb5b146102125780639870d7fe14610243578063a59799e614610264578063ac8a584a1461028b578063b0d8b51f146102ac578063bc14016b14610311578063d1d9331814610326578063e28d49061461034a578063e8ff269e14610362578063f2fde38b1461037d578063f4ffa7a91461039e575b600080fd5b3480156100dd57600080fd5b506100e66103c2565b6040805160ff9092168252519081900360200190f35b34801561010857600080fd5b506101146004356103cb565b6040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561015757818101518382015260200161013f565b50505050905090810190601f1680156101845780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561019f57600080fd5b506101b4600160a060020a03600435166104c3565b005b3480156101c257600080fd5b506101d7600160a060020a036004351661052d565b604080519115158252519081900360200190f35b3480156101f757600080fd5b50610200610542565b60408051918252519081900360200190f35b34801561021e57600080fd5b50610227610548565b60408051600160a060020a039092168252519081900360200190f35b34801561024f57600080fd5b506101b4600160a060020a0360043516610557565b34801561027057600080fd5b506101b4600480359060248035908101910135604435610740565b34801561029757600080fd5b506101b4600160a060020a036004351661096a565b3480156102b857600080fd5b506102c1610b6e565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102fd5781810151838201526020016102e5565b505050509050019250505060405180910390f35b34801561031d57600080fd5b506101b4610c6c565b34801561033257600080fd5b50610200602460048035828101929101359035610cf4565b34801561035657600080fd5b50610227600435611007565b34801561036e57600080fd5b506101b460ff6004351661102f565b34801561038957600080fd5b506101b4600160a060020a036004351661105c565b3480156103aa57600080fd5b506102c1600435600160a060020a036024351661113b565b60045460ff1681565b60606000600460019054906101000a9004600160a060020a0316600160a060020a03166343a92f24846040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b15801561042d57600080fd5b505af1158015610441573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561046a57600080fd5b81019080805164010000000081111561048257600080fd5b8201602081018481111561049557600080fd5b81516401000000008111828201871017156104af57600080fd5b505060209091015190945092505050915091565b600054600160a060020a031633146104da57600080fd5b6004805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03939093169283021790556005805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60036020526000908152604090205460ff1681565b60025481565b600054600160a060020a031681565b600054600160a060020a0316331461056e57600080fd5b600160a060020a03811615156105ce576040805160e560020a62461bcd02815260206004820152601d60248201527f496e76616c6964206e6577206f70657261746f7220616464726573732e000000604482015290519081900360640190fd5b600160a060020a03811660009081526003602052604090205460ff161561063f576040805160e560020a62461bcd02815260206004820152601460248201527f4e6577206f70657261746f72206578697374732e000000000000000000000000604482015290519081900360640190fd5b6002546001541061069a576040805160e560020a62461bcd02815260206004820152600960248201527f4f766572666c6f772e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038416908117909155600081815260036020908152604091829020805460ff19169094179093558051918252517fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d929181900390910190a150565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843750508451859450600093508392508210905061078557600080fd5b825160101161079357600080fd5b600091505b82518260ff1610156108a657828260ff168151811015156107b557fe5b01602001517f0100000000000000000000000000000000000000000000000000000000000000908190048102049050605f60ff82161480610809575060308160ff1610158015610809575060398160ff1611155b80610827575060418160ff16101580156108275750605a8160ff1611155b80610845575060618160ff16101580156108455750607a8160ff1611155b151561089b576040805160e560020a62461bcd02815260206004820152600c60248201527f496e76616c6964206e616d650000000000000000000000000000000000000000604482015290519081900360640190fd5b816001019150610798565b600460019054906101000a9004600160a060020a0316600160a060020a0316632de541e0338a8a8a8a6040518663ffffffff1660e060020a0281526004018086600160a060020a0316600160a060020a0316815260200185815260200180602001838152602001828103825285858281815260200192508082843782019150509650505050505050600060405180830381600087803b15801561094857600080fd5b505af115801561095c573d6000803e3d6000fd5b505050505050505050505050565b600080548190600160a060020a0316331461098457600080fd5b6001546000106109de576040805160e560020a62461bcd02815260206004820152600c60248201527f4e6f206f70657261746f722e0000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831660009081526003602052604090205460ff161515610a50576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420616e206f70657261746f722e00000000000000000000000000000000604482015290519081900360640190fd5b600180546000198101908110610a6257fe5b6000918252602082200154600160a060020a0316925090505b600154811015610b005782600160a060020a0316600182815481101515610a9e57fe5b600091825260209091200154600160a060020a03161415610af85781600182815481101515610ac957fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600101610a7b565b600180546000190190610b13908261124c565b50600160a060020a038316600081815260036020908152604091829020805460ff19169055815192835290517f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9281900390910190a1505050565b60048054604080517f4fac7e41000000000000000000000000000000000000000000000000000000008152339381019390935251606092610100909204600160a060020a031691634fac7e4191602480830192600092919082900301818387803b158015610bdb57600080fd5b505af1158015610bef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610c1857600080fd5b810190808051640100000000811115610c3057600080fd5b82016020810184811115610c4357600080fd5b8151856020820283011164010000000082111715610c6057600080fd5b50909450505050505b90565b60008054600160a060020a03163314610c8457600080fd5b5060005b600154811015610ce357600060036000600184815481101515610ca757fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff1916911515919091179055600101610c88565b6000610cf060018261124c565b5050565b600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437505084518594506000935083925082109050610d3b57600080fd5b8251601011610d4957600080fd5b600091505b82518260ff161015610e5c57828260ff16815181101515610d6b57fe5b01602001517f0100000000000000000000000000000000000000000000000000000000000000908190048102049050605f60ff82161480610dbf575060308160ff1610158015610dbf575060398160ff1611155b80610ddd575060418160ff1610158015610ddd5750605a8160ff1611155b80610dfb575060618160ff1610158015610dfb5750607a8160ff1611155b1515610e51576040805160e560020a62461bcd02815260206004820152600c60248201527f496e76616c6964206e616d650000000000000000000000000000000000000000604482015290519081900360640190fd5b816001019150610d4e565b60048054600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815233948101949094525160ff90921692600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b158015610ecd57600080fd5b505af1158015610ee1573d6000803e3d6000fd5b505050506040513d6020811015610ef757600080fd5b505110610f0357600080fd5b600480546040517fc1f8056b00000000000000000000000000000000000000000000000000000000815233928101838152604482018a9052606060248301908152606483018c9052610100909304600160a060020a03169363c1f8056b9390928d928d928d92608401858580828437820191505095505050505050602060405180830381600087803b158015610f9857600080fd5b505af1158015610fac573d6000803e3d6000fd5b505050506040513d6020811015610fc257600080fd5b505160408051828152905191965033917f3ed007694d319430cbd9343d00b5fc088e164a8862c7d5e495f40d0cbae6847e9181900360200190a2505050509392505050565b600180548290811061101557fe5b600091825260209091200154600160a060020a0316905081565b600054600160a060020a0316331461104657600080fd5b6004805460ff191660ff92909216919091179055565b600054600160a060020a0316331461107357600080fd5b600160a060020a03811615156110d3576040805160e560020a62461bcd02815260206004820152601a60248201527f496e76616c6964206e6577206f776e657220616464726573732e000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60048054604080517f911cec25000000000000000000000000000000000000000000000000000000008152339381019390935260248301859052600160a060020a03848116604485015290516060936101009093049091169163911cec2591606480830192600092919082900301818387803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156111f757600080fd5b81019080805164010000000081111561120f57600080fd5b8201602081018481111561122257600080fd5b815185602082028301116401000000008211171561123f57600080fd5b5090979650505050505050565b81548183558181111561127057600083815260209020611270918101908301611275565b505050565b610c6991905b8082111561128f576000815560010161127b565b50905600a165627a7a723058208836f72f3d8a3405730a7d0d1baa8e066ee361902f26dcbf81593233b8d93ca30029

Swarm Source

bzzr://8836f72f3d8a3405730a7d0d1baa8e066ee361902f26dcbf81593233b8d93ca3

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.