Sponsored Link:  Presearch [ ICO ]The Decentralized Search Engine.
Contract Overview | ENS-Registrar
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 716527 txns
Misc
Address Watch Add To Watch List
Contract Creator 0xfdb33f8ac7ce72d7d4795dd8610e323b4c122fbbat txn 0x4c3fd67575a9254c553d906af0f2c84789502bae5a6723ea3bc345c5dcbf0751
Token Tracker
  Latest 25 txns from a total Of 716527 transactions (+1 PendingTxn) View All

TxHash Block Age From To Value [TxFee]
0x2e23ae38740f9f838ee91f8eecb21ab0f568aa0fc6aeed216fb7263e538354b4(pending)1 min ago0x88bdb0aec80e001738c101d111ee035f1eac0d95  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0 Ether(pending)
0x5e319a82949edf947fdebc4283e00a4afae7593943a3779b6ebab6e67de8a85c40561621 min ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0.01 Ether0.0106677
0x5b90431529848478963bff533fc4b3f1075c9c6779b54922a80f9b4e4ef3a28b40561562 mins ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0.01 Ether0.01066898
0x6d04058ba7c4c939304b71ef95edd6039197f2084ad5abf8f9864117a2a556e340561552 mins ago0x88bdb0aec80e001738c101d111ee035f1eac0d95  IN   ENS-Registrar0 Ether0.00011475
0xe17d4510bfbfe14c17fa1ce712124d7094422a7a9c74a3b030f6f55b7070b93b40561543 mins ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0.01 Ether0.01071762
0xb755c8edb063aaeb9cb573f518eed952622a19e3a184a61376b925d6b491402940561543 mins ago0x21efddb6a3b307048dfa7a94b9bdf3a964ff339d  IN   ENS-Registrar7 Ether0.00960369
0xcb7880e00725d17be97595c32565aaf573ea2f953f85c44fb50de54c8cd3daca40561524 mins ago0x88bdb0aec80e001738c101d111ee035f1eac0d95  IN   ENS-Registrar0 Ether0.00011462
0x4b0a0caf0037ff58b86124f7a46b66117eb86c00ece591edc51331a1ee20424640561514 mins ago0x2352357a6f257758bd18aa78789f59267029b56b  IN   ENS-Registrar0.11 Ether0.00884638
0x43784ac331590db8e153b458687006a16f1a8ffa80d5cb360264643dd170678b40561514 mins ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0.01 Ether0.0106677
0x754bb5056a4ba7daa664d57e7e450201bcf815ea6cbfbc26112433d6d0c30b8540561494 mins ago0x88bdb0aec80e001738c101d111ee035f1eac0d95  IN   ENS-Registrar0 Ether0.00009637
0x90a522fd492eecc34d6f3dc714d06e57dd68ca16923ae0fdf1c615b05975465f40561446 mins ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0.1 Ether0.01067026
0x96a317c8ed65e5ff60799b0689a9d4a132520f8e931ba8d436233b941b3a6f1940561437 mins ago0x88bdb0aec80e001738c101d111ee035f1eac0d95  IN   ENS-Registrar0 Ether0.00009631
0xa624b815f590bd7c014cd6d5ddd5792664767f70910ea1d28bcb4c01215efe4a40561378 mins ago0x88bdb0aec80e001738c101d111ee035f1eac0d95  IN   ENS-Registrar0 Ether0.00016236
0xa85637a98eb355e74c2cd5e3090116ece09e1fc32e7545e9cdb4b7c06da0bbed40561319 mins ago0xbb37f14370b55fd718cab5cbd4428d983517d8fe  IN   ENS-Registrar0.2 Ether0.00457319
0x7dd9f000c724f46238f81aa448d6da4f3919a5b8adf7b97764989787de950a1a40561319 mins ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0 Ether0.00273488
0x3a953b59a98bfaf821be357cf3bcddb318135935061c3b6a3b26b2feaeb916ff405612511 mins ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0.01 Ether0.01067026
0x7d11c7b7a45609033ccebe35e0210933dcf6c8fc8ce70718c68057cd62e64eff405612411 mins ago0x0db4dc6e5a9039b2b8fca026963655b04596e903  IN   ENS-Registrar0.01 Ether0.00182902
0xc4b10dcb32e765550f5e23f94ce82d99de778e526306c3471be30f722017efe9405612411 mins ago0xbb37f14370b55fd718cab5cbd4428d983517d8fe  IN   ENS-Registrar0.2 Ether0.00457255
0xc030f6b9970caddbe8a17b06ed5c9f75a2bf3339d4fbe6b7ce02d0e26210d173405612212 mins ago0x0cea66a0e60a3c4a70d2194450a367fc46513112  IN   ENS-Registrar0.01 Ether0.00960369
0xe3e90d322a935b550c78f54c3a19d7aa05b0ce95ec37842a890f19d8218a28d7405611913 mins ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0.01 Ether0.013
0xc9d13fdfe92d04294625197462d323b1b739fbe75e1f2f8ff30ee92921243af4405611314 mins ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0.01 Ether0.01066898
0x5722cc517c13e1196e13b83ceb782c93a97879da0793e08e29cd9d6010d42972405611015 mins ago0x949b82dfc04558bc4d3ca033a1b194915a3a3bee  IN   ENS-Registrar0.58 Ether0.00418436
0x90779a538447c2edfcc64c5d671ac999e0fc0702fc0a61a87c5e42ba96b59234405610515 mins ago0x0db4dc6e5a9039b2b8fca026963655b04596e903  IN   ENS-Registrar0.015 Ether0.00182927
0xdce1e13161a1f7b2a0a07486d5d09be151c4ba2459e174423a38632857499834405610515 mins ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0 Ether0.00273232
0xb2be8d0e6f6448aef7b2d3e71463d3f956bcafff8f74823c78e58d640f13cb95405610017 mins ago0x00c92382bf76ac3ed86598a9065fb1676e2f445d  IN   ENS-Registrar0.01 Ether0.01067026
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x5e319a82949edf947fdebc4283e00a4afae7593943a3779b6ebab6e67de8a85c40561621 min ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x5b90431529848478963bff533fc4b3f1075c9c6779b54922a80f9b4e4ef3a28b40561562 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xe17d4510bfbfe14c17fa1ce712124d7094422a7a9c74a3b030f6f55b7070b93b40561543 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xb755c8edb063aaeb9cb573f518eed952622a19e3a184a61376b925d6b491402940561543 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation7 Ether
0x4b0a0caf0037ff58b86124f7a46b66117eb86c00ece591edc51331a1ee20424640561514 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.11 Ether
0x43784ac331590db8e153b458687006a16f1a8ffa80d5cb360264643dd170678b40561514 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x90a522fd492eecc34d6f3dc714d06e57dd68ca16923ae0fdf1c615b05975465f40561446 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.1 Ether
0xa85637a98eb355e74c2cd5e3090116ece09e1fc32e7545e9cdb4b7c06da0bbed40561319 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.2 Ether
0x3a953b59a98bfaf821be357cf3bcddb318135935061c3b6a3b26b2feaeb916ff405612511 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x7d11c7b7a45609033ccebe35e0210933dcf6c8fc8ce70718c68057cd62e64eff405612411 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xc4b10dcb32e765550f5e23f94ce82d99de778e526306c3471be30f722017efe9405612411 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.2 Ether
0xc030f6b9970caddbe8a17b06ed5c9f75a2bf3339d4fbe6b7ce02d0e26210d173405612212 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xc9d13fdfe92d04294625197462d323b1b739fbe75e1f2f8ff30ee92921243af4405611314 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x5722cc517c13e1196e13b83ceb782c93a97879da0793e08e29cd9d6010d42972405611015 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.58 Ether
0x90779a538447c2edfcc64c5d671ac999e0fc0702fc0a61a87c5e42ba96b59234405610515 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.015 Ether
0xb2be8d0e6f6448aef7b2d3e71463d3f956bcafff8f74823c78e58d640f13cb95405610017 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xff664b4b93418e09af4e5af1d03e2802a7ca2efbdd168c0f2396e7f639eddeaf405609719 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xd264e6fa2ad483967a45c45e86651e97447f3e822a23744139655a71b9d4b3d9405609519 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.02 Ether
0xa46ff969aee5975d1d747cc98080c6ab893b85c6579199605d0aec081cd79305405608823 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x5a57bd60bc0a4a22119fd2998f96fd9f6771ddd850d166f87fe4ea0f75c7115b405608423 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xd65bf57fa32c80b08a8b7f6118f593597801534fa24464f119e3aa6a3064885e405608423 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xfceca8bbf8f343146ae1106c5045a2b1ab01a4b07bde37fbba0509edf7d71e35405608024 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xde2811c483079dd17de64632e4a87972e2f78c41adf2f6153699bf6dee093617405607725 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xb9d17140988d2e207761dfcd403a3171b265688078865e87009e4d0196e8fa0c405605036 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x12b9226747543285893e15493eca15ae1a186f9bf49e454d711a38c34edb9961405602442 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to SkipEmptyStringLiteral (low-severity), ConstantOptimizerSubtraction (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: Registrar
Compiler Version: v0.4.10+commit.f0d539ae
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.0;


/*

Temporary Hash Registrar
========================

This is a simplified version of a hash registrar. It is purporsefully limited:
names cannot be six letters or shorter, new auctions will stop after 4 years.

The plan is to test the basic features and then move to a new contract in at most
2 years, when some sort of renewal mechanism will be enabled.
*/

contract AbstractENS {
    function owner(bytes32 node) constant returns(address);
    function resolver(bytes32 node) constant returns(address);
    function ttl(bytes32 node) constant returns(uint64);
    function setOwner(bytes32 node, address owner);
    function setSubnodeOwner(bytes32 node, bytes32 label, address owner);
    function setResolver(bytes32 node, address resolver);
    function setTTL(bytes32 node, uint64 ttl);

    // Logged when the owner of a node assigns a new owner to a subnode.
    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);

    // Logged when the owner of a node transfers ownership to a new account.
    event Transfer(bytes32 indexed node, address owner);

    // Logged when the resolver for a node changes.
    event NewResolver(bytes32 indexed node, address resolver);

    // Logged when the TTL of a node changes
    event NewTTL(bytes32 indexed node, uint64 ttl);
}

/**
 * @title Deed to hold ether in exchange for ownership of a node
 * @dev The deed can be controlled only by the registrar and can only send ether back to the owner.
 */
contract Deed {
    address public registrar;
    address constant burn = 0xdead;
    uint public creationDate;
    address public owner;
    address public previousOwner;
    uint public value;
    event OwnerChanged(address newOwner);
    event DeedClosed();
    bool active;


    modifier onlyRegistrar {
        if (msg.sender != registrar) throw;
        _;
    }

    modifier onlyActive {
        if (!active) throw;
        _;
    }

    function Deed(address _owner) payable {
        owner = _owner;
        registrar = msg.sender;
        creationDate = now;
        active = true;
        value = msg.value;
    }

    function setOwner(address newOwner) onlyRegistrar {
        if (newOwner == 0) throw;
        previousOwner = owner;  // This allows contracts to check who sent them the ownership
        owner = newOwner;
        OwnerChanged(newOwner);
    }

    function setRegistrar(address newRegistrar) onlyRegistrar {
        registrar = newRegistrar;
    }

    function setBalance(uint newValue, bool throwOnFailure) onlyRegistrar onlyActive {
        // Check if it has enough balance to set the value
        if (value < newValue) throw;
        value = newValue;
        // Send the difference to the owner
        if (!owner.send(this.balance - newValue) && throwOnFailure) throw;
    }

    /**
     * @dev Close a deed and refund a specified fraction of the bid value
     * @param refundRatio The amount*1/1000 to refund
     */
    function closeDeed(uint refundRatio) onlyRegistrar onlyActive {
        active = false;
        if (! burn.send(((1000 - refundRatio) * this.balance)/1000)) throw;
        DeedClosed();
        destroyDeed();
    }

    /**
     * @dev Close a deed and refund a specified fraction of the bid value
     */
    function destroyDeed() {
        if (active) throw;
        
        // Instead of selfdestruct(owner), invoke owner fallback function to allow
        // owner to log an event if desired; but owner should also be aware that
        // its fallback function can also be invoked by setBalance
        if(owner.send(this.balance)) {
            selfdestruct(burn);
        }
    }
}

/**
 * @title Registrar
 * @dev The registrar handles the auction process for each subnode of the node it owns.
 */
contract Registrar {
    AbstractENS public ens;
    bytes32 public rootNode;

    mapping (bytes32 => entry) _entries;
    mapping (address => mapping(bytes32 => Deed)) public sealedBids;
    
    enum Mode { Open, Auction, Owned, Forbidden, Reveal, NotYetAvailable }

    uint32 constant totalAuctionLength = 5 days;
    uint32 constant revealPeriod = 48 hours;
    uint32 public constant launchLength = 8 weeks;

    uint constant minPrice = 0.01 ether;
    uint public registryStarted;

    event AuctionStarted(bytes32 indexed hash, uint registrationDate);
    event NewBid(bytes32 indexed hash, address indexed bidder, uint deposit);
    event BidRevealed(bytes32 indexed hash, address indexed owner, uint value, uint8 status);
    event HashRegistered(bytes32 indexed hash, address indexed owner, uint value, uint registrationDate);
    event HashReleased(bytes32 indexed hash, uint value);
    event HashInvalidated(bytes32 indexed hash, string indexed name, uint value, uint registrationDate);

    struct entry {
        Deed deed;
        uint registrationDate;
        uint value;
        uint highestBid;
    }

    // State transitions for names:
    //   Open -> Auction (startAuction)
    //   Auction -> Reveal
    //   Reveal -> Owned
    //   Reveal -> Open (if nobody bid)
    //   Owned -> Open (releaseDeed or invalidateName)
    function state(bytes32 _hash) constant returns (Mode) {
        var entry = _entries[_hash];
        
        if(!isAllowed(_hash, now)) {
            return Mode.NotYetAvailable;
        } else if(now < entry.registrationDate) {
            if (now < entry.registrationDate - revealPeriod) {
                return Mode.Auction;
            } else {
                return Mode.Reveal;
            }
        } else {
            if(entry.highestBid == 0) {
                return Mode.Open;
            } else {
                return Mode.Owned;
            }
        }
    }

    modifier inState(bytes32 _hash, Mode _state) {
        if(state(_hash) != _state) throw;
        _;
    }

    modifier onlyOwner(bytes32 _hash) {
        if (state(_hash) != Mode.Owned || msg.sender != _entries[_hash].deed.owner()) throw;
        _;
    }

    modifier registryOpen() {
        if(now < registryStarted  || now > registryStarted + 4 years || ens.owner(rootNode) != address(this)) throw;
        _;
    }

    function entries(bytes32 _hash) constant returns (Mode, address, uint, uint, uint) {
        entry h = _entries[_hash];
        return (state(_hash), h.deed, h.registrationDate, h.value, h.highestBid);
    }

    /**
     * @dev Constructs a new Registrar, with the provided address as the owner of the root node.
     * @param _ens The address of the ENS
     * @param _rootNode The hash of the rootnode.
     */
    function Registrar(AbstractENS _ens, bytes32 _rootNode, uint _startDate) {
        ens = _ens;
        rootNode = _rootNode;
        registryStarted = _startDate > 0 ? _startDate : now;
    }

    /**
     * @dev Returns the maximum of two unsigned integers
     * @param a A number to compare
     * @param b A number to compare
     * @return The maximum of two unsigned integers
     */
    function max(uint a, uint b) internal constant returns (uint max) {
        if (a > b)
            return a;
        else
            return b;
    }

    /**
     * @dev Returns the minimum of two unsigned integers
     * @param a A number to compare
     * @param b A number to compare
     * @return The minimum of two unsigned integers
     */
    function min(uint a, uint b) internal constant returns (uint min) {
        if (a < b)
            return a;
        else
            return b;
    }

    /**
     * @dev Returns the length of a given string
     * @param s The string to measure the length of
     * @return The length of the input string
     */
    function strlen(string s) internal constant returns (uint) {
        // Starting here means the LSB will be the byte we care about
        uint ptr;
        uint end;
        assembly {
            ptr := add(s, 1)
            end := add(mload(s), ptr)
        }
        for (uint len = 0; ptr < end; len++) {
            uint8 b;
            assembly { b := and(mload(ptr), 0xFF) }
            if (b < 0x80) {
                ptr += 1;
            } else if(b < 0xE0) {
                ptr += 2;
            } else if(b < 0xF0) {
                ptr += 3;
            } else if(b < 0xF8) {
                ptr += 4;
            } else if(b < 0xFC) {
                ptr += 5;
            } else {
                ptr += 6;
            }
        }
        return len;
    }
    
    /** 
     * @dev Determines if a name is available for registration yet
     * 
     * Each name will be assigned a random date in which its auction 
     * can be started, from 0 to 13 weeks
     * 
     * @param _hash The hash to start an auction on
     * @param _timestamp The timestamp to query about
     */
     
    function isAllowed(bytes32 _hash, uint _timestamp) constant returns (bool allowed){
        return _timestamp > getAllowedTime(_hash);
    }

    /** 
     * @dev Returns available date for hash
     * 
     * @param _hash The hash to start an auction on
     */
    function getAllowedTime(bytes32 _hash) constant returns (uint timestamp) {
        return registryStarted + (launchLength*(uint(_hash)>>128)>>128);
        // right shift operator: a >> b == a / 2**b
    }
    /**
     * @dev Assign the owner in ENS, if we're still the registrar
     * @param _hash hash to change owner
     * @param _newOwner new owner to transfer to
     */
    function trySetSubnodeOwner(bytes32 _hash, address _newOwner) internal {
        if(ens.owner(rootNode) == address(this))
            ens.setSubnodeOwner(rootNode, _hash, _newOwner);        
    }

    /**
     * @dev Start an auction for an available hash
     *
     * Anyone can start an auction by sending an array of hashes that they want to bid for.
     * Arrays are sent so that someone can open up an auction for X dummy hashes when they
     * are only really interested in bidding for one. This will increase the cost for an
     * attacker to simply bid blindly on all new auctions. Dummy auctions that are
     * open but not bid on are closed after a week.
     *
     * @param _hash The hash to start an auction on
     */
    function startAuction(bytes32 _hash) registryOpen() {
        var mode = state(_hash);
        if(mode == Mode.Auction) return;
        if(mode != Mode.Open) throw;

        entry newAuction = _entries[_hash];
        newAuction.registrationDate = now + totalAuctionLength;
        newAuction.value = 0;
        newAuction.highestBid = 0;
        AuctionStarted(_hash, newAuction.registrationDate);
    }

    /**
     * @dev Start multiple auctions for better anonymity
     * @param _hashes An array of hashes, at least one of which you presumably want to bid on
     */
    function startAuctions(bytes32[] _hashes)  {
        for (uint i = 0; i < _hashes.length; i ++ ) {
            startAuction(_hashes[i]);
        }
    }

    /**
     * @dev Hash the values required for a secret bid
     * @param hash The node corresponding to the desired namehash
     * @param value The bid amount
     * @param salt A random value to ensure secrecy of the bid
     * @return The hash of the bid values
     */
    function shaBid(bytes32 hash, address owner, uint value, bytes32 salt) constant returns (bytes32 sealedBid) {
        return sha3(hash, owner, value, salt);
    }

    /**
     * @dev Submit a new sealed bid on a desired hash in a blind auction
     *
     * Bids are sent by sending a message to the main contract with a hash and an amount. The hash
     * contains information about the bid, including the bidded hash, the bid amount, and a random
     * salt. Bids are not tied to any one auction until they are revealed. The value of the bid
     * itself can be masqueraded by sending more than the value of your actual bid. This is
     * followed by a 48h reveal period. Bids revealed after this period will be burned and the ether unrecoverable.
     * Since this is an auction, it is expected that most public hashes, like known domains and common dictionary
     * words, will have multiple bidders pushing the price up.
     *
     * @param sealedBid A sealedBid, created by the shaBid function
     */
    function newBid(bytes32 sealedBid) payable {
        if (address(sealedBids[msg.sender][sealedBid]) > 0 ) throw;
        if (msg.value < minPrice) throw;
        // creates a new hash contract with the owner
        Deed newBid = (new Deed).value(msg.value)(msg.sender);
        sealedBids[msg.sender][sealedBid] = newBid;
        NewBid(sealedBid, msg.sender, msg.value);
    }

    /**
     * @dev Start a set of auctions and bid on one of them
     *
     * This method functions identically to calling `startAuctions` followed by `newBid`,
     * but all in one transaction.
     * @param hashes A list of hashes to start auctions on.
     * @param sealedBid A sealed bid for one of the auctions.
     */
    function startAuctionsAndBid(bytes32[] hashes, bytes32 sealedBid) payable {
        startAuctions(hashes);
        newBid(sealedBid);
    }

    /**
     * @dev Submit the properties of a bid to reveal them
     * @param _hash The node in the sealedBid
     * @param _value The bid amount in the sealedBid
     * @param _salt The sale in the sealedBid
     */
    function unsealBid(bytes32 _hash, uint _value, bytes32 _salt) {
        bytes32 seal = shaBid(_hash, msg.sender, _value, _salt);
        Deed bid = sealedBids[msg.sender][seal];
        if (address(bid) == 0 ) throw;
        sealedBids[msg.sender][seal] = Deed(0);
        entry h = _entries[_hash];
        uint value = min(_value, bid.value());
        bid.setBalance(value, true);

        var auctionState = state(_hash);
        if(auctionState == Mode.Owned) {
            // Too late! Bidder loses their bid. Get's 0.5% back.
            bid.closeDeed(5);
            BidRevealed(_hash, msg.sender, value, 1);
        } else if(auctionState != Mode.Reveal) {
            // Invalid phase
            throw;
        } else if (value < minPrice || bid.creationDate() > h.registrationDate - revealPeriod) {
            // Bid too low or too late, refund 99.5%
            bid.closeDeed(995);
            BidRevealed(_hash, msg.sender, value, 0);
        } else if (value > h.highestBid) {
            // new winner
            // cancel the other bid, refund 99.5%
            if(address(h.deed) != 0) {
                Deed previousWinner = h.deed;
                previousWinner.closeDeed(995);
            }

            // set new winner
            // per the rules of a vickery auction, the value becomes the previous highestBid
            h.value = h.highestBid;  // will be zero if there's only 1 bidder
            h.highestBid = value;
            h.deed = bid;
            BidRevealed(_hash, msg.sender, value, 2);
        } else if (value > h.value) {
            // not winner, but affects second place
            h.value = value;
            bid.closeDeed(995);
            BidRevealed(_hash, msg.sender, value, 3);
        } else {
            // bid doesn't affect auction
            bid.closeDeed(995);
            BidRevealed(_hash, msg.sender, value, 4);
        }
    }

    /**
     * @dev Cancel a bid
     * @param seal The value returned by the shaBid function
     */
    function cancelBid(address bidder, bytes32 seal) {
        Deed bid = sealedBids[bidder][seal];
        
        // If a sole bidder does not `unsealBid` in time, they have a few more days
        // where they can call `startAuction` (again) and then `unsealBid` during
        // the revealPeriod to get back their bid value.
        // For simplicity, they should call `startAuction` within
        // 9 days (2 weeks - totalAuctionLength), otherwise their bid will be
        // cancellable by anyone.
        if (address(bid) == 0
            || now < bid.creationDate() + totalAuctionLength + 2 weeks) throw;

        // Send the canceller 0.5% of the bid, and burn the rest.
        bid.setOwner(msg.sender);
        bid.closeDeed(5);
        sealedBids[bidder][seal] = Deed(0);
        BidRevealed(seal, bidder, 0, 5);
    }

    /**
     * @dev Finalize an auction after the registration date has passed
     * @param _hash The hash of the name the auction is for
     */
    function finalizeAuction(bytes32 _hash) onlyOwner(_hash) {
        entry h = _entries[_hash];
        
        // handles the case when there's only a single bidder (h.value is zero)
        h.value =  max(h.value, minPrice);
        h.deed.setBalance(h.value, true);

        trySetSubnodeOwner(_hash, h.deed.owner());
        HashRegistered(_hash, h.deed.owner(), h.value, h.registrationDate);
    }

    /**
     * @dev The owner of a domain may transfer it to someone else at any time.
     * @param _hash The node to transfer
     * @param newOwner The address to transfer ownership to
     */
    function transfer(bytes32 _hash, address newOwner) onlyOwner(_hash) {
        if (newOwner == 0) throw;

        entry h = _entries[_hash];
        h.deed.setOwner(newOwner);
        trySetSubnodeOwner(_hash, newOwner);
    }

    /**
     * @dev After some time, or if we're no longer the registrar, the owner can release
     *      the name and get their ether back.
     * @param _hash The node to release
     */
    function releaseDeed(bytes32 _hash) onlyOwner(_hash) {
        entry h = _entries[_hash];
        Deed deedContract = h.deed;
        if(now < h.registrationDate + 1 years && ens.owner(rootNode) == address(this)) throw;

        h.value = 0;
        h.highestBid = 0;
        h.deed = Deed(0);

        _tryEraseSingleNode(_hash);
        deedContract.closeDeed(1000);
        HashReleased(_hash, h.value);        
    }

    /**
     * @dev Submit a name 6 characters long or less. If it has been registered,
     * the submitter will earn 50% of the deed value. We are purposefully
     * handicapping the simplified registrar as a way to force it into being restructured
     * in a few years.
     * @param unhashedName An invalid name to search for in the registry.
     *
     */
    function invalidateName(string unhashedName) inState(sha3(unhashedName), Mode.Owned) {
        if (strlen(unhashedName) > 6 ) throw;
        bytes32 hash = sha3(unhashedName);

        entry h = _entries[hash];

        _tryEraseSingleNode(hash);

        if(address(h.deed) != 0) {
            // Reward the discoverer with 50% of the deed
            // The previous owner gets 50%
            h.value = max(h.value, minPrice);
            h.deed.setBalance(h.value/2, false);
            h.deed.setOwner(msg.sender);
            h.deed.closeDeed(1000);
        }

        HashInvalidated(hash, unhashedName, h.value, h.registrationDate);

        h.value = 0;
        h.highestBid = 0;
        h.deed = Deed(0);
    }

    /**
     * @dev Allows anyone to delete the owner and resolver records for a (subdomain of) a
     *      name that is not currently owned in the registrar. If passing, eg, 'foo.bar.eth',
     *      the owner and resolver fields on 'foo.bar.eth' and 'bar.eth' will all be cleared.
     * @param labels A series of label hashes identifying the name to zero out, rooted at the
     *        registrar's root. Must contain at least one element. For instance, to zero 
     *        'foo.bar.eth' on a registrar that owns '.eth', pass an array containing
     *        [sha3('foo'), sha3('bar')].
     */
    function eraseNode(bytes32[] labels) {
        if(labels.length == 0) throw;
        if(state(labels[labels.length - 1]) == Mode.Owned) throw;

        _eraseNodeHierarchy(labels.length - 1, labels, rootNode);
    }

    function _tryEraseSingleNode(bytes32 label) internal {
        if(ens.owner(rootNode) == address(this)) {
            ens.setSubnodeOwner(rootNode, label, address(this));
            var node = sha3(rootNode, label);
            ens.setResolver(node, 0);
            ens.setOwner(node, 0);
        }
    }

    function _eraseNodeHierarchy(uint idx, bytes32[] labels, bytes32 node) internal {
        // Take ownership of the node
        ens.setSubnodeOwner(node, labels[idx], address(this));
        node = sha3(node, labels[idx]);
        
        // Recurse if there's more labels
        if(idx > 0)
            _eraseNodeHierarchy(idx - 1, labels, node);

        // Erase the resolver and owner records
        ens.setResolver(node, 0);
        ens.setOwner(node, 0);
    }

    /**
     * @dev Transfers the deed to the current registrar, if different from this one.
     * Used during the upgrade process to a permanent registrar.
     * @param _hash The name hash to transfer.
     */
    function transferRegistrars(bytes32 _hash) onlyOwner(_hash) {
        var registrar = ens.owner(rootNode);
        if(registrar == address(this))
            throw;

        // Migrate the deed
        entry h = _entries[_hash];
        h.deed.setRegistrar(registrar);

        // Call the new registrar to accept the transfer
        Registrar(registrar).acceptRegistrarTransfer(_hash, h.deed, h.registrationDate);

        // Zero out the entry
        h.deed = Deed(0);
        h.registrationDate = 0;
        h.value = 0;
        h.highestBid = 0;
    }

    /**
     * @dev Accepts a transfer from a previous registrar; stubbed out here since there
     *      is no previous registrar implementing this interface.
     * @param hash The sha3 hash of the label to transfer.
     * @param deed The Deed object for the name being transferred in.
     * @param registrationDate The date at which the name was originally registered.
     */
    function acceptRegistrarTransfer(bytes32 hash, Deed deed, uint registrationDate) {}

}

  Contract ABI  
[{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"releaseDeed","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"getAllowedTime","outputs":[{"name":"timestamp","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"unhashedName","type":"string"}],"name":"invalidateName","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"},{"name":"owner","type":"address"},{"name":"value","type":"uint256"},{"name":"salt","type":"bytes32"}],"name":"shaBid","outputs":[{"name":"sealedBid","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"bidder","type":"address"},{"name":"seal","type":"bytes32"}],"name":"cancelBid","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"entries","outputs":[{"name":"","type":"uint8"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ens","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_salt","type":"bytes32"}],"name":"unsealBid","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"transferRegistrars","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"sealedBids","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"newOwner","type":"address"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_timestamp","type":"uint256"}],"name":"isAllowed","outputs":[{"name":"allowed","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"finalizeAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"registryStarted","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"launchLength","outputs":[{"name":"","type":"uint32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"sealedBid","type":"bytes32"}],"name":"newBid","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"labels","type":"bytes32[]"}],"name":"eraseNode","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hashes","type":"bytes32[]"}],"name":"startAuctions","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"deed","type":"address"},{"name":"registrationDate","type":"uint256"}],"name":"acceptRegistrarTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"startAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"rootNode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"hashes","type":"bytes32[]"},{"name":"sealedBid","type":"bytes32"}],"name":"startAuctionsAndBid","outputs":[],"payable":true,"type":"function"},{"inputs":[{"name":"_ens","type":"address"},{"name":"_rootNode","type":"bytes32"},{"name":"_startDate","type":"uint256"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"registrationDate","type":"uint256"}],"name":"AuctionStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"bidder","type":"address"},{"indexed":false,"name":"deposit","type":"uint256"}],"name":"NewBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"status","type":"uint8"}],"name":"BidRevealed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"registrationDate","type":"uint256"}],"name":"HashRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"}],"name":"HashReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"name","type":"string"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"registrationDate","type":"uint256"}],"name":"HashInvalidated","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000c57fe5b6040516060806127778339810160409081528151602083015191909201515b60008054600160a060020a031916600160a060020a038516178155600183905581116100575742610059565b805b6004555b5050505b612707806100706000396000f300606060405236156101175763ffffffff60e060020a6000350416630230a07c811461011957806313c89a8f1461012e57806315f733311461015357806322ec1244146101ab5780632525f5c1146101e2578063267b6922146102035780633f15457f1461025e57806347872b421461028a5780635ddae283146102a55780635e431709146102ba57806361d585da146102f557806379ce9fac1461032c578063935033371461034d578063983b94fb146103775780639c67f06f1461038c578063ae1a0b0c146103ae578063ce92dced146103d7578063de10f04b146103e4578063e27fe50f14610439578063ea9e107a1461048e578063ede8acdb146104b2578063faff50a8146104c7578063febefd61146104e9575bfe5b341561012157fe5b61012c600435610538565b005b341561013657fe5b610141600435610764565b60408051918252519081900360200190f35b341561015b57fe5b61012c600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965061078995505050505050565b005b34156101b357fe5b610141600435600160a060020a0360243516604435606435610aac565b60408051918252519081900360200190f35b34156101ea57fe5b61012c600160a060020a0360043516602435610af3565b005b341561020b57fe5b610216600435610cb9565b6040518086600581111561022657fe5b60ff168152600160a060020a0390951660208601525060408085019390935260608401919091526080830152519081900360a0019150f35b341561026657fe5b61026e610d0a565b60408051600160a060020a039092168252519081900360200190f35b341561029257fe5b61012c600435602435604435610d19565b005b34156102ad57fe5b61012c600435611277565b005b34156102c257fe5b61026e600160a060020a03600435166024356114e7565b60408051600160a060020a039092168252519081900360200190f35b34156102fd57fe5b61030860043561150d565b6040518082600581111561031857fe5b60ff16815260200191505060405180910390f35b341561033457fe5b61012c600435600160a060020a036024351661158b565b005b341561035557fe5b6103636004356024356116cb565b604080519115158252519081900360200190f35b341561037f57fe5b61012c6004356116e1565b005b341561039457fe5b610141611944565b60408051918252519081900360200190f35b34156103b657fe5b6103be61194a565b6040805163ffffffff9092168252519081900360200190f35b61012c600435611951565b005b34156103ec57fe5b61012c600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650611a4495505050505050565b005b341561044157fe5b61012c600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650611aa595505050505050565b005b341561049657fe5b61012c600435600160a060020a0360243516604435610cb4565b005b34156104ba57fe5b61012c600435611ae5565b005b34156104cf57fe5b610141611c34565b60408051918252519081900360200190f35b61012c6004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505093359350611c3a92505050565b005b6000808260025b6105488261150d565b600581111561055357fe5b1415806105e0575060008181526002602090815260408083205481518301849052815160e060020a638da5cb5b0281529151600160a060020a0390911693638da5cb5b93600480850194919392918390030190829087803b15156105b357fe5b60325a03f115156105c057fe5b50505060405180519050600160a060020a031633600160a060020a031614155b156105eb5760006000fd5b600084815260026020526040902080546001820154919450600160a060020a031692506301e13380014210801561069b575060008054600154604080516020908101859052815160e060020a6302571be302815260048101939093529051600160a060020a03308116959416936302571be3936024808201949392918390030190829087803b151561067957fe5b60325a03f1151561068657fe5b50505060405180519050600160a060020a0316145b156106a65760006000fd5b60006002840181905560038401558254600160a060020a03191683556106cb84611c51565b81600160a060020a031663bbe427716103e86040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b151561071257fe5b60325a03f1151561071f57fe5b5050506002830154604080519182525185917f292b79b9246fa2c8e77d3fe195b251f9cb839d7d038e667c069ee7708c631e16919081900360200190a25b5b50505050565b6004547001000000000000000000000000000000006249d4008184040204015b919050565b60006000826040518082805190602001908083835b602083106107bd5780518252601f19909201916020918201910161079e565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209250600291508190505b6107f98361150d565b600581111561080457fe5b1461080f5760006000fd5b600661081a86611e19565b11156108265760006000fd5b846040518082805190602001908083835b602083106108565780518252601f199092019160209182019101610837565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260029092529290209197509095506108a09250869150611c519050565b8254600160a060020a0316156109e8576108c58360020154662386f26fc10000611ecc565b60028085018290558454600160a060020a03169163b0c8097291905b6040805160e060020a63ffffffff8616028152929091046004830152600060248301819052905160448084019382900301818387803b151561091f57fe5b60325a03f1151561092c57fe5b505083546040805160e060020a6313af4035028152600160a060020a03338116600483015291519190921692506313af40359160248082019260009290919082900301818387803b151561097c57fe5b60325a03f1151561098957fe5b505083546040805160e060020a63bbe427710281526103e860048201529051600160a060020a03909216925063bbe4277191602480830192600092919082900301818387803b15156109d757fe5b60325a03f115156109e457fe5b5050505b846040518082805190602001908083835b60208310610a185780518252601f1990920191602091820191016109f9565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060028a015460018b01549084529183019190915283519095508994507f1f9c649fe47e58bb60f4e52f0d90e4c47a526c9f90c5113df842c025970b66ad93918190039091019150a360006002840181905560038401558254600160a060020a03191683555b5b5050505050565b604080518581526c01000000000000000000000000600160a060020a038616026020820152603481018490526054810183905290519081900360740190205b949350505050565b600160a060020a03808316600090815260036020908152604080832085845290915290205416801580610b9157506206978063ffffffff1681600160a060020a03166305b344106000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610b7157fe5b60325a03f11515610b7e57fe5b5050506040518051905001621275000142105b15610b9c5760006000fd5b80600160a060020a03166313af4035336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1515610bf357fe5b60325a03f11515610c0057fe5b50505080600160a060020a031663bbe4277160056040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b1515610c4957fe5b60325a03f11515610c5657fe5b505050600160a060020a038316600081815260036020908152604080832086845282528083208054600160a060020a03191690558051928352600591830191909152805185926000805160206126bc83398151915292908290030190a35b505050565b60008181526002602052604081208190819081908190610cd88761150d565b8154600183015460028401546003850154939950600160a060020a0390921697509550935091505b5091939590929450565b600054600160a060020a031681565b600060006000600060006000610d3189338a8a610aac565b600160a060020a033381166000908152600360209081526040808320858452909152902054919750169450841515610d695760006000fd5b600160a060020a0333811660009081526003602090815260408083208a845282528083208054600160a060020a03191690558c8352600282528083208151830184905281517f3fa4f2450000000000000000000000000000000000000000000000000000000081529151909850610e1b948d94908b1693633fa4f245936004808201949293918390030190829087803b1515610e0157fe5b60325a03f11515610e0e57fe5b5050604051519050611eeb565b6040805160e160020a63586404b902815260048101839052600160248201529051919450600160a060020a0387169163b0c809729160448082019260009290919082900301818387803b1515610e6d57fe5b60325a03f11515610e7a57fe5b505050610e868961150d565b915060025b826005811115610e9757fe5b1415610f2b5784600160a060020a031663bbe4277160056040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b1515610ee357fe5b60325a03f11515610ef057fe5b505060408051858152600160208201528151600160a060020a03331693508c926000805160206126bc833981519152928290030190a3611267565b60045b826005811115610f3a57fe5b14610f455760006000fd5b662386f26fc10000831080610fc457506202a30063ffffffff1684600101540385600160a060020a03166305b344106000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610fab57fe5b60325a03f11515610fb857fe5b50505060405180519050115b156110585784600160a060020a031663bbe427716103e36040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b151561101057fe5b60325a03f1151561101d57fe5b505060408051858152600060208201528151600160a060020a03331693508c926000805160206126bc833981519152928290030190a3611267565b8360030154831115611139578354600160a060020a0316156110d3575082546040805160e060020a63bbe427710281526103e360048201529051600160a060020a0390921691829163bbe4277191602480830192600092919082900301818387803b15156110c257fe5b60325a03f115156110cf57fe5b5050505b600384018054600280870191909155908490558454600160a060020a031916600160a060020a03878116919091178655604080518681526020810193909352805133909216928c926000805160206126bc833981519152929181900390910190a3611267565b83600201548311156111dc57600284018390556040805160e060020a63bbe427710281526103e360048201529051600160a060020a0387169163bbe4277191602480830192600092919082900301818387803b151561119457fe5b60325a03f115156111a157fe5b505060408051858152600360208201528151600160a060020a03331693508c926000805160206126bc833981519152928290030190a3611267565b84600160a060020a031663bbe427716103e36040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b151561122357fe5b60325a03f1151561123057fe5b505060408051858152600460208201528151600160a060020a03331693508c926000805160206126bc833981519152928290030190a35b5b5b5b5b5b505050505050505050565b6000808260025b6112878261150d565b600581111561129257fe5b14158061131f575060008181526002602090815260408083205481518301849052815160e060020a638da5cb5b0281529151600160a060020a0390911693638da5cb5b93600480850194919392918390030190829087803b15156112f257fe5b60325a03f115156112ff57fe5b50505060405180519050600160a060020a031633600160a060020a031614155b1561132a5760006000fd5b60008054600154604080516020908101859052815160e060020a6302571be302815260048101939093529051600160a060020a03909316936302571be3936024808501949192918390030190829087803b151561138357fe5b60325a03f1151561139057fe5b50505060405180519050925030600160a060020a031683600160a060020a031614156113bc5760006000fd5b600084815260026020526040808220805482517ffaab9d39000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152935192965092169263faab9d39926024808201939182900301818387803b151561142857fe5b60325a03f1151561143557fe5b505082546001840154604080517fea9e107a00000000000000000000000000000000000000000000000000000000815260048101899052600160a060020a039384166024820152604481019290925251918616925063ea9e107a91606480830192600092919082900301818387803b15156114ac57fe5b60325a03f115156114b957fe5b50508254600160a060020a0319168355506000600183018190556002830181905560038301555b5b50505050565b6003602090815260009283526040808420909152908252902054600160a060020a031681565b600081815260026020526040812061152583426116cb565b15156115345760059150611582565b80600101544210156115695760018101546202a2ff190142101561155b5760019150611582565b60049150611582565b611582565b6003810154151561157d5760009150611582565b600291505b5b5b5b50919050565b60008260025b61159a8261150d565b60058111156115a557fe5b141580611632575060008181526002602090815260408083205481518301849052815160e060020a638da5cb5b0281529151600160a060020a0390911693638da5cb5b93600480850194919392918390030190829087803b151561160557fe5b60325a03f1151561161257fe5b50505060405180519050600160a060020a031633600160a060020a031614155b1561163d5760006000fd5b600160a060020a03831615156116535760006000fd5b6000848152600260205260408082208054825160e060020a6313af4035028152600160a060020a03888116600483015293519296509216926313af4035926024808201939182900301818387803b15156116a957fe5b60325a03f115156116b657fe5b50505061075d8484611f0a565b5b5b50505050565b60006116d683610764565b821190505b92915050565b60008160025b6116f08261150d565b60058111156116fb57fe5b141580611788575060008181526002602090815260408083205481518301849052815160e060020a638da5cb5b0281529151600160a060020a0390911693638da5cb5b93600480850194919392918390030190829087803b151561175b57fe5b60325a03f1151561176857fe5b50505060405180519050600160a060020a031633600160a060020a031614155b156117935760006000fd5b6000838152600260208190526040909120908101549092506117bc90662386f26fc10000611ecc565b6002830181905582546040805160e160020a63586404b902815260048101939093526001602484015251600160a060020a039091169163b0c8097291604480830192600092919082900301818387803b151561181457fe5b60325a03f1151561182157fe5b505082546040805160006020918201819052825160e060020a638da5cb5b028152925161189095508894600160a060020a031693638da5cb5b936004808301949193928390030190829087803b151561187657fe5b60325a03f1151561188357fe5b5050604051519050611f0a565b81546040805160006020918201819052825160e060020a638da5cb5b0281529251600160a060020a0390941693638da5cb5b9360048082019493918390030190829087803b15156118dd57fe5b60325a03f115156118ea57fe5b50506040805180516002860154600187015490835260208301528251600160a060020a03909116935086927f0f0c27adfd84b60b6f456b0e87cdccb1e5fb9603991588d87fa99f5b6b61e670928290030190a35b5b505050565b60045481565b6249d40081565b600160a060020a033381166000908152600360209081526040808320858452909152812054909116819011156119875760006000fd5b662386f26fc1000034101561199c5760006000fd5b34336119a6612195565b600160a060020a039091168152604051908190036020019082f08015156119c957fe5b33600160a060020a0390811660008181526003602090815260408083208984528252918290208054600160a060020a031916948616949094179093558051348152905193955090935085927fb556ff269c1b6714f432c36431e2041d28436a73b6c3f19c021827bbdc6bfc29929181900390910190a35b5050565b80511515611a525760006000fd5b60025b611a79826001845103815181101515611a6a57fe5b9060200190602002015161150d565b6005811115611a8457fe5b1415611a905760006000fd5b611aa1600182510382600154611ffb565b5b50565b60005b8151811015611a4057611ad18282815181101515611ac257fe5b90602001906020020151611ae5565b5b600101611aa8565b5b5050565b5b505050565b60006000600454421080611b005750600454630784ce000142115b80611b85575060008054600154604080516020908101859052815160e060020a6302571be302815260048101939093529051600160a060020a03308116959416936302571be3936024808201949392918390030190829087803b1515611b6257fe5b60325a03f11515611b6f57fe5b50505060405180519050600160a060020a031614155b15611b905760006000fd5b611b998361150d565b915060015b826005811115611baa57fe5b1415611bb557610cb4565b60005b826005811115611bc457fe5b14611bcf5760006000fd5b50600082815260026020818152604080842042620697800160018201819055938101859055600381019490945580519283525185927f87e97e825a1d1fa0c54e1d36c7506c1dea8b1efd451fe68b000cf96f7cf4000392908290030190a25b5b505050565b60015481565b611c4382611aa5565b611a4081611951565b5b5050565b60008054600154604080516020908101859052815160e060020a6302571be302815260048101939093529051600160a060020a033081169416926302571be392602480830193919282900301818887803b1515611caa57fe5b60325a03f11515611cb757fe5b50505060405180519050600160a060020a03161415611a4057600080546001546040805160e060020a6306ab5923028152600481019290925260248201869052600160a060020a03308116604484015290519216926306ab59239260648084019382900301818387803b1515611d2957fe5b60325a03f11515611d3657fe5b50506001546040805191825260208201859052805191829003810182206000805460e160020a630c4b7b8502855260048501839052602485018290529251919550600160a060020a039092169350631896f70a92604480820193929182900301818387803b1515611da357fe5b60325a03f11515611db057fe5b5050600080546040805160e060020a635b0fc9c302815260048101869052602481018490529051600160a060020a039092169350635b0fc9c392604480830193919282900301818387803b1515611e0357fe5b60325a03f11515610aa457fe5b5050505b5b5050565b805160009060018381019184010182805b82841015611ebf5750825160ff166080811015611e4c57600184019350611eaf565b60e08160ff161015611e6357600284019350611eaf565b60f08160ff161015611e7a57600384019350611eaf565b60f88160ff161015611e9157600484019350611eaf565b60fc8160ff161015611ea857600584019350611eaf565b6006840193505b5b5b5b5b5b600190910190611e2a565b8194505b50505050919050565b600081831115611edd5750816116db565b50806116db565b5b92915050565b600081831015611edd5750816116db565b50806116db565b5b92915050565b60008054600154604080516020908101859052815160e060020a6302571be302815260048101939093529051600160a060020a03308116959416936302571be3936024808201949392918390030190829087803b1515611f6657fe5b60325a03f11515611f7357fe5b50505060405180519050600160a060020a03161415611a4057600080546001546040805160e060020a6306ab5923028152600481019290925260248201869052600160a060020a03858116604484015290519216926306ab59239260648084019382900301818387803b1515611e0357fe5b60325a03f11515610aa457fe5b5050505b5b5050565b6000548251600160a060020a03909116906306ab592390839085908790811061202057fe5b602090810290910101516040805160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a033016604483015251606480830192600092919082900301818387803b151561207957fe5b60325a03f1151561208657fe5b50505080828481518110151561209857fe5b60209081029091018101516040805193845291830152805191829003019020905060008311156120d0576120d0600184038383611ffb565b5b600080546040805160e160020a630c4b7b8502815260048101859052602481018490529051600160a060020a0390921692631896f70a9260448084019382900301818387803b151561211f57fe5b60325a03f1151561212c57fe5b5050600080546040805160e060020a635b0fc9c302815260048101869052602481018490529051600160a060020a039092169350635b0fc9c392604480830193919282900301818387803b151561217f57fe5b60325a03f1151561218c57fe5b5050505b505050565b604051610516806121a6833901905600606060405260405160208061051683398101604052515b60028054600160a060020a03808416600160a060020a0319928316179092556000805433909316929091169190911790554260019081556005805460ff19169091179055346004555b505b6104a6806100706000396000f300606060405236156100885763ffffffff60e060020a60003504166305b34410811461008a5780630b5ab3d5146100ac57806313af4035146100be5780632b20e397146100dc5780633fa4f24514610108578063674f220f1461012a5780638da5cb5b14610156578063b0c8097214610182578063bbe427711461019c578063faab9d39146101b1575bfe5b341561009257fe5b61009a6101cf565b60408051918252519081900360200190f35b34156100b457fe5b6100bc6101d5565b005b34156100c657fe5b6100bc600160a060020a036004351661021d565b005b34156100e457fe5b6100ec6102c3565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b61009a6102d2565b60408051918252519081900360200190f35b341561013257fe5b6100ec6102d8565b60408051600160a060020a039092168252519081900360200190f35b341561015e57fe5b6100ec6102e7565b60408051600160a060020a039092168252519081900360200190f35b341561018a57fe5b6100bc60043560243515156102f6565b005b34156101a457fe5b6100bc600435610382565b005b34156101b957fe5b6100bc600160a060020a0360043516610431565b005b60015481565b60055460ff16156101e65760006000fd5b600254604051600160a060020a039182169130163180156108fc02916000818181858888f193505050501561021a5761deadff5b5b565b60005433600160a060020a039081169116146102395760006000fd5b600160a060020a038116151561024f5760006000fd5b600280546003805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03808516919091179092559084169116811790915560408051918252517fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369181900360200190a15b5b50565b600054600160a060020a031681565b60045481565b600354600160a060020a031681565b600254600160a060020a031681565b60005433600160a060020a039081169116146103125760006000fd5b60055460ff1615156103245760006000fd5b8160045410156103345760006000fd5b6004829055600254604051600160a060020a039182169130163184900380156108fc02916000818181858888f193505050501580156103705750805b1561037b5760006000fd5b5b5b5b5050565b60005433600160a060020a0390811691161461039e5760006000fd5b60055460ff1615156103b05760006000fd5b6005805460ff1916905561dead6108fc6103e883810330600160a060020a031631025b604051919004801590920291906000818181858888f1935050505015156103fa5760006000fd5b6040517fbb2ce2f51803bba16bc85282b47deeea9a5c6223eabea1077be696b3f265cf1390600090a16102bf6101d5565b5b5b5b50565b60005433600160a060020a0390811691161461044d5760006000fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a72305820fbfa6f8a2024760ef0e0eb29a332c9a820526e92f8b4fbcce6f00c7643234b1400297b6c4b278d165a6b33958f8ea5dfb00c8c9d4d0acf1985bef5d10786898bc3e7a165627a7a723058203c2db82e7c80cd1e371fe349b03d49b812c324ba4a3fcd063b7bc2662353c5de0029000000000000000000000000314159265dd8dbb310642f98f50c066173c1259b93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae00000000000000000000000000000000000000000000000000000000590b09b0

    Constructor Arguments (ABI-encoded and appended to the ByteCode above)
000000000000000000000000314159265dd8dbb310642f98f50c066173c1259b93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae00000000000000000000000000000000000000000000000000000000590b09b0

-----Decoded View---------------
Found 3 constructor arguments :
Arg [0] : 000000000000000000000000314159265dd8dbb310642f98f50c066173c1259b
Arg [1] : 93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae
Arg [2] : 00000000000000000000000000000000000000000000000000000000590b09b0


   Swarm Source:
bzzr://3c2db82e7c80cd1e371fe349b03d49b812c324ba4a3fcd063b7bc2662353c5de
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.