ETH Price: $2,005.38 (-0.06%)

Contract

0x13dccb630bA92989299bBc276486C28673CA69E8
 

Overview

ETH Balance

0.001100327429789608 ETH

Eth Value

$2.21 (@ $2,005.38/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Purchase138936852021-12-28 12:16:071185 days ago1640693767IN
0x13dccb63...673CA69E8
0.0055 ETH0.004392963.73646401
Purchase138936502021-12-28 12:07:581185 days ago1640693278IN
0x13dccb63...673CA69E8
0.0055 ETH0.0050534655.64082441
Purchase135608552021-11-06 4:25:321237 days ago1636172732IN
0x13dccb63...673CA69E8
0.02567758 ETH0.0076360184.07581799
Payout56420762018-05-19 19:14:432503 days ago1526757283IN
0x13dccb63...673CA69E8
0 ETH0.000139156
Payout56306132018-05-17 18:17:422505 days ago1526581062IN
0x13dccb63...673CA69E8
0 ETH0.0003467211
Add Art53247042018-03-26 10:28:102558 days ago1522060090IN
0x13dccb63...673CA69E8
0 ETH0.000289142
Add Art53246662018-03-26 10:20:122558 days ago1522059612IN
0x13dccb63...673CA69E8
0 ETH0.000288372
Add Art53246422018-03-26 10:11:022558 days ago1522059062IN
0x13dccb63...673CA69E8
0 ETH0.000291512
Add Art53245562018-03-26 9:53:182558 days ago1522057998IN
0x13dccb63...673CA69E8
0 ETH0.000321892
Purchase52707412018-03-17 9:59:482567 days ago1521280788IN
0x13dccb63...673CA69E8
0.005 ETH0.00002391
Purchase52703702018-03-17 8:24:242567 days ago1521275064IN
0x13dccb63...673CA69E8
0.0055 ETH0.000212562
Purchase52655302018-03-16 12:27:102568 days ago1521203230IN
0x13dccb63...673CA69E8
0.005 ETH0.000167442
Add Art To52529142018-03-14 8:51:132570 days ago1521017473IN
0x13dccb63...673CA69E8
0 ETH0.000487053
Add Art52374052018-03-11 17:40:232572 days ago1520790023IN
0x13dccb63...673CA69E8
0 ETH0.0003212
Purchase52330652018-03-10 23:58:482573 days ago1520726328IN
0x13dccb63...673CA69E8
0.01 ETH0.000068721
Add Art52141292018-03-07 18:51:332576 days ago1520448693IN
0x13dccb63...673CA69E8
0 ETH0.000322532
Purchase51936772018-03-04 7:28:552580 days ago1520148535IN
0x13dccb63...673CA69E8
0.01105151 ETH0.000339143
Purchase51922842018-03-04 1:45:372580 days ago1520127937IN
0x13dccb63...673CA69E8
0.005 ETH0.000251163
Purchase51913872018-03-03 22:10:032580 days ago1520115003IN
0x13dccb63...673CA69E8
0.005 ETH0.000083721
Purchase51913772018-03-03 22:08:132580 days ago1520114893IN
0x13dccb63...673CA69E8
0.005 ETH0.000083721
Purchase51912752018-03-03 21:47:572580 days ago1520113677IN
0x13dccb63...673CA69E8
0.005 ETH0.000098721
Purchase51875482018-03-03 6:35:292581 days ago1520058929IN
0x13dccb63...673CA69E8
0.02613341 ETH0.000339143
Purchase51874782018-03-03 6:16:122581 days ago1520057772IN
0x13dccb63...673CA69E8
0.00654023 ETH0.000180972
Add Art51731802018-02-28 20:03:552583 days ago1519848235IN
0x13dccb63...673CA69E8
0 ETH0.000291892
Add Art51731382018-02-28 19:52:542583 days ago1519847574IN
0x13dccb63...673CA69E8
0 ETH0.000291512
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-138936852021-12-28 12:16:071185 days ago1640693767
0x13dccb63...673CA69E8
0.005335 ETH
-138936502021-12-28 12:07:581185 days ago1640693278
0x13dccb63...673CA69E8
0.005335 ETH
-135608552021-11-06 4:25:321237 days ago1636172732
0x13dccb63...673CA69E8
0.02490725 ETH
Transfer56306132018-05-17 18:17:422505 days ago1526581062
0x13dccb63...673CA69E8
0.19798406 ETH
Transfer52703702018-03-17 8:24:242567 days ago1521275064
0x13dccb63...673CA69E8
0.005335 ETH
Transfer51936772018-03-04 7:28:552580 days ago1520148535
0x13dccb63...673CA69E8
0.00000216 ETH
Transfer51936772018-03-04 7:28:552580 days ago1520148535
0x13dccb63...673CA69E8
0.01071786 ETH
Transfer51875482018-03-03 6:35:292581 days ago1520058929
0x13dccb63...673CA69E8
0.00001833 ETH
Transfer51875482018-03-03 6:35:292581 days ago1520058929
0x13dccb63...673CA69E8
0.02533163 ETH
Transfer51874782018-03-03 6:16:122581 days ago1520057772
0x13dccb63...673CA69E8
0.00003047 ETH
Transfer51719582018-02-28 15:08:332584 days ago1519830513
0x13dccb63...673CA69E8
0.02777957 ETH
Transfer51719582018-02-28 15:08:332584 days ago1519830513
0x13dccb63...673CA69E8
0.02776908 ETH
Transfer51717022018-02-28 14:05:552584 days ago1519826755
0x13dccb63...673CA69E8
0.00001096 ETH
Transfer51717022018-02-28 14:05:552584 days ago1519826755
0x13dccb63...673CA69E8
0.02004047 ETH
Transfer51706772018-02-28 9:52:252584 days ago1519811545
0x13dccb63...673CA69E8
0.00000743 ETH
Transfer51706772018-02-28 9:52:252584 days ago1519811545
0x13dccb63...673CA69E8
0.03271391 ETH
Transfer51705122018-02-28 9:08:592584 days ago1519808939
0x13dccb63...673CA69E8
0.00006581 ETH
Transfer51705122018-02-28 9:08:592584 days ago1519808939
0x13dccb63...673CA69E8
0.02225026 ETH
Transfer51705122018-02-28 9:08:592584 days ago1519808939
0x13dccb63...673CA69E8
0.00009022 ETH
Transfer51705122018-02-28 9:08:592584 days ago1519808939
0x13dccb63...673CA69E8
0.02898554 ETH
Transfer51705112018-02-28 9:08:362584 days ago1519808916
0x13dccb63...673CA69E8
0.0000942 ETH
Transfer51705112018-02-28 9:08:362584 days ago1519808916
0x13dccb63...673CA69E8
0.02834377 ETH
Transfer51705062018-02-28 9:07:352584 days ago1519808855
0x13dccb63...673CA69E8
0.00014117 ETH
Transfer51705062018-02-28 9:07:352584 days ago1519808855
0x13dccb63...673CA69E8
0.02544995 ETH
Transfer51703092018-02-28 8:16:362584 days ago1519805796
0x13dccb63...673CA69E8
0.00000894 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BitGallery

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-19
*/

pragma solidity 0.4.19;

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

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

    /**
    * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint a, uint b) internal pure returns (uint) {
        assert(b <= a);
        return a - b;
    }

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

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

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

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

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

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

/**
 * @title Heritable
 * @dev The Heritable contract provides ownership transfer capabilities, in the
 * case that the current owner stops "heartbeating". Only the heir can pronounce the
 * owner's death.
 */
contract Heritable is Ownable {
    address public heir;

    // Time window the owner has to notify they are alive.
    uint public heartbeatTimeout;

    // Timestamp of the owner's death, as pronounced by the heir.
    uint public timeOfDeath;

    event HeirChanged(address indexed owner, address indexed newHeir);
    event OwnerHeartbeated(address indexed owner);
    event OwnerProclaimedDead(address indexed owner, address indexed heir, uint timeOfDeath);
    event HeirOwnershipClaimed(address indexed previousOwner, address indexed newOwner);


    /**
    * @dev Throw an exception if called by any account other than the heir's.
    */
    modifier onlyHeir() {
        require(msg.sender == heir);
        _;
    }


    /**
    * @notice Create a new Heritable Contract with heir address 0x0.
    * @param _heartbeatTimeout time available for the owner to notify they are alive,
    * before the heir can take ownership.
    */
    function Heritable(uint _heartbeatTimeout) public {
        setHeartbeatTimeout(_heartbeatTimeout);
    }

    function setHeir(address newHeir) public onlyOwner {
        require(newHeir != owner);
        heartbeat();
        HeirChanged(owner, newHeir);
        heir = newHeir;
    }

    /**
    * @dev set heir = 0x0
    */
    function removeHeir() public onlyOwner {
        heartbeat();
        heir = 0;
    }

    /**
    * @dev Heir can pronounce the owners death. To claim the ownership, they will
    * have to wait for `heartbeatTimeout` seconds.
    */
    function proclaimDeath() public onlyHeir {
        require(owner != heir); // added
        require(ownerLives());
        OwnerProclaimedDead(owner, heir, timeOfDeath);
        timeOfDeath = now;
    }

    /**
    * @dev Owner can send a heartbeat if they were mistakenly pronounced dead.
    */
    function heartbeat() public onlyOwner {
        OwnerHeartbeated(owner);
        timeOfDeath = 0;
    }

    /**
    * @dev Allows heir to transfer ownership only if heartbeat has timed out.
    */
    function claimHeirOwnership() public onlyHeir {
        require(!ownerLives());
        require(now >= timeOfDeath + heartbeatTimeout);
        OwnershipTransferred(owner, heir);
        HeirOwnershipClaimed(owner, heir);
        owner = heir;
        timeOfDeath = 0;
    }

    function setHeartbeatTimeout(uint newHeartbeatTimeout) internal onlyOwner {
        require(ownerLives());
        heartbeatTimeout = newHeartbeatTimeout;
    }

    function ownerLives() internal view returns (bool) {
        return timeOfDeath == 0;
    }
}

/// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens
/// @author Dieter Shirley <[email protected]> (https://github.com/dete)
contract ERC721 {
    // Required methods
    function approve(address _to, uint _tokenId) public;
    function balanceOf(address _owner) public view returns (uint balance);
    function implementsERC721() public pure returns (bool);
    function ownerOf(uint _tokenId) public view returns (address addr);
    function takeOwnership(uint _tokenId) public;
    function totalSupply() public view returns (uint total);
    function transferFrom(address _from, address _to, uint _tokenId) public;
    function transfer(address _to, uint _tokenId) public;

    event Transfer(address indexed from, address indexed to, uint tokenId);
    event Approval(address indexed owner, address indexed approved, uint tokenId);

    // Optional
    // function name() public view returns (string name);
    // function symbol() public view returns (string symbol);
    // function tokenOfOwnerByIndex(address _owner, uint _index) external view returns (uint tokenId);
    // function tokenMetadata(uint _tokenId) public view returns (string infoUrl);
}

contract BitArtToken is Heritable, ERC721 {
    string public constant NAME = "BitGallery";
    string public constant SYMBOL = "BitArt";

    struct Art {
        bytes32 data;
    }

    Art[] internal arts;

    mapping (uint => address) public tokenOwner;
    mapping (address => uint) public ownedTokenCount;
    mapping (uint => address) public tokenApprovals;

    event Transfer(address from, address to, uint tokenId);
    event Approval(address owner, address approved, uint tokenId);

    // 30 days to change owner
    function BitArtToken() Heritable(2592000) public {}

    function tokensOf(address _owner) external view returns(uint[]) {
        uint tokenCount = balanceOf(_owner);

        if (tokenCount == 0) {
            return new uint[](0);
        } else {
            uint[] memory result = new uint[](tokenCount);
            uint totaltokens = totalSupply();
            uint index = 0;
            
            for (uint tokenId = 0; tokenId < totaltokens; tokenId++) {
                if (tokenOwner[tokenId] == _owner) {
                    result[index] = tokenId;
                    index++;
                }
            }
            
            return result;
        }
    }

    function approve(address _to, uint _tokenId) public {
        require(_owns(msg.sender, _tokenId));
        tokenApprovals[_tokenId] = _to;
        Approval(msg.sender, _to, _tokenId);
    }

    function balanceOf(address _owner) public view returns (uint balance) {
        return ownedTokenCount[_owner];
    }

    function getArts() public view returns (bytes32[]) {
        uint count = totalSupply();
        bytes32[] memory result = new bytes32[](count);

        for (uint i = 0; i < count; i++) {
            result[i] = arts[i].data;
        }

        return result;
    }

    function implementsERC721() public pure returns (bool) {
        return true;
    }

    function name() public pure returns (string) {
        return NAME;
    }

    function ownerOf(uint _tokenId) public view returns (address owner) {
        owner = tokenOwner[_tokenId];
        require(_addressNotNull(owner));
    }

    function symbol() public pure returns (string) {
        return SYMBOL;
    }

    function takeOwnership(uint _tokenId) public {
        address newOwner = msg.sender;
        require(_addressNotNull(newOwner));
        require(_approved(newOwner, _tokenId));
        address oldOwner = tokenOwner[_tokenId];

        _transfer(oldOwner, newOwner, _tokenId);
    }

    function totalSupply() public view returns (uint total) {
        return arts.length;
    }

    function transfer(address _to, uint _tokenId) public {
        require(_owns(msg.sender, _tokenId));
        require(_addressNotNull(_to));

        _transfer(msg.sender, _to, _tokenId);
    }

    function transferFrom(address _from, address _to, uint _tokenId) public {
        require(_owns(_from, _tokenId));
        require(_approved(_to, _tokenId));
        require(_addressNotNull(_to));

        _transfer(_from, _to, _tokenId);
    }

    function _mint(address _to, uint256 _tokenId) internal {
        require(_to != address(0));
        require(tokenOwner[_tokenId] == address(0));

        _transfer(0x0, _to, _tokenId);
    }

    function _transfer(address _from, address _to, uint _tokenId) internal {
        require(_from != _to);
        ownedTokenCount[_to]++;
        tokenOwner[_tokenId] = _to;

        if (_addressNotNull(_from)) {
            ownedTokenCount[_from]--;
            delete tokenApprovals[_tokenId];
        }

        Transfer(_from, _to, _tokenId);
    }

    function _addressNotNull(address _address) private pure returns (bool) {
        return _address != address(0);
    }

    function _approved(address _to, uint _tokenId) private view returns (bool) {
        return tokenApprovals[_tokenId] == _to;
    }

    function _owns(address _claimant, uint _tokenId) private view returns (bool) {
        return _claimant == tokenOwner[_tokenId];
    }
}

contract BitAuction is BitArtToken {
    using SafeMath for uint;

    struct Auction {
        uint basePrice;
        uint64 time1;
        uint64 time2;
        uint8 pct1;
        uint8 pct2;
        uint8 discount;
    }

    uint internal _auctionStartsAfter;
    uint internal _auctionDuration;
    uint internal _auctionFee;

    mapping (uint => Auction) public tokenAuction;

    event AuctionRulesChanged(uint startsAfter, uint duration, uint fee);
    event NewAuction(uint tokenId, uint discount);
    event NewSaleDiscount(uint tokenId, uint discount);

    function BitAuction() public { }

    function setSaleDiscount(uint _tokenId, uint _discount) external {      
        require(ownerOf(_tokenId) == msg.sender);
        require(_discount <= 90);
        require(_discount >= 10);

        Auction storage auction = tokenAuction[_tokenId];
        require(auction.basePrice > 0);        
        require(auction.time2 <= now);
        auction.discount = uint8(_discount);

        NewSaleDiscount(_tokenId, _discount);
    }

    function canPurchase(uint _tokenId) public view returns (bool) {
        Auction storage auction = tokenAuction[_tokenId];
        require(auction.time1 > 0);
        return (now >= auction.time1 && priceOf(_tokenId) > 0);
    }

    function getPrices(uint[] _ids) public view returns (uint[]) {
        uint count = _ids.length;
        bool isEmpty = count == 0;

        if (isEmpty) {
            count = totalSupply();
        }

        uint[] memory result = new uint[](count);
        
        for (uint i = 0; i < count; i++) {
            uint tokenId = isEmpty ? i : _ids[i];
            result[i] = priceOf(tokenId);
        }        
        
        return result;
    }

    function priceOf(uint _tokenId) public view returns (uint) {
        Auction storage auction = tokenAuction[_tokenId];
        return _currentPrice(auction);
    }

    function setAuctionDurationRules(uint _timeAfter, uint _duration, uint _fee) public onlyOwner {  
        require(_timeAfter >= 0 seconds);
        require(_timeAfter <= 7 days);
        require(_duration >= 24 hours);
        require(_duration <= 30 days);
        require(_fee >= 1);
        require(_fee <= 5);
        
        _auctionStartsAfter = _timeAfter;
        _auctionDuration = _duration;
        _auctionFee = _fee;

        AuctionRulesChanged(_timeAfter, _duration, _fee);
    }

    function _createCustomAuction(uint _tokenId, uint _basePrice, uint _time1, uint _time2, uint _pct1, uint _pct2) private {
        require(_time1 >= now);
        require(_time2 >= _time1);
        require(_pct1 > 0);
        require(_pct2 > 0);
        
        Auction memory auction = Auction({
            basePrice: _basePrice, 
            time1: uint64(_time1), 
            time2: uint64(_time2), 
            pct1: uint8(_pct1), 
            pct2: uint8(_pct2), 
            discount: 0           
        });

        tokenAuction[_tokenId] = auction;
    }

    function _createNewTokenAuction(uint _tokenId, uint _basePrice) internal {
        _createCustomAuction(_tokenId, _basePrice, now, now + _auctionStartsAfter + _auctionDuration, 100, 10);
    }

    function _createStandartAuction(uint _tokenId, uint _basePrice) internal {
        uint start = now + _auctionStartsAfter;
        _createCustomAuction(_tokenId, _basePrice, start, start + _auctionDuration, 200, 110);
    }

    function _currentPrice(Auction _auction) internal view returns (uint) {
        if (_auction.discount > 0) {
            return uint((_auction.basePrice * (100 - _auction.discount)) / 100);
        }

        uint _startingPrice = uint((_auction.basePrice * _auction.pct1) / 100);

        if (_auction.time1 > now) {
            return _startingPrice;
        }

        uint _secondsPassed = uint(now - _auction.time1);
        uint _duration = uint(_auction.time2 - _auction.time1);
        uint _endingPrice = uint((_auction.basePrice * _auction.pct2) / 100);

        if (_secondsPassed >= _duration) {
            return _endingPrice;
        } else {
            int totalPriceChange = int(_endingPrice) - int(_startingPrice);
            int currentPriceChange = totalPriceChange * int(_secondsPassed) / int(_duration);
            int currentPrice = int(_startingPrice) + currentPriceChange;

            return uint(currentPrice);
        }
    }

    function _computePrice(uint _secondsPassed, uint _duration, uint _startingPrice, uint _endingPrice) private pure returns (uint) {
        if (_secondsPassed >= _duration) {
            return _endingPrice;
        } else {
            int totalPriceChange = int(_endingPrice) - int(_startingPrice);
            int currentPriceChange = totalPriceChange * int(_secondsPassed) / int(_duration);
            int currentPrice = int(_startingPrice) + currentPriceChange;

            return uint(currentPrice);
        }
    }
}

contract BitGallery is BitAuction {
    using SafeMath for uint;

    string public infoMessage;

    event TokenSold(uint tokenId, uint price, address from, address to);
    event NewToken(uint tokenId, string metadata);

    function BitGallery() public {
        setAuctionDurationRules(24 hours, 6 days, 3);

        setMessage("Our web site is www.bitgallery.co");                          
    }

    function() public payable {}

    function addArt(string _keyData, uint _basePrice) public onlyOwner {
        return addArtTo(address(this), _keyData, _basePrice);
    }

    function addArtTo(address _owner, string _keyData, uint _basePrice) public onlyOwner {
        require(_basePrice >= 1 finney);
        
        Art memory _art = Art({
            data: keccak256(_keyData)
        });

        uint tokenId = arts.push(_art) - 1;
        NewToken(tokenId, _keyData);
        _mint(_owner, tokenId);
        _createNewTokenAuction(tokenId, _basePrice);
    }

    function artExists(string _keydata) public view returns (bool) {
        for (uint i = 0; i < totalSupply(); i++) {
            if (arts[i].data == keccak256(_keydata)) {
                return true;
            }
        }

        return false;
    }

    function fullDataOf(uint _tokenId) public view returns (
        uint basePrice,
        uint64 time1,
        uint64 time2,
        uint8 pct1,
        uint8 pct2,
        uint8 discount,
        uint currentPrice,
        bool _canPurchase,
        address owner
    ) {
        Auction storage auction = tokenAuction[_tokenId];
        basePrice = auction.basePrice;
        time1 = auction.time1;
        time2 = auction.time2;
        pct1 = auction.pct1;
        pct2 = auction.pct2;
        discount = auction.discount;
        currentPrice = priceOf(_tokenId);
        _canPurchase = canPurchase(_tokenId);
        owner = ownerOf(_tokenId);
    }

    function payout(address _to) public onlyOwner {
        require(_to != address(this));
        
        if (_to == address(0)) { 
            _to = msg.sender;
        }

        _to.transfer(this.balance);
    }

    function purchase(uint _tokenId) public payable {
        Auction storage auction = tokenAuction[_tokenId];
        require(now >= auction.time1);
        uint price = _currentPrice(auction);
        require(msg.value >= price);

        uint payment = uint((price * (100 - _auctionFee)) / 100);
        uint purchaseExcess = msg.value - price;
        _createStandartAuction(_tokenId, price);

        address from = ownerOf(_tokenId);
        address to = msg.sender;
        _transfer(from, to, _tokenId);

        if (from != address(this)) {
            from.transfer(payment);
        }

        TokenSold(_tokenId, price, from, to);
        msg.sender.transfer(purchaseExcess);
    }

    function setMessage(string _message) public onlyOwner {        
        infoMessage = _message;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_ids","type":"uint256[]"}],"name":"getPrices","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimHeirOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownedTokenCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newHeir","type":"address"}],"name":"setHeir","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"proclaimDeath","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_keyData","type":"string"},{"name":"_basePrice","type":"uint256"}],"name":"addArt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_message","type":"string"}],"name":"setMessage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_discount","type":"uint256"}],"name":"setSaleDiscount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"heartbeat","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"fullDataOf","outputs":[{"name":"basePrice","type":"uint256"},{"name":"time1","type":"uint64"},{"name":"time2","type":"uint64"},{"name":"pct1","type":"uint8"},{"name":"pct2","type":"uint8"},{"name":"discount","type":"uint8"},{"name":"currentPrice","type":"uint256"},{"name":"_canPurchase","type":"bool"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getArts","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"heartbeatTimeout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"canPurchase","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"heir","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"infoMessage","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_keydata","type":"string"}],"name":"artExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenApprovals","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"timeOfDeath","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"priceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_timeAfter","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_fee","type":"uint256"}],"name":"setAuctionDurationRules","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"removeHeir","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenAuction","outputs":[{"name":"basePrice","type":"uint256"},{"name":"time1","type":"uint64"},{"name":"time2","type":"uint64"},{"name":"pct1","type":"uint8"},{"name":"pct2","type":"uint8"},{"name":"discount","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_keyData","type":"string"},{"name":"_basePrice","type":"uint256"}],"name":"addArtTo","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":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"}],"name":"TokenSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"metadata","type":"string"}],"name":"NewToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startsAfter","type":"uint256"},{"indexed":false,"name":"duration","type":"uint256"},{"indexed":false,"name":"fee","type":"uint256"}],"name":"AuctionRulesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"discount","type":"uint256"}],"name":"NewAuction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"discount","type":"uint256"}],"name":"NewSaleDiscount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"newHeir","type":"address"}],"name":"HeirChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerHeartbeated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"heir","type":"address"},{"indexed":false,"name":"timeOfDeath","type":"uint256"}],"name":"OwnerProclaimedDead","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"HeirOwnershipClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

606060405234156200001057600080fd5b60008054600160a060020a03191633600160a060020a031617905562278d006200004881640100000000620000e5810262001faf1704565b506200006b620151806207e9006003640100000000620014e26200012a82021704565b620000df60606040519081016040908152602182527f4f7572207765622073697465206973207777772e62697467616c6c6572792e6360208301527f6f000000000000000000000000000000000000000000000000000000000000009082015264010000000062000d916200020182021704565b620002e0565b60005433600160a060020a039081169116146200010157600080fd5b6200011964010000000062001aad6200023682021704565b15156200012557600080fd5b600255565b60005433600160a060020a039081169116146200014657600080fd5b60008310156200015557600080fd5b62093a808311156200016657600080fd5b620151808210156200017757600080fd5b62278d008211156200018857600080fd5b60018110156200019757600080fd5b6005811115620001a657600080fd5b60088390556009829055600a8190557fe69f8fd4054d4231f941e78995aa6b652a1a26018c0f0c0e89987f07f1390c6683838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b60005433600160a060020a039081169116146200021d57600080fd5b600c818051620002329291602001906200023e565b5050565b600354155b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028157805160ff1916838001178555620002b1565b82800160010185558215620002b1579182015b82811115620002b157825182559160200191906001019062000294565b50620002bf929150620002c3565b5090565b6200023b91905b80821115620002bf5760008155600101620002ca565b61200e80620002f06000396000f3006060604052600436106101f85763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101fa578063095ea7b31461028457806309cb3a4e146102a65780630b7e9c44146103485780631051db341461036757806318160ddd1461038e5780631c921e16146103b35780631caaa487146103c65780631d4f828a146103f857806323b872dd1461041757806323defc771461043f578063248451311461045e578063306ad3fd14610471578063368b8772146104c45780633949e341146105155780633defb9621461052e5780635a3f26721461054157806361f35cbb14610560578063632ca5c9146105e05780636352211e146105f357806370a08231146106095780637bca38be146106285780638257f6101461063b5780638da5cb5b1461065157806391f2ebb81461066457806395d89b41146106775780639c85a28a1461068a578063a3f4df7e1461069d578063a9059cbb146106b0578063ab15dd73146106d2578063acdeb5b914610723578063b2e6ceeb14610739578063b4a8f3e61461074f578063b9186d7d14610762578063c34136b614610778578063ebf88de414610794578063ed111e1c146107a7578063efef39a114610806578063f0ae74e314610811578063f2fde38b14610872578063f76f8d7814610891575b005b341561020557600080fd5b61020d6108a4565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610249578082015183820152602001610231565b50505050905090810190601f1680156102765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028f57600080fd5b6101f8600160a060020a03600435166024356108e6565b34156102b157600080fd5b6102f5600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061097a95505050505050565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561033457808201518382015260200161031c565b505050509050019250505060405180910390f35b341561035357600080fd5b6101f8600160a060020a0360043516610a33565b341561037257600080fd5b61037a610ac2565b604051901515815260200160405180910390f35b341561039957600080fd5b6103a1610ac7565b60405190815260200160405180910390f35b34156103be57600080fd5b6101f8610acd565b34156103d157600080fd5b6103dc600435610bb2565b604051600160a060020a03909116815260200160405180910390f35b341561040357600080fd5b6103a1600160a060020a0360043516610bcd565b341561042257600080fd5b6101f8600160a060020a0360043581169060243516604435610bdf565b341561044a57600080fd5b6101f8600160a060020a0360043516610c2d565b341561046957600080fd5b6101f8610cc9565b341561047c57600080fd5b6101f860046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505093359350610d6792505050565b34156104cf57600080fd5b6101f860046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610d9195505050505050565b341561052057600080fd5b6101f8600435602435610dbf565b341561053957600080fd5b6101f8610eb1565b341561054c57600080fd5b6102f5600160a060020a0360043516610f0b565b341561056b57600080fd5b610576600435610fe7565b60405198895267ffffffffffffffff97881660208a01529590961660408089019190915260ff94851660608901529284166080880152921660a086015260c085019190915291151560e0840152600160a060020a0316610100830152610120909101905180910390f35b34156105eb57600080fd5b6102f561108b565b34156105fe57600080fd5b6103dc600435611116565b341561061457600080fd5b6103a1600160a060020a0360043516611147565b341561063357600080fd5b6103a1611162565b341561064657600080fd5b61037a600435611168565b341561065c57600080fd5b6103dc6111c0565b341561066f57600080fd5b6103dc6111cf565b341561068257600080fd5b61020d6111de565b341561069557600080fd5b61020d61121f565b34156106a857600080fd5b61020d6112bd565b34156106bb57600080fd5b6101f8600160a060020a03600435166024356112f4565b34156106dd57600080fd5b61037a60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061132895505050505050565b341561072e57600080fd5b6103dc6004356113d2565b341561074457600080fd5b6101f86004356113ed565b341561075a57600080fd5b6103a161143d565b341561076d57600080fd5b6103a1600435611443565b341561078357600080fd5b6101f86004356024356044356114e2565b341561079f57600080fd5b6101f86115b2565b34156107b257600080fd5b6107bd6004356115e7565b60405195865267ffffffffffffffff94851660208701529290931660408086019190915260ff918216606086015292811660808501521660a083015260c0909101905180910390f35b6101f8600435611657565b341561081c57600080fd5b6101f860048035600160a060020a03169060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650509335935061183e92505050565b341561087d57600080fd5b6101f8600160a060020a03600435166119c8565b341561089c57600080fd5b61020d611a56565b6108ac611eac565b60408051908101604052600a81527f42697447616c6c65727900000000000000000000000000000000000000000000602082015290505b90565b6108f03382611a8d565b15156108fb57600080fd5b600081815260076020526040908190208054600160a060020a031916600160a060020a0385161790557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259033908490849051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050565b610982611eac565b60008061098d611eac565b600080865194508415935083156109a9576109a6610ac7565b94505b846040518059106109b75750595b90808252806020026020018201604052509250600091505b84821015610a2557836109f7578682815181106109e857fe5b906020019060200201516109f9565b815b9050610a0481611443565b838381518110610a1057fe5b602090810290910101526001909101906109cf565b8295505b5050505050919050565b60005433600160a060020a03908116911614610a4e57600080fd5b30600160a060020a031681600160a060020a031614151515610a6f57600080fd5b600160a060020a0381161515610a825750335b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f193505050501515610abf57600080fd5b50565b600190565b60045490565b60015433600160a060020a03908116911614610ae857600080fd5b610af0611aad565b15610afa57600080fd5b60025460035401421015610b0d57600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600154600054600160a060020a0391821691167f1017a357e19071e4408dbd385f24e591aa5bcee52b444dc0c8abddbe6ad29de660405160405180910390a360015460008054600160a060020a031916600160a060020a03909216919091178155600355565b600560205260009081526040902054600160a060020a031681565b60066020526000908152604090205481565b610be98382611a8d565b1515610bf457600080fd5b610bfe8282611ab4565b1515610c0957600080fd5b610c1282611ad4565b1515610c1d57600080fd5b610c28838383611ae2565b505050565b60005433600160a060020a03908116911614610c4857600080fd5b600054600160a060020a0382811691161415610c6357600080fd5b610c6b610eb1565b600054600160a060020a0380831691167f4e6093f85fa64484abd692810d8a44d508792ff7b7a021d9fbd69fa1c6ff18a060405160405180910390a360018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610ce457600080fd5b600154600054600160a060020a0390811691161415610d0257600080fd5b610d0a611aad565b1515610d1557600080fd5b600154600054600354600160a060020a0392831692909116907f66389f1f3251c39e71cb18351daefea45bda23e98df0767266b8aed4ff9382779060405190815260200160405180910390a342600355565b60005433600160a060020a03908116911614610d8257600080fd5b610d8d30838361183e565b5050565b60005433600160a060020a03908116911614610dac57600080fd5b600c818051610d8d929160200190611ebe565b600033600160a060020a0316610dd484611116565b600160a060020a031614610de757600080fd5b605a821115610df557600080fd5b600a821015610e0357600080fd5b506000828152600b60205260408120805490919011610e2157600080fd5b6001810154426801000000000000000090910467ffffffffffffffff161115610e4957600080fd5b60018101805472ff0000000000000000000000000000000000001916609060020a60ff8516021790557f699c6178abef37ca53103b7ca4ad2d48b45c900372bc62f6812d4a5a219a59b6838360405191825260208201526040908101905180910390a1505050565b60005433600160a060020a03908116911614610ecc57600080fd5b600054600160a060020a03167fd40b9d9a7572411aff4bbb95ba7bd9a9d4e9b70747ec46f8fe7913c309b6845260405160405180910390a26000600355565b610f13611eac565b6000610f1d611eac565b6000806000610f2b87611147565b9450841515610f5b576000604051805910610f435750595b90808252806020026020018201604052509550610a29565b84604051805910610f695750595b90808252806020026020018201604052509350610f84610ac7565b925060009150600090505b82811015610fdf57600081815260056020526040902054600160a060020a0388811691161415610fd75780848381518110610fc657fe5b602090810290910101526001909101905b600101610f8f565b839550610a29565b6000818152600b6020526040812080546001820154909267ffffffffffffffff808316936801000000000000000084049091169260ff7001000000000000000000000000000000008204811693710100000000000000000000000000000000008304821693609060020a90930490911691819081906110658b611443565b93506110708b611168565b925061107b8b611116565b9150509193959799909294969850565b611093611eac565b600061109d611eac565b60006110a7610ac7565b9250826040518059106110b75750595b90808252806020026020018201604052509150600090505b8281101561110f5760048054829081106110e557fe5b6000918252602090912001548282815181106110fd57fe5b602090810290910101526001016110cf565b5092915050565b600081815260056020526040902054600160a060020a031661113781611ad4565b151561114257600080fd5b919050565b600160a060020a031660009081526006602052604090205490565b60025481565b6000818152600b60205260408120600181015467ffffffffffffffff1682901161119157600080fd5b600181015467ffffffffffffffff1642108015906111b7575060006111b584611443565b115b91505b50919050565b600054600160a060020a031681565b600154600160a060020a031681565b6111e6611eac565b60408051908101604052600681527f42697441727400000000000000000000000000000000000000000000000000006020820152905090565b600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112b55780601f1061128a576101008083540402835291602001916112b5565b820191906000526020600020905b81548152906001019060200180831161129857829003601f168201915b505050505081565b60408051908101604052600a81527f42697447616c6c65727900000000000000000000000000000000000000000000602082015281565b6112fe3382611a8d565b151561130957600080fd5b61131282611ad4565b151561131d57600080fd5b610d8d338383611ae2565b6000805b611334610ac7565b8110156113c957826040518082805190602001908083835b6020831061136b5780518252601f19909201916020918201910161134c565b6001836020036101000a038019825116818451161790925250505091909101925060409150505190819003902060048054839081106113a657fe5b60009182526020909120015414156113c157600191506111ba565b60010161132c565b50600092915050565b600760205260009081526040902054600160a060020a031681565b3360006113f982611ad4565b151561140457600080fd5b61140e8284611ab4565b151561141957600080fd5b50600082815260056020526040902054600160a060020a0316610c28818385611ae2565b60035481565b6000818152600b6020526040808220906111b790829060c0905190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925260ff70010000000000000000000000000000000083048116606083015271010000000000000000000000000000000000830481166080830152609060020a90920490911660a0820152611bd7565b60005433600160a060020a039081169116146114fd57600080fd5b600083101561150b57600080fd5b62093a8083111561151b57600080fd5b6201518082101561152b57600080fd5b62278d0082111561153b57600080fd5b600181101561154957600080fd5b600581111561155757600080fd5b60088390556009829055600a8190557fe69f8fd4054d4231f941e78995aa6b652a1a26018c0f0c0e89987f07f1390c6683838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b60005433600160a060020a039081169116146115cd57600080fd5b6115d5610eb1565b60018054600160a060020a0319169055565b600b602052600090815260409020805460019091015467ffffffffffffffff808216916801000000000000000081049091169060ff7001000000000000000000000000000000008204811691710100000000000000000000000000000000008104821691609060020a9091041686565b6000818152600b602052604081206001810154909190819081908190819067ffffffffffffffff1642101561168b57600080fd5b6117198660c060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925260ff70010000000000000000000000000000000083048116606083015271010000000000000000000000000000000000830481166080830152609060020a90920490911660a0820152611bd7565b9450348590101561172957600080fd5b600a546064908103860204935084340392506117458786611cca565b61174e87611116565b915033905061175e828289611ae2565b30600160a060020a031682600160a060020a03161415156117aa57600160a060020a03821684156108fc0285604051600060405180830381858888f1935050505015156117aa57600080fd5b7fb45b7a510d22eabde36919bed5551eccad687e7b55e2d2aa3033dc0786a9877b878684846040519384526020840192909252600160a060020a03908116604080850191909152911660608301526080909101905180910390a1600160a060020a03331683156108fc0284604051600060405180830381858888f19350505050151561183557600080fd5b50505050505050565b611846611eac565b6000805433600160a060020a0390811691161461186257600080fd5b66038d7ea4c6800083101561187657600080fd5b602060405190810160405280856040518082805190602001908083835b602083106118b25780518252601f199092019160209182019101611893565b6001836020036101000a03801982511681845116179092525050509190910192506040915050519081900390209052600480549193506001918083016118f88382611f3c565b6000928352602090922085910181519055500390507fca8605e5b2854022d4ef7e920a48b0c49ca69a8453970d922c3dd8b93057fa67818560405182815260406020820181815290820183818151815260200191508051906020019080838360005b8381101561197257808201518382015260200161195a565b50505050905090810190601f16801561199f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a16119b78582611ce7565b6119c18184611d2a565b5050505050565b60005433600160a060020a039081169116146119e357600080fd5b600160a060020a03811615156119f857600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b60408051908101604052600681527f4269744172740000000000000000000000000000000000000000000000000000602082015281565b600090815260056020526040902054600160a060020a0390811691161490565b6003541590565b600090815260076020526040902054600160a060020a0391821691161490565b600160a060020a0316151590565b600160a060020a038381169083161415611afb57600080fd5b600160a060020a038216600081815260066020908152604080832080546001019055848352600590915290208054600160a060020a0319169091179055611b4183611ad4565b15611b8257600160a060020a03831660009081526006602090815260408083208054600019019055838352600790915290208054600160a060020a03191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b60008060008060008060008060008960a0015160ff161115611c175760648960a0015160640360ff168a6000015102811515611c0f57fe5b049750611cbe565b6064896060015160ff168a5102811515611c2d57fe5b04965042896020015167ffffffffffffffff161115611c4e57869750611cbe565b886020015167ffffffffffffffff1642039550886020015189604001510367ffffffffffffffff1694506064896080015160ff168a5102811515611c8e57fe5b049350848610611ca057839750611cbe565b868403925084868402811515611cb257fe5b05915081870190508097505b50505050505050919050565b600060085442019050610c28838383600954850160c8606e611d3e565b600160a060020a0382161515611cfc57600080fd5b600081815260056020526040902054600160a060020a031615611d1e57600080fd5b610d8d60008383611ae2565b610d8d8282426009546008544201016064600a5b611d46611f60565b42851015611d5357600080fd5b84841015611d6057600080fd5b60008311611d6d57600080fd5b60008211611d7a57600080fd5b60c0604051908101604090815287825267ffffffffffffffff8088166020808501919091529087168284015260ff808716606085015285166080840152600060a084018190528a8152600b90915220909150819081518155602082015160018201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548160ff021916908360ff16021790555060808201518160010160116101000a81548160ff021916908360ff16021790555060a08201516001909101805460ff92909216609060020a0272ff000000000000000000000000000000000000199092169190911790555050505050505050565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611eff57805160ff1916838001178555611f2c565b82800160010185558215611f2c579182015b82811115611f2c578251825591602001919060010190611f11565b50611f38929150611f95565b5090565b815481835581811511610c2857600083815260209020610c28918101908301611f95565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b6108e391905b80821115611f385760008155600101611f9b565b60005433600160a060020a03908116911614611fca57600080fd5b611fd2611aad565b1515611fdd57600080fd5b6002555600a165627a7a723058202d38690b3cb2f39fa03f8d20b1fc9f8b9b165fa01258d2bc3a6d7584ca9d3c3f0029

Deployed Bytecode

0x6060604052600436106101f85763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101fa578063095ea7b31461028457806309cb3a4e146102a65780630b7e9c44146103485780631051db341461036757806318160ddd1461038e5780631c921e16146103b35780631caaa487146103c65780631d4f828a146103f857806323b872dd1461041757806323defc771461043f578063248451311461045e578063306ad3fd14610471578063368b8772146104c45780633949e341146105155780633defb9621461052e5780635a3f26721461054157806361f35cbb14610560578063632ca5c9146105e05780636352211e146105f357806370a08231146106095780637bca38be146106285780638257f6101461063b5780638da5cb5b1461065157806391f2ebb81461066457806395d89b41146106775780639c85a28a1461068a578063a3f4df7e1461069d578063a9059cbb146106b0578063ab15dd73146106d2578063acdeb5b914610723578063b2e6ceeb14610739578063b4a8f3e61461074f578063b9186d7d14610762578063c34136b614610778578063ebf88de414610794578063ed111e1c146107a7578063efef39a114610806578063f0ae74e314610811578063f2fde38b14610872578063f76f8d7814610891575b005b341561020557600080fd5b61020d6108a4565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610249578082015183820152602001610231565b50505050905090810190601f1680156102765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028f57600080fd5b6101f8600160a060020a03600435166024356108e6565b34156102b157600080fd5b6102f5600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061097a95505050505050565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561033457808201518382015260200161031c565b505050509050019250505060405180910390f35b341561035357600080fd5b6101f8600160a060020a0360043516610a33565b341561037257600080fd5b61037a610ac2565b604051901515815260200160405180910390f35b341561039957600080fd5b6103a1610ac7565b60405190815260200160405180910390f35b34156103be57600080fd5b6101f8610acd565b34156103d157600080fd5b6103dc600435610bb2565b604051600160a060020a03909116815260200160405180910390f35b341561040357600080fd5b6103a1600160a060020a0360043516610bcd565b341561042257600080fd5b6101f8600160a060020a0360043581169060243516604435610bdf565b341561044a57600080fd5b6101f8600160a060020a0360043516610c2d565b341561046957600080fd5b6101f8610cc9565b341561047c57600080fd5b6101f860046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505093359350610d6792505050565b34156104cf57600080fd5b6101f860046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610d9195505050505050565b341561052057600080fd5b6101f8600435602435610dbf565b341561053957600080fd5b6101f8610eb1565b341561054c57600080fd5b6102f5600160a060020a0360043516610f0b565b341561056b57600080fd5b610576600435610fe7565b60405198895267ffffffffffffffff97881660208a01529590961660408089019190915260ff94851660608901529284166080880152921660a086015260c085019190915291151560e0840152600160a060020a0316610100830152610120909101905180910390f35b34156105eb57600080fd5b6102f561108b565b34156105fe57600080fd5b6103dc600435611116565b341561061457600080fd5b6103a1600160a060020a0360043516611147565b341561063357600080fd5b6103a1611162565b341561064657600080fd5b61037a600435611168565b341561065c57600080fd5b6103dc6111c0565b341561066f57600080fd5b6103dc6111cf565b341561068257600080fd5b61020d6111de565b341561069557600080fd5b61020d61121f565b34156106a857600080fd5b61020d6112bd565b34156106bb57600080fd5b6101f8600160a060020a03600435166024356112f4565b34156106dd57600080fd5b61037a60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061132895505050505050565b341561072e57600080fd5b6103dc6004356113d2565b341561074457600080fd5b6101f86004356113ed565b341561075a57600080fd5b6103a161143d565b341561076d57600080fd5b6103a1600435611443565b341561078357600080fd5b6101f86004356024356044356114e2565b341561079f57600080fd5b6101f86115b2565b34156107b257600080fd5b6107bd6004356115e7565b60405195865267ffffffffffffffff94851660208701529290931660408086019190915260ff918216606086015292811660808501521660a083015260c0909101905180910390f35b6101f8600435611657565b341561081c57600080fd5b6101f860048035600160a060020a03169060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650509335935061183e92505050565b341561087d57600080fd5b6101f8600160a060020a03600435166119c8565b341561089c57600080fd5b61020d611a56565b6108ac611eac565b60408051908101604052600a81527f42697447616c6c65727900000000000000000000000000000000000000000000602082015290505b90565b6108f03382611a8d565b15156108fb57600080fd5b600081815260076020526040908190208054600160a060020a031916600160a060020a0385161790557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259033908490849051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050565b610982611eac565b60008061098d611eac565b600080865194508415935083156109a9576109a6610ac7565b94505b846040518059106109b75750595b90808252806020026020018201604052509250600091505b84821015610a2557836109f7578682815181106109e857fe5b906020019060200201516109f9565b815b9050610a0481611443565b838381518110610a1057fe5b602090810290910101526001909101906109cf565b8295505b5050505050919050565b60005433600160a060020a03908116911614610a4e57600080fd5b30600160a060020a031681600160a060020a031614151515610a6f57600080fd5b600160a060020a0381161515610a825750335b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f193505050501515610abf57600080fd5b50565b600190565b60045490565b60015433600160a060020a03908116911614610ae857600080fd5b610af0611aad565b15610afa57600080fd5b60025460035401421015610b0d57600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600154600054600160a060020a0391821691167f1017a357e19071e4408dbd385f24e591aa5bcee52b444dc0c8abddbe6ad29de660405160405180910390a360015460008054600160a060020a031916600160a060020a03909216919091178155600355565b600560205260009081526040902054600160a060020a031681565b60066020526000908152604090205481565b610be98382611a8d565b1515610bf457600080fd5b610bfe8282611ab4565b1515610c0957600080fd5b610c1282611ad4565b1515610c1d57600080fd5b610c28838383611ae2565b505050565b60005433600160a060020a03908116911614610c4857600080fd5b600054600160a060020a0382811691161415610c6357600080fd5b610c6b610eb1565b600054600160a060020a0380831691167f4e6093f85fa64484abd692810d8a44d508792ff7b7a021d9fbd69fa1c6ff18a060405160405180910390a360018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610ce457600080fd5b600154600054600160a060020a0390811691161415610d0257600080fd5b610d0a611aad565b1515610d1557600080fd5b600154600054600354600160a060020a0392831692909116907f66389f1f3251c39e71cb18351daefea45bda23e98df0767266b8aed4ff9382779060405190815260200160405180910390a342600355565b60005433600160a060020a03908116911614610d8257600080fd5b610d8d30838361183e565b5050565b60005433600160a060020a03908116911614610dac57600080fd5b600c818051610d8d929160200190611ebe565b600033600160a060020a0316610dd484611116565b600160a060020a031614610de757600080fd5b605a821115610df557600080fd5b600a821015610e0357600080fd5b506000828152600b60205260408120805490919011610e2157600080fd5b6001810154426801000000000000000090910467ffffffffffffffff161115610e4957600080fd5b60018101805472ff0000000000000000000000000000000000001916609060020a60ff8516021790557f699c6178abef37ca53103b7ca4ad2d48b45c900372bc62f6812d4a5a219a59b6838360405191825260208201526040908101905180910390a1505050565b60005433600160a060020a03908116911614610ecc57600080fd5b600054600160a060020a03167fd40b9d9a7572411aff4bbb95ba7bd9a9d4e9b70747ec46f8fe7913c309b6845260405160405180910390a26000600355565b610f13611eac565b6000610f1d611eac565b6000806000610f2b87611147565b9450841515610f5b576000604051805910610f435750595b90808252806020026020018201604052509550610a29565b84604051805910610f695750595b90808252806020026020018201604052509350610f84610ac7565b925060009150600090505b82811015610fdf57600081815260056020526040902054600160a060020a0388811691161415610fd75780848381518110610fc657fe5b602090810290910101526001909101905b600101610f8f565b839550610a29565b6000818152600b6020526040812080546001820154909267ffffffffffffffff808316936801000000000000000084049091169260ff7001000000000000000000000000000000008204811693710100000000000000000000000000000000008304821693609060020a90930490911691819081906110658b611443565b93506110708b611168565b925061107b8b611116565b9150509193959799909294969850565b611093611eac565b600061109d611eac565b60006110a7610ac7565b9250826040518059106110b75750595b90808252806020026020018201604052509150600090505b8281101561110f5760048054829081106110e557fe5b6000918252602090912001548282815181106110fd57fe5b602090810290910101526001016110cf565b5092915050565b600081815260056020526040902054600160a060020a031661113781611ad4565b151561114257600080fd5b919050565b600160a060020a031660009081526006602052604090205490565b60025481565b6000818152600b60205260408120600181015467ffffffffffffffff1682901161119157600080fd5b600181015467ffffffffffffffff1642108015906111b7575060006111b584611443565b115b91505b50919050565b600054600160a060020a031681565b600154600160a060020a031681565b6111e6611eac565b60408051908101604052600681527f42697441727400000000000000000000000000000000000000000000000000006020820152905090565b600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112b55780601f1061128a576101008083540402835291602001916112b5565b820191906000526020600020905b81548152906001019060200180831161129857829003601f168201915b505050505081565b60408051908101604052600a81527f42697447616c6c65727900000000000000000000000000000000000000000000602082015281565b6112fe3382611a8d565b151561130957600080fd5b61131282611ad4565b151561131d57600080fd5b610d8d338383611ae2565b6000805b611334610ac7565b8110156113c957826040518082805190602001908083835b6020831061136b5780518252601f19909201916020918201910161134c565b6001836020036101000a038019825116818451161790925250505091909101925060409150505190819003902060048054839081106113a657fe5b60009182526020909120015414156113c157600191506111ba565b60010161132c565b50600092915050565b600760205260009081526040902054600160a060020a031681565b3360006113f982611ad4565b151561140457600080fd5b61140e8284611ab4565b151561141957600080fd5b50600082815260056020526040902054600160a060020a0316610c28818385611ae2565b60035481565b6000818152600b6020526040808220906111b790829060c0905190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925260ff70010000000000000000000000000000000083048116606083015271010000000000000000000000000000000000830481166080830152609060020a90920490911660a0820152611bd7565b60005433600160a060020a039081169116146114fd57600080fd5b600083101561150b57600080fd5b62093a8083111561151b57600080fd5b6201518082101561152b57600080fd5b62278d0082111561153b57600080fd5b600181101561154957600080fd5b600581111561155757600080fd5b60088390556009829055600a8190557fe69f8fd4054d4231f941e78995aa6b652a1a26018c0f0c0e89987f07f1390c6683838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b60005433600160a060020a039081169116146115cd57600080fd5b6115d5610eb1565b60018054600160a060020a0319169055565b600b602052600090815260409020805460019091015467ffffffffffffffff808216916801000000000000000081049091169060ff7001000000000000000000000000000000008204811691710100000000000000000000000000000000008104821691609060020a9091041686565b6000818152600b602052604081206001810154909190819081908190819067ffffffffffffffff1642101561168b57600080fd5b6117198660c060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925260ff70010000000000000000000000000000000083048116606083015271010000000000000000000000000000000000830481166080830152609060020a90920490911660a0820152611bd7565b9450348590101561172957600080fd5b600a546064908103860204935084340392506117458786611cca565b61174e87611116565b915033905061175e828289611ae2565b30600160a060020a031682600160a060020a03161415156117aa57600160a060020a03821684156108fc0285604051600060405180830381858888f1935050505015156117aa57600080fd5b7fb45b7a510d22eabde36919bed5551eccad687e7b55e2d2aa3033dc0786a9877b878684846040519384526020840192909252600160a060020a03908116604080850191909152911660608301526080909101905180910390a1600160a060020a03331683156108fc0284604051600060405180830381858888f19350505050151561183557600080fd5b50505050505050565b611846611eac565b6000805433600160a060020a0390811691161461186257600080fd5b66038d7ea4c6800083101561187657600080fd5b602060405190810160405280856040518082805190602001908083835b602083106118b25780518252601f199092019160209182019101611893565b6001836020036101000a03801982511681845116179092525050509190910192506040915050519081900390209052600480549193506001918083016118f88382611f3c565b6000928352602090922085910181519055500390507fca8605e5b2854022d4ef7e920a48b0c49ca69a8453970d922c3dd8b93057fa67818560405182815260406020820181815290820183818151815260200191508051906020019080838360005b8381101561197257808201518382015260200161195a565b50505050905090810190601f16801561199f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a16119b78582611ce7565b6119c18184611d2a565b5050505050565b60005433600160a060020a039081169116146119e357600080fd5b600160a060020a03811615156119f857600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b60408051908101604052600681527f4269744172740000000000000000000000000000000000000000000000000000602082015281565b600090815260056020526040902054600160a060020a0390811691161490565b6003541590565b600090815260076020526040902054600160a060020a0391821691161490565b600160a060020a0316151590565b600160a060020a038381169083161415611afb57600080fd5b600160a060020a038216600081815260066020908152604080832080546001019055848352600590915290208054600160a060020a0319169091179055611b4183611ad4565b15611b8257600160a060020a03831660009081526006602090815260408083208054600019019055838352600790915290208054600160a060020a03191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b60008060008060008060008060008960a0015160ff161115611c175760648960a0015160640360ff168a6000015102811515611c0f57fe5b049750611cbe565b6064896060015160ff168a5102811515611c2d57fe5b04965042896020015167ffffffffffffffff161115611c4e57869750611cbe565b886020015167ffffffffffffffff1642039550886020015189604001510367ffffffffffffffff1694506064896080015160ff168a5102811515611c8e57fe5b049350848610611ca057839750611cbe565b868403925084868402811515611cb257fe5b05915081870190508097505b50505050505050919050565b600060085442019050610c28838383600954850160c8606e611d3e565b600160a060020a0382161515611cfc57600080fd5b600081815260056020526040902054600160a060020a031615611d1e57600080fd5b610d8d60008383611ae2565b610d8d8282426009546008544201016064600a5b611d46611f60565b42851015611d5357600080fd5b84841015611d6057600080fd5b60008311611d6d57600080fd5b60008211611d7a57600080fd5b60c0604051908101604090815287825267ffffffffffffffff8088166020808501919091529087168284015260ff808716606085015285166080840152600060a084018190528a8152600b90915220909150819081518155602082015160018201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548160ff021916908360ff16021790555060808201518160010160116101000a81548160ff021916908360ff16021790555060a08201516001909101805460ff92909216609060020a0272ff000000000000000000000000000000000000199092169190911790555050505050505050565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611eff57805160ff1916838001178555611f2c565b82800160010185558215611f2c579182015b82811115611f2c578251825591602001919060010190611f11565b50611f38929150611f95565b5090565b815481835581811511610c2857600083815260209020610c28918101908301611f95565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b6108e391905b80821115611f385760008155600101611f9b565b60005433600160a060020a03908116911614611fca57600080fd5b611fd2611aad565b1515611fdd57600080fd5b6002555600a165627a7a723058202d38690b3cb2f39fa03f8d20b1fc9f8b9b165fa01258d2bc3a6d7584ca9d3c3f0029

Swarm Source

bzzr://2d38690b3cb2f39fa03f8d20b1fc9f8b9b165fa01258d2bc3a6d7584ca9d3c3f

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  ]
[ 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.