Sponsored Link:   Ambrosus Main-Net Launching: Stake AMB in Masternodes and get regular rewards for maintaining network integrity.
 Latest 25 txns from a total Of 1216231 transactions
(+10 PendingTxns)

TxHash Age From To Value [TxFee]
0x20167d4d9fe863f852399e9c7136f8cbf530789d1bfce5266696b3cde8f59855(pending)0xa3d9043b029b08d819067f0595f6fac81e2dac3c  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0.01 Ether(pending)
0x7164206fe4ec643231e8525cb3b4563a4574bd2218bfdc354e0b78d9dbed80d3(pending)0x61117012f9fb63cf0e7c688c76bfc874db3c6874  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0 Ether(pending)
0x611c24a02e58bcdbfdcf979732ca311fad745fe4dd2866072a654b9e2c8caa97(pending)0xb47e3e27dbb843c272f3af376e40ff9b9dd6d0c0  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0 Ether(pending)
0x8dca9933c7211caa4581313ee5e971d054d6172600c5c52acb332657fc75a30c(pending)0xcd2e9978050e1e79a23f62909a084491ac30c8e0  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0.030222 Ether(pending)
0x586ce8a84b773b815595c64936ff0cee33386861dd67c5293f052cbea79c32cd(pending)0xcd2e9978050e1e79a23f62909a084491ac30c8e0  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0.03 Ether(pending)
0x92cf4d253ad8161742766856d403f1dda421529745e30ee5cd483d6c84ca788a(pending)0xa3d9043b029b08d819067f0595f6fac81e2dac3c  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0.01 Ether(pending)
0x7a29a42f10a3f3c4a35335070195b93980b560ac6d2fb736fde88c9fb83b392d(pending)0x5be5fe133dff168b4604a35f0eeaeb83d25b1313  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0 Ether(pending)
0xd3c2690a21688c875f001434037d95e41683f7eefeab5a4346da2785522db30d(pending)0xa3d9043b029b08d819067f0595f6fac81e2dac3c  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0.01 Ether(pending)
0x3dd850eb01ab02b91df111158a0b23df2544217b8b4b2aa9e82166a358ea7d0a(pending)0x584515c04c96cc860e6c030eda2c97741530c064  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0 Ether(pending)
0xde9d4988c195fb061ddf01a71905c07c87c3b5d4e643bf5ce4db67e5c219323d(pending)0xa7f3659c53820346176f7e0e350780df304db179  IN  0x6090a6e47849629b7245dfa1ca21d94cd15878ef0.238 Ether(pending)
0x05c695bf8a456222403284d5ecefcc0df4b2ab68a9e9806ac46c80829027b3412 mins ago0xba7d1174e40b70b257c75e5703b7bc6793e4bff1  IN   ENS-Registrar0.03 Ether0.001829276
0x4f10ee1c50c323f2ae4ff9b2bbda71011081e0c60c4952c882ed01483ab71e8927 mins ago0xa7c8e2e5e6beeed604d860c3a9e22fb8f2560def  IN   ENS-Registrar1 Ether0.018747455
0x5daee6e4a673861dff1a24f7a28a858ca96b01d064676366346c69de0750bf0534 mins ago0xe071e5a1634af08e83e1b366fc4fcb5453f3c113  IN   ENS-Registrar0.01 Ether0.018750079
0x17405990639848d8a9634ecef73effc4d657b3103e58172bf6264e1f361bd01142 mins ago0x5b604b6ac7313f58cc8071d2a7f9cdeae95bdebb  IN   ENS-Registrar0.01 Ether0.00457319
0x4d51f35ee84c2d94ec714fe260236e226547038ce07b70e10ca2d548564e6e0b50 mins ago0x6d4c4d0c2c824d25e96e71efe2202c83282a4d8e  IN   ENS-Registrar0.051 Ether0.017155876
0x15a5db072b6fa9a038cc403e7adc28f4d70783e3e38cebcfd2a6c9570ae8cff752 mins ago0xb031f25dd528b60476cd17a9094c17b01330feae  IN   ENS-Registrar0.01 Ether0.018747455
0xdaec261f07a8f6392f37994e5b89283884f105b979825f4f13fb3861eeefaf001 hr 5 mins ago0x12a9f218b3dbddda856f8f29546b87c9a9a6ff13  IN   ENS-Registrar0.01 Ether0.006859785
0xa1fd092cf1d39fd587a420c7298105821036d09d6f3407210c4cc68d9d8c43e21 hr 6 mins ago0xd4d00a14d2d3181dbebeaf062933d150e9bafb27  IN   ENS-Registrar0.011 Ether0.017153252
0x31fe692c3dcd23943bd03cc7d547f4e801a65ea796cfd01f431cf21ab1bbf8861 hr 11 mins ago0x311e8304e0d9298058c6d288f55d17eeb45fd7a6  IN   ENS-Registrar0 Ether0.000279657
0xabdbfed27195d685f7a6d33ea3dea224f04b83c2af6aaaf645577f4145ce81461 hr 12 mins ago0x9ddfbf491750ac78831ec045e87cda74475856a5  IN   ENS-Registrar0 Ether0.000149217
0x1bf6ddd3204fbcdba698d499f9037be31ff919176c6b28a2bb3ef797bfbd1c3c1 hr 12 mins ago0xf4cb8a39a28f544cacb5a94fc692e4032c607ef8  IN   ENS-Registrar0.01 Ether0.018750079
0xd1c85ba5250e1a5414f42326bde1bf37da2f1ed0f4819b9650d65aba0d74827b1 hr 15 mins ago0xf4cb8a39a28f544cacb5a94fc692e4032c607ef8  IN   ENS-Registrar0.05 Ether0.018750079
0x94207af0e6771e1e8287ea872c450d6e8e1d342645b3de58fbc667545d3067c41 hr 18 mins ago0x1418ef752d962553d286d6f87289c4b49553257d  IN   ENS-Registrar0.01 Ether0.001371957
0x2d955b4de9fc15f1176a6b0ad8512537ac3371f8701694cf9bfc1ed568adecbd1 hr 38 mins ago0x8232df63f289af58489e465e9a7f6fdc94f23917  IN   ENS-Registrar0.24 Ether0.00209218
0x0130cb816f7fc33b8e10ba70ada4f09eb8108e35cc8dc849879054c0de2985271 hr 49 mins ago0x349b5654270cd7ec1ac54176b180cc9fc3bb20a9  IN   ENS-Registrar0.01 Ether0.015091527
[ 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
0x05c695bf8a456222403284d5ecefcc0df4b2ab68a9e9806ac46c80829027b34159821352 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.03 Ether
0x4f10ee1c50c323f2ae4ff9b2bbda71011081e0c60c4952c882ed01483ab71e89598203527 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation1 Ether
0x5daee6e4a673861dff1a24f7a28a858ca96b01d064676366346c69de0750bf05598201034 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x17405990639848d8a9634ecef73effc4d657b3103e58172bf6264e1f361bd011598197042 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x4d51f35ee84c2d94ec714fe260236e226547038ce07b70e10ca2d548564e6e0b598193150 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.051 Ether
0x15a5db072b6fa9a038cc403e7adc28f4d70783e3e38cebcfd2a6c9570ae8cff7598192552 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xdaec261f07a8f6392f37994e5b89283884f105b979825f4f13fb3861eeefaf0059818681 hr 5 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xa1fd092cf1d39fd587a420c7298105821036d09d6f3407210c4cc68d9d8c43e259818661 hr 6 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.011 Ether
0x1bf6ddd3204fbcdba698d499f9037be31ff919176c6b28a2bb3ef797bfbd1c3c59818401 hr 12 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xd1c85ba5250e1a5414f42326bde1bf37da2f1ed0f4819b9650d65aba0d74827b59818221 hr 15 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.05 Ether
0x94207af0e6771e1e8287ea872c450d6e8e1d342645b3de58fbc667545d3067c459818041 hr 18 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x2d955b4de9fc15f1176a6b0ad8512537ac3371f8701694cf9bfc1ed568adecbd59817331 hr 38 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.24 Ether
0x0130cb816f7fc33b8e10ba70ada4f09eb8108e35cc8dc849879054c0de29852759817031 hr 49 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xbc6a91eba81039af2998f80808d1aa9b633aff55a7a3f8006ccda180b4642e9f59816891 hr 53 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x0660105d845910856db3165d34e924d9e8c0661db9def56df723c008010451ce59816661 hr 57 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x904763c6725bd87dbc7b3a8ba1c257e1a68f9700c53494e69b7731598f23837559816242 hrs 7 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x1c4716d891fd2c78809f65419b20d19b68f6d54c0bc340a8c3a3d211af521c6c59815442 hrs 27 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x2e58c6320bb546c624e0b80f67e1b21b8450d06302632391ffd744ae81321f8f59813943 hrs 7 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation2.5 Ether
0xb7aa9b3b7c6e21e714f7cd2ddb77b3c2e992ce0273c8f5c17e21c874291f68fc59813933 hrs 8 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xadb4beae87d41936e7371d762057d4203c45e3d063f7e7a730764d3a379b2ce059813823 hrs 10 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xe48dfa8c753e64408e75a31266789714de7b17033dfce847e1b1a3e1b00d86ac59813363 hrs 19 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0xe527aefb7ff31667386e297e7b6c4c4b3d9fcbc0c23ad0954a225868a332b31859813343 hrs 19 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x7560ba60a19262b8ba73db6b76c6c3da46ae44e8f3438b7f80d13e6f64864f3759812903 hrs 31 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
0x4d184d51878988e2d11d386668ef4d346ed311cbd8699762f136cedfd3073abb59812883 hrs 32 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.1 Ether
0xffa64f21ee6e9789137dd762d0fe10cdb30cad3d4449f75af8b54a3d416a975959812753 hrs 35 mins ago0x6090a6e47849629b7245dfa1ca21d94cd15878ef  Contract Creation0.01 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity), DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity), ConstantOptimizerSubtraction (low-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
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 is the last bytes of the Contract Creation Code 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.