ETH Price: $2,030.42 (-0.96%)
Gas: 36 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Sponsored

Transaction Hash
Method
Block
From
To
Value
Add Controller67810982018-11-27 8:06:141828 days 14 hrs ago1543305974IN
0xE8eC27...31cb693C
0 ETH0.000322695
0x6080604067810592018-11-27 7:58:191828 days 14 hrs ago1543305499IN
 Create: CBCreatureStorage
0 ETH0.018860079

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CBCreatureStorage

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

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

pragma solidity ^0.4.24;

// File: node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @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 Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

// File: contracts/IEntityStorage.sol

interface IEntityStorage {
    function storeBulk(uint256[] _tokenIds, uint256[] _attributes) external;
    function store(uint256 _tokenId, uint256 _attributes, uint256[] _componentIds) external;
    function remove(uint256 _tokenId) external;
    function list() external view returns (uint256[] tokenIds);
    function getAttributes(uint256 _tokenId) external view returns (uint256 attrs, uint256[] compIds);
    function updateAttributes(uint256 _tokenId, uint256 _attributes, uint256[] _componentIds) external;
    function totalSupply() external view returns (uint256);
}

// File: contracts/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;
    address public newOwner;
    
    // mapping for creature Type to Sale
    address[] internal controllers;
    //mapping(address => address) internal controllers;
    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 that's not a superuser.
    */
    modifier onlyController() {
        require(isController(msg.sender), "only Controller");
        _;
    }

    modifier onlyOwnerOrController() {
        require(msg.sender == owner || isController(msg.sender), "only Owner Or Controller");
        _;
    }

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        require(msg.sender == owner, "sender address must be the owner's address");
        _;
    }

    /**
    * @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(address(0) != _newOwner, "new owner address must not be the owner's address");
        newOwner = _newOwner;
    }

    /**
    * @dev Allows the new owner to confirm that they are taking control of the contract..tr
    */
    function acceptOwnership() public {
        require(msg.sender == newOwner, "sender address must not be the new owner's address");
        emit OwnershipTransferred(owner, msg.sender);
        owner = msg.sender;
        newOwner = address(0);
    }

    function isController(address _controller) internal view returns(bool) {
        for (uint8 index = 0; index < controllers.length; index++) {
            if (controllers[index] == _controller) {
                return true;
            }
        }
        return false;
    }

    function getControllers() public onlyOwner view returns(address[]) {
        return controllers;
    }

    /**
    * @dev Allows a new controllers to be added
    * @param _controller The address controller.
    */
    function addController(address _controller) public onlyOwner {
        require(address(0) != _controller, "controller address must not be 0");
        require(_controller != owner, "controller address must not be the owner's address");
        for (uint8 index = 0; index < controllers.length; index++) {
            if (controllers[index] == _controller) {
                return;
            }
        }
        controllers.push(_controller);
    }

    /**
    * @dev Allows a new controllers to be added
    * @param _controller The address controller.
    */
    function removeController(address _controller) public onlyOwner {
        require(address(0) != _controller, "controller address must not be 0");
        for (uint8 index = 0; index < controllers.length; index++) {
            if (controllers[index] == _controller) {
                delete controllers[index];
            }
        }
    }
}

// File: contracts/CBCreatureStorage.sol

/**
* @title CBCreatureStorage
* @dev Composable storage contract for recording attribute data and attached components for a CryptoBeasties card. 
* CryptoBeasties content and source code is Copyright (C) 2018 PlayStakes LLC, All rights reserved.
*/
contract CBCreatureStorage is Ownable, IEntityStorage { 
    using SafeMath for uint256;  

    struct Token {
        uint256 tokenId;
        uint256 attributes;
        uint256[] componentIds;
        uint index;
    }

    // Array with all Tokens, used for enumeration
    uint256[] internal allTokens;

    // Maps token ids to data
    mapping(uint256 => Token) internal tokens;

    event Stored(uint256 tokenId, uint256 attributes, uint256[] componentIds);
    event Removed(uint256 tokenId);

    /**
    * @dev Constructor function
    */
    constructor() public {
    }

    /**
    * @dev Returns whether the specified token exists
    * @param _tokenId uint256 ID of the token to query the existence of
    * @return whether the token exists
    */
    function exists(uint256 _tokenId) public view returns (bool) {
        return tokens[_tokenId].tokenId == _tokenId;
    }

    /**
    * @dev Bulk Load of Tokens
    * @param _tokenIds Array of tokenIds
    * @param _attributes Array of packed attributes value
    */
    function storeBulk(uint256[] _tokenIds, uint256[] _attributes) external onlyOwnerOrController {
        uint256[] memory _componentIds;
        uint startIndex = allTokens.length;
        for (uint index = 0; index < _tokenIds.length; index++) {
            require(!this.exists(_tokenIds[index]));
            allTokens.push(_tokenIds[index]);
            tokens[_tokenIds[index]] = Token(_tokenIds[index], _attributes[index], _componentIds, startIndex + index);
            emit Stored(_tokenIds[index], _attributes[index], _componentIds);
        }
    }
    
    /**
    * @dev Create a new CryptoBeasties Token
    * @param _tokenId ID of the token
    * @param _attributes Packed attributes value
    * @param _componentIds Array of CryptoBeasties componentIds (i.e. PowerStones)
    */
    function store(uint256 _tokenId, uint256 _attributes, uint256[] _componentIds) external onlyOwnerOrController {
        require(!this.exists(_tokenId));
        allTokens.push(_tokenId);
        tokens[_tokenId] = Token(_tokenId, _attributes, _componentIds, allTokens.length - 1);
        emit Stored(_tokenId, _attributes, _componentIds);
    }

    /**
    * @dev Remove a CryptoBeasties Token from storage
    * @param _tokenId ID of the token
    */
    function remove(uint256 _tokenId) external onlyOwnerOrController {
        require(_tokenId > 0);
        require(exists(_tokenId));
        
        uint doomedTokenIndex = tokens[_tokenId].index;
        
        delete tokens[_tokenId];

        // Reorg allTokens array
        uint lastTokenIndex = allTokens.length.sub(1);
        uint256 lastTokenId = allTokens[lastTokenIndex];

        // update the moved token's index
        tokens[lastTokenId].index = doomedTokenIndex;
        
        allTokens[doomedTokenIndex] = lastTokenId;
        allTokens[lastTokenIndex] = 0;

        allTokens.length--;
        emit Removed(_tokenId);
    }

    /**
    * @dev List all CryptoBeasties Tokens in storage
    */
    function list() external view returns (uint256[] tokenIds) {
        return allTokens;
    }

    /**
    * @dev Gets attributes and componentIds (i.e. PowerStones) for a CryptoBeastie
    * @param _tokenId uint256 for the given token
    */
    function getAttributes(uint256 _tokenId) external view returns (uint256 attrs, uint256[] compIds) {
        require(exists(_tokenId));
        return (tokens[_tokenId].attributes, tokens[_tokenId].componentIds);
    }

    /**
    * @dev Update CryptoBeasties attributes and Component Ids (i.e. PowerStones) CryptoBeastie
    * @param _tokenId uint256 ID of the token to update
    * @param _attributes Packed attributes value
    * @param _componentIds Array of CryptoBeasties componentIds (i.e. PowerStones)
    */
    function updateAttributes(uint256 _tokenId, uint256 _attributes, uint256[] _componentIds) external onlyOwnerOrController {
        require(exists(_tokenId));
        require(_attributes > 0);
        tokens[_tokenId].attributes = _attributes;
        tokens[_tokenId].componentIds = _componentIds;
        emit Stored(_tokenId, _attributes, _componentIds);
    }

    /**
    * @dev Get the total number of tokens in storage
    */
    function totalSupply() external view returns (uint256) {
        return allTokens.length;
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"list","outputs":[{"name":"tokenIds","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenIds","type":"uint256[]"},{"name":"_attributes","type":"uint256[]"}],"name":"storeBulk","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_attributes","type":"uint256"},{"name":"_componentIds","type":"uint256[]"}],"name":"updateAttributes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getAttributes","outputs":[{"name":"attrs","type":"uint256"},{"name":"compIds","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"remove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"exists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_attributes","type":"uint256"},{"name":"_componentIds","type":"uint256[]"}],"name":"store","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_controller","type":"address"}],"name":"addController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getControllers","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_controller","type":"address"}],"name":"removeController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"attributes","type":"uint256"},{"indexed":false,"name":"componentIds","type":"uint256[]"}],"name":"Stored","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Removed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611e1c806100606000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630f560cd7146100e057806318160ddd1461014c5780631f800f751461017757806326665c0f146101ca5780634378a6e3146102195780634cc82215146102a25780634f558e79146102cf57806379ba5097146103145780638da5cb5b1461032b578063a59c5b3414610382578063a7fc7a07146103d1578063b4e8a6c414610414578063d4ee1d9014610480578063f2fde38b146104d7578063f6a74ed71461051a575b600080fd5b3480156100ec57600080fd5b506100f561055d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561013857808201518184015260208101905061011d565b505050509050019250505060405180910390f35b34801561015857600080fd5b506101616105b5565b6040518082815260200191505060405180910390f35b34801561018357600080fd5b506101c86004803603810190808035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506105c2565b005b3480156101d657600080fd5b506102176004803603810190808035906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050610934565b005b34801561022557600080fd5b5061024460048036038101908080359060200190929190505050610ad6565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561028d578082015181840152602081019050610272565b50505050905001935050505060405180910390f35b3480156102ae57600080fd5b506102cd60048036038101908080359060200190929190505050610b76565b005b3480156102db57600080fd5b506102fa60048036038101908080359060200190929190505050610dab565b604051808215151515815260200191505060405180910390f35b34801561032057600080fd5b50610329610dcd565b005b34801561033757600080fd5b50610340610fb7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038e57600080fd5b506103cf6004803603810190808035906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050610fdc565b005b3480156103dd57600080fd5b50610412600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a6565b005b34801561042057600080fd5b50610429611624565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561046c578082015181840152602081019050610451565b505050509050019250505060405180910390f35b34801561048c57600080fd5b5061049561179c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104e357600080fd5b50610518600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c2565b005b34801561052657600080fd5b5061055b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119bb565b005b606060038054806020026020016040519081016040528092919081815260200182805480156105ab57602002820191906000526020600020905b815481526020019060010190808311610597575b5050505050905090565b6000600380549050905090565b60606000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610627575061062633611c22565b5b151561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c79204f776e6572204f7220436f6e74726f6c6c6572000000000000000081525060200191505060405180910390fd5b6003805490509150600090505b8686905081101561092b573073ffffffffffffffffffffffffffffffffffffffff16634f558e7988888481811015156106dd57fe5b905060200201356040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561073657600080fd5b505af115801561074a573d6000803e3d6000fd5b505050506040513d602081101561076057600080fd5b810190808051906020019092919050505015151561077d57600080fd5b6003878783818110151561078d57fe5b90506020020135908060018154018082558091505090600182039060005260206000200160009091929091909150555060806040519081016040528088888481811015156107d757fe5b90506020020135815260200186868481811015156107f157fe5b90506020020135815260200184815260200182840181525060046000898985818110151561081b57fe5b90506020020135815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190610860929190611ce4565b50606082015181600301559050507f01dbef8bca9246eceda02335bb0324f32117413208571b4307df6cc6babef1d2878783818110151561089d57fe5b9050602002013586868481811015156108b257fe5b90506020020135856040518084815260200183815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156109095780820151818401526020810190506108ee565b5050505090500194505050505060405180910390a180806001019150506106a8565b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610994575061099333611c22565b5b1515610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c79204f776e6572204f7220436f6e74726f6c6c6572000000000000000081525060200191505060405180910390fd5b610a1184610dab565b1515610a1c57600080fd5b600083111515610a2b57600080fd5b8260046000868152602001908152602001600020600101819055508181600460008781526020019081526020016000206002019190610a6b929190611d31565b507f01dbef8bca9246eceda02335bb0324f32117413208571b4307df6cc6babef1d2848484846040518085815260200184815260200180602001828103825284848281815260200192506020028082843782019150509550505050505060405180910390a150505050565b60006060610ae383610dab565b1515610aee57600080fd5b60046000848152602001908152602001600020600101546004600085815260200190815260200160002060020180805480602002602001604051908101604052809291908181526020018280548015610b6657602002820191906000526020600020905b815481526020019060010190808311610b52575b5050505050905091509150915091565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bdb5750610bda33611c22565b5b1515610c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c79204f776e6572204f7220436f6e74726f6c6c6572000000000000000081525060200191505060405180910390fd5b600084111515610c5e57600080fd5b610c6784610dab565b1515610c7257600080fd5b60046000858152602001908152602001600020600301549250600460008581526020019081526020016000206000808201600090556001820160009055600282016000610cbf9190611d7e565b60038201600090555050610ce26001600380549050611ccb90919063ffffffff16565b9150600382815481101515610cf357fe5b9060005260206000200154905082600460008381526020019081526020016000206003018190555080600384815481101515610d2b57fe5b90600052602060002001819055506000600383815481101515610d4a57fe5b90600052602060002001819055506003805480919060019003610d6d9190611d9f565b507ffab782eee98387fe0d957b2964e6da22a6918f525952ccad107ae25db263cc11846040518082815260200191505060405180910390a150505050565b6000816004600084815260200190815260200160002060000154149050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f73656e6465722061646472657373206d757374206e6f7420626520746865206e81526020017f6577206f776e657227732061646472657373000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061103c575061103b33611c22565b5b15156110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c79204f776e6572204f7220436f6e74726f6c6c6572000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16634f558e79856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b505050506040513d602081101561114957600080fd5b810190808051906020019092919050505015151561116657600080fd5b60038490806001815401808255809150509060018203906000526020600020016000909192909190915055506080604051908101604052808581526020018481526020018383808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508152602001600160038054905003815250600460008681526020019081526020016000206000820151816000015560208201518160010155604082015181600201908051906020019061122e929190611ce4565b50606082015181600301559050507f01dbef8bca9246eceda02335bb0324f32117413208571b4307df6cc6babef1d2848484846040518085815260200184815260200180602001828103825284848281815260200192506020028082843782019150509550505050505060405180910390a150505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f73656e6465722061646472657373206d75737420626520746865206f776e657281526020017f277320616464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614151515611437576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636f6e74726f6c6c65722061646472657373206d757374206e6f74206265203081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611522576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f636f6e74726f6c6c65722061646472657373206d757374206e6f74206265207481526020017f6865206f776e657227732061646472657373000000000000000000000000000081525060400191505060405180910390fd5b600090505b6002805490508160ff1610156115b9578173ffffffffffffffffffffffffffffffffffffffff1660028260ff1681548110151561156057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115ac57611620565b8080600101915050611527565b60028290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b5050565b60606000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f73656e6465722061646472657373206d75737420626520746865206f776e657281526020017f277320616464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600280548060200260200160405190810160405280929190818152602001828054801561179257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611748575b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f73656e6465722061646472657373206d75737420626520746865206f776e657281526020017f277320616464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614151515611977576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f6e6577206f776e65722061646472657373206d757374206e6f7420626520746881526020017f65206f776e65722773206164647265737300000000000000000000000000000081525060400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611aa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f73656e6465722061646472657373206d75737420626520746865206f776e657281526020017f277320616464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614151515611b4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636f6e74726f6c6c65722061646472657373206d757374206e6f74206265203081525060200191505060405180910390fd5b600090505b6002805490508160ff161015611c1e578173ffffffffffffffffffffffffffffffffffffffff1660028260ff16815481101515611b8a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c115760028160ff16815481101515611be357fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b8080600101915050611b51565b5050565b600080600090505b6002805490508160ff161015611cc0578273ffffffffffffffffffffffffffffffffffffffff1660028260ff16815481101515611c6357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611cb35760019150611cc5565b8080600101915050611c2a565b600091505b50919050565b6000828211151515611cd957fe5b818303905092915050565b828054828255906000526020600020908101928215611d20579160200282015b82811115611d1f578251825591602001919060010190611d04565b5b509050611d2d9190611dcb565b5090565b828054828255906000526020600020908101928215611d6d579160200282015b82811115611d6c578235825591602001919060010190611d51565b5b509050611d7a9190611dcb565b5090565b5080546000825590600052602060002090810190611d9c9190611dcb565b50565b815481835581811115611dc657818360005260206000209182019101611dc59190611dcb565b5b505050565b611ded91905b80821115611de9576000816000905550600101611dd1565b5090565b905600a165627a7a723058200511884484fcf20ffc07e6c3bd2dcec95c6116eda89b788985bdde3c783151b70029

Deployed Bytecode

0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630f560cd7146100e057806318160ddd1461014c5780631f800f751461017757806326665c0f146101ca5780634378a6e3146102195780634cc82215146102a25780634f558e79146102cf57806379ba5097146103145780638da5cb5b1461032b578063a59c5b3414610382578063a7fc7a07146103d1578063b4e8a6c414610414578063d4ee1d9014610480578063f2fde38b146104d7578063f6a74ed71461051a575b600080fd5b3480156100ec57600080fd5b506100f561055d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561013857808201518184015260208101905061011d565b505050509050019250505060405180910390f35b34801561015857600080fd5b506101616105b5565b6040518082815260200191505060405180910390f35b34801561018357600080fd5b506101c86004803603810190808035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506105c2565b005b3480156101d657600080fd5b506102176004803603810190808035906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050610934565b005b34801561022557600080fd5b5061024460048036038101908080359060200190929190505050610ad6565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561028d578082015181840152602081019050610272565b50505050905001935050505060405180910390f35b3480156102ae57600080fd5b506102cd60048036038101908080359060200190929190505050610b76565b005b3480156102db57600080fd5b506102fa60048036038101908080359060200190929190505050610dab565b604051808215151515815260200191505060405180910390f35b34801561032057600080fd5b50610329610dcd565b005b34801561033757600080fd5b50610340610fb7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038e57600080fd5b506103cf6004803603810190808035906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050610fdc565b005b3480156103dd57600080fd5b50610412600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a6565b005b34801561042057600080fd5b50610429611624565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561046c578082015181840152602081019050610451565b505050509050019250505060405180910390f35b34801561048c57600080fd5b5061049561179c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104e357600080fd5b50610518600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c2565b005b34801561052657600080fd5b5061055b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119bb565b005b606060038054806020026020016040519081016040528092919081815260200182805480156105ab57602002820191906000526020600020905b815481526020019060010190808311610597575b5050505050905090565b6000600380549050905090565b60606000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610627575061062633611c22565b5b151561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c79204f776e6572204f7220436f6e74726f6c6c6572000000000000000081525060200191505060405180910390fd5b6003805490509150600090505b8686905081101561092b573073ffffffffffffffffffffffffffffffffffffffff16634f558e7988888481811015156106dd57fe5b905060200201356040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561073657600080fd5b505af115801561074a573d6000803e3d6000fd5b505050506040513d602081101561076057600080fd5b810190808051906020019092919050505015151561077d57600080fd5b6003878783818110151561078d57fe5b90506020020135908060018154018082558091505090600182039060005260206000200160009091929091909150555060806040519081016040528088888481811015156107d757fe5b90506020020135815260200186868481811015156107f157fe5b90506020020135815260200184815260200182840181525060046000898985818110151561081b57fe5b90506020020135815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190610860929190611ce4565b50606082015181600301559050507f01dbef8bca9246eceda02335bb0324f32117413208571b4307df6cc6babef1d2878783818110151561089d57fe5b9050602002013586868481811015156108b257fe5b90506020020135856040518084815260200183815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156109095780820151818401526020810190506108ee565b5050505090500194505050505060405180910390a180806001019150506106a8565b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610994575061099333611c22565b5b1515610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c79204f776e6572204f7220436f6e74726f6c6c6572000000000000000081525060200191505060405180910390fd5b610a1184610dab565b1515610a1c57600080fd5b600083111515610a2b57600080fd5b8260046000868152602001908152602001600020600101819055508181600460008781526020019081526020016000206002019190610a6b929190611d31565b507f01dbef8bca9246eceda02335bb0324f32117413208571b4307df6cc6babef1d2848484846040518085815260200184815260200180602001828103825284848281815260200192506020028082843782019150509550505050505060405180910390a150505050565b60006060610ae383610dab565b1515610aee57600080fd5b60046000848152602001908152602001600020600101546004600085815260200190815260200160002060020180805480602002602001604051908101604052809291908181526020018280548015610b6657602002820191906000526020600020905b815481526020019060010190808311610b52575b5050505050905091509150915091565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bdb5750610bda33611c22565b5b1515610c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c79204f776e6572204f7220436f6e74726f6c6c6572000000000000000081525060200191505060405180910390fd5b600084111515610c5e57600080fd5b610c6784610dab565b1515610c7257600080fd5b60046000858152602001908152602001600020600301549250600460008581526020019081526020016000206000808201600090556001820160009055600282016000610cbf9190611d7e565b60038201600090555050610ce26001600380549050611ccb90919063ffffffff16565b9150600382815481101515610cf357fe5b9060005260206000200154905082600460008381526020019081526020016000206003018190555080600384815481101515610d2b57fe5b90600052602060002001819055506000600383815481101515610d4a57fe5b90600052602060002001819055506003805480919060019003610d6d9190611d9f565b507ffab782eee98387fe0d957b2964e6da22a6918f525952ccad107ae25db263cc11846040518082815260200191505060405180910390a150505050565b6000816004600084815260200190815260200160002060000154149050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f73656e6465722061646472657373206d757374206e6f7420626520746865206e81526020017f6577206f776e657227732061646472657373000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061103c575061103b33611c22565b5b15156110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c79204f776e6572204f7220436f6e74726f6c6c6572000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16634f558e79856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b505050506040513d602081101561114957600080fd5b810190808051906020019092919050505015151561116657600080fd5b60038490806001815401808255809150509060018203906000526020600020016000909192909190915055506080604051908101604052808581526020018481526020018383808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508152602001600160038054905003815250600460008681526020019081526020016000206000820151816000015560208201518160010155604082015181600201908051906020019061122e929190611ce4565b50606082015181600301559050507f01dbef8bca9246eceda02335bb0324f32117413208571b4307df6cc6babef1d2848484846040518085815260200184815260200180602001828103825284848281815260200192506020028082843782019150509550505050505060405180910390a150505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f73656e6465722061646472657373206d75737420626520746865206f776e657281526020017f277320616464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614151515611437576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636f6e74726f6c6c65722061646472657373206d757374206e6f74206265203081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611522576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f636f6e74726f6c6c65722061646472657373206d757374206e6f74206265207481526020017f6865206f776e657227732061646472657373000000000000000000000000000081525060400191505060405180910390fd5b600090505b6002805490508160ff1610156115b9578173ffffffffffffffffffffffffffffffffffffffff1660028260ff1681548110151561156057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115ac57611620565b8080600101915050611527565b60028290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b5050565b60606000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f73656e6465722061646472657373206d75737420626520746865206f776e657281526020017f277320616464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600280548060200260200160405190810160405280929190818152602001828054801561179257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611748575b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f73656e6465722061646472657373206d75737420626520746865206f776e657281526020017f277320616464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614151515611977576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f6e6577206f776e65722061646472657373206d757374206e6f7420626520746881526020017f65206f776e65722773206164647265737300000000000000000000000000000081525060400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611aa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f73656e6465722061646472657373206d75737420626520746865206f776e657281526020017f277320616464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614151515611b4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636f6e74726f6c6c65722061646472657373206d757374206e6f74206265203081525060200191505060405180910390fd5b600090505b6002805490508160ff161015611c1e578173ffffffffffffffffffffffffffffffffffffffff1660028260ff16815481101515611b8a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c115760028160ff16815481101515611be357fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b8080600101915050611b51565b5050565b600080600090505b6002805490508160ff161015611cc0578273ffffffffffffffffffffffffffffffffffffffff1660028260ff16815481101515611c6357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611cb35760019150611cc5565b8080600101915050611c2a565b600091505b50919050565b6000828211151515611cd957fe5b818303905092915050565b828054828255906000526020600020908101928215611d20579160200282015b82811115611d1f578251825591602001919060010190611d04565b5b509050611d2d9190611dcb565b5090565b828054828255906000526020600020908101928215611d6d579160200282015b82811115611d6c578235825591602001919060010190611d51565b5b509050611d7a9190611dcb565b5090565b5080546000825590600052602060002090810190611d9c9190611dcb565b50565b815481835581811115611dc657818360005260206000209182019101611dc59190611dcb565b5b505050565b611ded91905b80821115611de9576000816000905550600101611dd1565b5090565b905600a165627a7a723058200511884484fcf20ffc07e6c3bd2dcec95c6116eda89b788985bdde3c783151b70029

Swarm Source

bzzr://0511884484fcf20ffc07e6c3bd2dcec95c6116eda89b788985bdde3c783151b7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.