Latest 25 transactions from a total of 16898 transactions

TxHash Age From To Value [TxFee]
0x2a993fd673fe707c4ae03c6e2d19d0b7687e202aa13a0583a494ee65a47d19853 hrs 11 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0xc655f8648036e5402299a862a92fac3ad4e4e72516f4a9b0dcd8ac4c2d123f1e12 hrs 11 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x6ef776b58bfa065ade7f71db25fa533ef1b66dddea8efb76a7288c99a2e3847812 hrs 41 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050116
0xa090c85c95af3929873f05acd2880fbb90b9255a41e447f96fb2f585ca1da1fa12 hrs 56 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x6d83a63dc613858c4a86156ecb4ce95b7452b7b50bdc94f36b1de8efd9f3468f13 hrs 11 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x0db42089bbc7716573c908c0b445d659d6a5bcc546f67125fa1d8a605247c99113 hrs 26 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x32264f8c9e2b2336785f7a7e12ebd2ec4024b979733df8ad7c5fef1b2bb9644113 hrs 41 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0xa435e2972f0ac471560ded515f726517d1490fa3f3b3656a769206c9a630ceb013 hrs 56 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x1ea477ce0d81963ab82391fef9aa2249edc56968dd094001628bd03fe635f29714 hrs 10 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x858881fe5189120c9d8f0f50869856e0e7237682c893e0b07c98e10f352719da14 hrs 41 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x7925ce774c9efa0b45f9f7b4e45a7eb71ee30c425ea28076cbbdb69c696d6e1f14 hrs 56 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x02b4deeb1ddbf5a02922f4864b83139b5de5393d5e001fc0c9c648e53b8acbcd15 hrs 11 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x8dc18d646e281743a81bf3f9a75f5ca10dd69cddfca27107266c94e7fdbb463215 hrs 41 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x4156af4e19a87a536d3ac4b5a02f7496b439a4a57343c8ccf6e3f2d60b05812216 hrs 11 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x0b4689e1fad51e0038358c9694f0a404934b848017e1333b6f5d815ec9e3bc9116 hrs 38 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0xaddc43b5896c323f501947b3a196e02fd68cf6ed1a5d17eae309ddeffa3035ce17 hrs 11 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x159cbe9b67915bf0679a5ae83f0356177af3e275123edd26138ef7e09c4db19318 hrs 11 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.00005018
0x71df3b4aecffb3940c148e08d733f0c51fd34cb3ed474ee1cb4742bd3786bc8818 hrs 26 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0xf55347e0444d34f63e36100bb82dda882089db4bea75f20a645d1fd5ada3a74618 hrs 41 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x14d1a0da4e7d267b12169cff55e5ef60503fcb6daae8573c7075f563415fbbf518 hrs 56 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x21b7bfc2f62292fc662566d68eea9cd889f2cd84a6bf4a4f9b87e7e952cb428319 hrs 11 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.00005018
0x4ddbeeb0aae96fe80e0c8708a631b35511304a011c77499521b3e2a0e2ef32a420 hrs 11 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.00005018
0xf8f68154ab973c58a441b69f41ae811ba105828adb0af5775156abbc30d0c10920 hrs 25 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.00005018
0x3e61822e13478ab54075e178b30365d2682c643be2d8e53eced23affca4e24f320 hrs 41 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
0x6c1bf9b587923836226a85978edb4efc6ade843c5fd6f9d297930f4cf50d7e2a21 hrs 26 mins ago0x752a90beac2be4cf1765b38753317403336961e2  IN   0xc19fd9004b5c9789391679de6d766b981db946100 Ether0.000050244
[ 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
0xda2e879f5ff8844c005067bf2f3806cd9b905d5dbd100e52443a5bd56ccb42f6484882611 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0xda2e879f5ff8844c005067bf2f3806cd9b905d5dbd100e52443a5bd56ccb42f6484882611 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0xcb30d92b7bd7ef71c8ff2a5c3170d8e6fbc823da749a6be6b1ed11035a0c1c3b484876826 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0xcb30d92b7bd7ef71c8ff2a5c3170d8e6fbc823da749a6be6b1ed11035a0c1c3b484876826 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0x6f4e1064c2ec7957e848b4148e3a0c43503a436dcee2049c95f8cd56e6639b8c484868241 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0x6f4e1064c2ec7957e848b4148e3a0c43503a436dcee2049c95f8cd56e6639b8c484868241 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0x69942ca238132b1cb7a4d585d16d7012f8c6c40234a6aad2e44726588d956fd6484862856 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0x69942ca238132b1cb7a4d585d16d7012f8c6c40234a6aad2e44726588d956fd6484862856 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0xd20987e6d38cf0943223a89fae105b9cb1cef640de47c0836b8ec84b4ba4cce648485611 hr 11 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0xd20987e6d38cf0943223a89fae105b9cb1cef640de47c0836b8ec84b4ba4cce648485611 hr 11 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0x931dbe13880b7ea6a5d30c2d1432abe2660ee68f7b1a83f031c5c2fd34321a1248484931 hr 26 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0x931dbe13880b7ea6a5d30c2d1432abe2660ee68f7b1a83f031c5c2fd34321a1248484931 hr 26 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0x2247dd52a973ec7254778e052dac67d8ca5b5ad2db7bac851132320e506b470c48484311 hr 41 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0x2247dd52a973ec7254778e052dac67d8ca5b5ad2db7bac851132320e506b470c48484311 hr 41 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0xd37707960f21a6e8300db84c3df41cc5f48917826b46df9084b58b4bdd87758248483821 hr 56 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0xd37707960f21a6e8300db84c3df41cc5f48917826b46df9084b58b4bdd87758248483821 hr 56 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0xd45bb6450008c763325996d7e5784dd5d5fe3218a46c686156ed9acb11713ef048483262 hrs 11 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0xd45bb6450008c763325996d7e5784dd5d5fe3218a46c686156ed9acb11713ef048483262 hrs 11 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0xa149f733a6c388020a51c0272d3e2487164bc17d43b8463b65104aa7734e326a48482552 hrs 27 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0xa149f733a6c388020a51c0272d3e2487164bc17d43b8463b65104aa7734e326a48482552 hrs 27 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0xaaa02b29398fbc2fa19e8305f6df34a2228268d5f24fc46759bc6f0c2ef6386648481982 hrs 41 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0xaaa02b29398fbc2fa19e8305f6df34a2228268d5f24fc46759bc6f0c2ef6386648481982 hrs 41 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0xb2761c03b31ca458728f856743ea75a8fd1ca5c1da54e55a104fd009846c1caa48481462 hrs 55 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
0xb2761c03b31ca458728f856743ea75a8fd1ca5c1da54e55a104fd009846c1caa48481462 hrs 55 mins ago0x6a9d08d955bba04dc9d4ab8e752cb87cfd8851e30xc19fd9004b5c9789391679de6d766b981db946100 Ether
0x2a993fd673fe707c4ae03c6e2d19d0b7687e202aa13a0583a494ee65a47d198548480863 hrs 11 mins ago0xc19fd9004b5c9789391679de6d766b981db946100x112234455c3a32fd11230c42e7bccd4a84e020100 Ether
[ Download CSV Export  ] 
Contract Name: Registrar
Compiler Text: 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;
        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 constant launchLength = 4 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 -> Forbidden (invalidateName)
    //   Owned -> Open (releaseDeed)
    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 if(entry.deed == Deed(0)) {
                return Mode.Forbidden;
            } 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];

        // for the first month of the registry, make longer auctions
        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 24h 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;
            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 the bid hasn't been revealed after any possible auction date, then close it
        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];
        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.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":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
6060604052341561000c57fe5b6040516060806127498339810160409081528151602083015191909201515b60008054600160a060020a031916600160a060020a038516178155600183905581116100575742610059565b805b6004555b5050505b6126d9806100706000396000f3006060604052361561010c5763ffffffff60e060020a6000350416630230a07c811461010e57806313c89a8f1461012357806315f733311461014857806322ec1244146101a05780632525f5c1146101d7578063267b6922146101f85780633f15457f1461025357806347872b421461027f5780635ddae2831461029a5780635e431709146102af57806361d585da146102ea57806379ce9fac146103215780639350333714610342578063983b94fb1461036c5780639c67f06f14610381578063ce92dced146103a3578063de10f04b146103b0578063e27fe50f14610405578063ea9e107a1461045a578063ede8acdb1461047e578063faff50a814610493578063febefd61146104b5575bfe5b341561011657fe5b610121600435610504565b005b341561012b57fe5b610136600435610730565b60408051918252519081900360200190f35b341561015057fe5b610121600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965061075595505050505050565b005b34156101a857fe5b610136600435600160a060020a0360243516604435606435610a6a565b60408051918252519081900360200190f35b34156101df57fe5b610121600160a060020a0360043516602435610ab1565b005b341561020057fe5b61020b600435610c77565b6040518086600581111561021b57fe5b60ff168152600160a060020a0390951660208601525060408085019390935260608401919091526080830152519081900360a0019150f35b341561025b57fe5b610263610cc8565b60408051600160a060020a039092168252519081900360200190f35b341561028757fe5b610121600435602435604435610cd7565b005b34156102a257fe5b610121600435611235565b005b34156102b757fe5b610263600160a060020a03600435166024356114a5565b60408051600160a060020a039092168252519081900360200190f35b34156102f257fe5b6102fd6004356114cb565b6040518082600581111561030d57fe5b60ff16815260200191505060405180910390f35b341561032957fe5b610121600435600160a060020a0360243516611564565b005b341561034a57fe5b6103586004356024356116a4565b604080519115158252519081900360200190f35b341561037457fe5b6101216004356116ba565b005b341561038957fe5b61013661191d565b60408051918252519081900360200190f35b610121600435611923565b005b34156103b857fe5b610121600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650611a1695505050505050565b005b341561040d57fe5b610121600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650611a7795505050505050565b005b341561046257fe5b610121600435600160a060020a0360243516604435610c72565b005b341561048657fe5b610121600435611ab7565b005b341561049b57fe5b610136611c06565b60408051918252519081900360200190f35b6101216004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505093359350611c0c92505050565b005b6000808260025b610514826114cb565b600581111561051f57fe5b1415806105ac575060008181526002602090815260408083205481518301849052815160e060020a638da5cb5b0281529151600160a060020a0390911693638da5cb5b93600480850194919392918390030190829087803b151561057f57fe5b60325a03f1151561058c57fe5b50505060405180519050600160a060020a031633600160a060020a031614155b156105b75760006000fd5b600084815260026020526040902080546001820154919450600160a060020a031692506301e133800142108015610667575060008054600154604080516020908101859052815160e060020a6302571be302815260048101939093529051600160a060020a03308116959416936302571be3936024808201949392918390030190829087803b151561064557fe5b60325a03f1151561065257fe5b50505060405180519050600160a060020a0316145b156106725760006000fd5b60006002840181905560038401558254600160a060020a031916835561069784611c23565b81600160a060020a031663bbe427716103e86040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b15156106de57fe5b60325a03f115156106eb57fe5b5050506002830154604080519182525185917f292b79b9246fa2c8e77d3fe195b251f9cb839d7d038e667c069ee7708c631e16919081900360200190a25b5b50505050565b6004547001000000000000000000000000000000006224ea008184040204015b919050565b60006000826040518082805190602001908083835b602083106107895780518252601f19909201916020918201910161076a565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209250600291508190505b6107c5836114cb565b60058111156107d057fe5b146107db5760006000fd5b60066107e686611deb565b11156107f25760006000fd5b846040518082805190602001908083835b602083106108225780518252601f199092019160209182019101610803565b51815160209384036101000a600019018019909216911617905260408051929094018290039091206000818152600290925292902091975090955061086c9250869150611c239050565b8254600160a060020a0316156109b4576108918360020154662386f26fc10000611e9e565b60028085018290558454600160a060020a03169163b0c8097291905b6040805160e060020a63ffffffff8616028152929091046004830152600060248301819052905160448084019382900301818387803b15156108eb57fe5b60325a03f115156108f857fe5b505083546040805160e060020a6313af4035028152600160a060020a03338116600483015291519190921692506313af40359160248082019260009290919082900301818387803b151561094857fe5b60325a03f1151561095557fe5b505083546040805160e060020a63bbe427710281526103e860048201529051600160a060020a03909216925063bbe4277191602480830192600092919082900301818387803b15156109a357fe5b60325a03f115156109b057fe5b5050505b846040518082805190602001908083835b602083106109e45780518252601f1990920191602091820191016109c5565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060028a015460018b01549084529183019190915283519095508994507f1f9c649fe47e58bb60f4e52f0d90e4c47a526c9f90c5113df842c025970b66ad93918190039091019150a38254600160a060020a03191683555b5b5050505050565b604080518581526c01000000000000000000000000600160a060020a038616026020820152603481018490526054810183905290519081900360740190205b949350505050565b600160a060020a03808316600090815260036020908152604080832085845290915290205416801580610b4f57506206978063ffffffff1681600160a060020a03166305b344106000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610b2f57fe5b60325a03f11515610b3c57fe5b5050506040518051905001621275000142105b15610b5a5760006000fd5b80600160a060020a03166313af4035336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1515610bb157fe5b60325a03f11515610bbe57fe5b50505080600160a060020a031663bbe4277160056040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b1515610c0757fe5b60325a03f11515610c1457fe5b505050600160a060020a038316600081815260036020908152604080832086845282528083208054600160a060020a031916905580519283526005918301919091528051859260008051602061268e83398151915292908290030190a35b505050565b60008181526002602052604081208190819081908190610c96876114cb565b8154600183015460028401546003850154939950600160a060020a0390921697509550935091505b5091939590929450565b600054600160a060020a031681565b600060006000600060006000610cef89338a8a610a6a565b600160a060020a033381166000908152600360209081526040808320858452909152902054919750169450841515610d275760006000fd5b600160a060020a0333811660009081526003602090815260408083208a845282528083208054600160a060020a03191690558c8352600282528083208151830184905281517f3fa4f2450000000000000000000000000000000000000000000000000000000081529151909850610dd9948d94908b1693633fa4f245936004808201949293918390030190829087803b1515610dbf57fe5b60325a03f11515610dcc57fe5b5050604051519050611ebd565b6040805160e160020a63586404b902815260048101839052600160248201529051919450600160a060020a0387169163b0c809729160448082019260009290919082900301818387803b1515610e2b57fe5b60325a03f11515610e3857fe5b505050610e44896114cb565b915060025b826005811115610e5557fe5b1415610ee95784600160a060020a031663bbe4277160056040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b1515610ea157fe5b60325a03f11515610eae57fe5b505060408051858152600160208201528151600160a060020a03331693508c9260008051602061268e833981519152928290030190a3611225565b60045b826005811115610ef857fe5b14610f035760006000fd5b662386f26fc10000831080610f8257506202a30063ffffffff1684600101540385600160a060020a03166305b344106000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610f6957fe5b60325a03f11515610f7657fe5b50505060405180519050115b156110165784600160a060020a031663bbe427716103e36040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b1515610fce57fe5b60325a03f11515610fdb57fe5b505060408051858152600060208201528151600160a060020a03331693508c9260008051602061268e833981519152928290030190a3611225565b83600301548311156110f7578354600160a060020a031615611091575082546040805160e060020a63bbe427710281526103e360048201529051600160a060020a0390921691829163bbe4277191602480830192600092919082900301818387803b151561108057fe5b60325a03f1151561108d57fe5b5050505b600384018054600280870191909155908490558454600160a060020a031916600160a060020a03878116919091178655604080518681526020810193909352805133909216928c9260008051602061268e833981519152929181900390910190a3611225565b836002015483111561119a57600284018390556040805160e060020a63bbe427710281526103e360048201529051600160a060020a0387169163bbe4277191602480830192600092919082900301818387803b151561115257fe5b60325a03f1151561115f57fe5b505060408051858152600360208201528151600160a060020a03331693508c9260008051602061268e833981519152928290030190a3611225565b84600160a060020a031663bbe427716103e36040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b15156111e157fe5b60325a03f115156111ee57fe5b505060408051858152600460208201528151600160a060020a03331693508c9260008051602061268e833981519152928290030190a35b5b5b5b5b5b505050505050505050565b6000808260025b611245826114cb565b600581111561125057fe5b1415806112dd575060008181526002602090815260408083205481518301849052815160e060020a638da5cb5b0281529151600160a060020a0390911693638da5cb5b93600480850194919392918390030190829087803b15156112b057fe5b60325a03f115156112bd57fe5b50505060405180519050600160a060020a031633600160a060020a031614155b156112e85760006000fd5b60008054600154604080516020908101859052815160e060020a6302571be302815260048101939093529051600160a060020a03909316936302571be3936024808501949192918390030190829087803b151561134157fe5b60325a03f1151561134e57fe5b50505060405180519050925030600160a060020a031683600160a060020a0316141561137a5760006000fd5b600084815260026020526040808220805482517ffaab9d39000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152935192965092169263faab9d39926024808201939182900301818387803b15156113e657fe5b60325a03f115156113f357fe5b505082546001840154604080517fea9e107a00000000000000000000000000000000000000000000000000000000815260048101899052600160a060020a039384166024820152604481019290925251918616925063ea9e107a91606480830192600092919082900301818387803b151561146a57fe5b60325a03f1151561147757fe5b50508254600160a060020a0319168355506000600183018190556002830181905560038301555b5b50505050565b6003602090815260009283526040808420909152908252902054600160a060020a031681565b60008181526002602052604081206114e383426116a4565b15156114f2576005915061155a565b80600101544210156115275760018101546202a2ff1901421015611519576001915061155a565b6004915061155a565b61155a565b6003810154151561153b576000915061155a565b8054600160a060020a03161515611555576003915061155a565b600291505b5b5b5b5b50919050565b60008260025b611573826114cb565b600581111561157e57fe5b14158061160b575060008181526002602090815260408083205481518301849052815160e060020a638da5cb5b0281529151600160a060020a0390911693638da5cb5b93600480850194919392918390030190829087803b15156115de57fe5b60325a03f115156115eb57fe5b50505060405180519050600160a060020a031633600160a060020a031614155b156116165760006000fd5b600160a060020a038316151561162c5760006000fd5b6000848152600260205260408082208054825160e060020a6313af4035028152600160a060020a03888116600483015293519296509216926313af4035926024808201939182900301818387803b151561168257fe5b60325a03f1151561168f57fe5b5050506107298484611edc565b5b5b50505050565b60006116af83610730565b821190505b92915050565b60008160025b6116c9826114cb565b60058111156116d457fe5b141580611761575060008181526002602090815260408083205481518301849052815160e060020a638da5cb5b0281529151600160a060020a0390911693638da5cb5b93600480850194919392918390030190829087803b151561173457fe5b60325a03f1151561174157fe5b50505060405180519050600160a060020a031633600160a060020a031614155b1561176c5760006000fd5b60008381526002602081905260409091209081015490925061179590662386f26fc10000611e9e565b6002830181905582546040805160e160020a63586404b902815260048101939093526001602484015251600160a060020a039091169163b0c8097291604480830192600092919082900301818387803b15156117ed57fe5b60325a03f115156117fa57fe5b505082546040805160006020918201819052825160e060020a638da5cb5b028152925161186995508894600160a060020a031693638da5cb5b936004808301949193928390030190829087803b151561184f57fe5b60325a03f1151561185c57fe5b5050604051519050611edc565b81546040805160006020918201819052825160e060020a638da5cb5b0281529251600160a060020a0390941693638da5cb5b9360048082019493918390030190829087803b15156118b657fe5b60325a03f115156118c357fe5b50506040805180516002860154600187015490835260208301528251600160a060020a03909116935086927f0f0c27adfd84b60b6f456b0e87cdccb1e5fb9603991588d87fa99f5b6b61e670928290030190a35b5b505050565b60045481565b600160a060020a033381166000908152600360209081526040808320858452909152812054909116819011156119595760006000fd5b662386f26fc1000034101561196e5760006000fd5b3433611978612167565b600160a060020a039091168152604051908190036020019082f080151561199b57fe5b33600160a060020a0390811660008181526003602090815260408083208984528252918290208054600160a060020a031916948616949094179093558051348152905193955090935085927fb556ff269c1b6714f432c36431e2041d28436a73b6c3f19c021827bbdc6bfc29929181900390910190a35b5050565b80511515611a245760006000fd5b60025b611a4b826001845103815181101515611a3c57fe5b906020019060200201516114cb565b6005811115611a5657fe5b1415611a625760006000fd5b611a73600182510382600154611fcd565b5b50565b60005b8151811015611a1257611aa38282815181101515611a9457fe5b90602001906020020151611ab7565b5b600101611a7a565b5b5050565b5b505050565b60006000600454421080611ad25750600454630784ce000142115b80611b57575060008054600154604080516020908101859052815160e060020a6302571be302815260048101939093529051600160a060020a03308116959416936302571be3936024808201949392918390030190829087803b1515611b3457fe5b60325a03f11515611b4157fe5b50505060405180519050600160a060020a031614155b15611b625760006000fd5b611b6b836114cb565b915060015b826005811115611b7c57fe5b1415611b8757610c72565b60005b826005811115611b9657fe5b14611ba15760006000fd5b50600082815260026020818152604080842042620697800160018201819055938101859055600381019490945580519283525185927f87e97e825a1d1fa0c54e1d36c7506c1dea8b1efd451fe68b000cf96f7cf4000392908290030190a25b5b505050565b60015481565b611c1582611a77565b611a1281611923565b5b5050565b60008054600154604080516020908101859052815160e060020a6302571be302815260048101939093529051600160a060020a033081169416926302571be392602480830193919282900301818887803b1515611c7c57fe5b60325a03f11515611c8957fe5b50505060405180519050600160a060020a03161415611a1257600080546001546040805160e060020a6306ab5923028152600481019290925260248201869052600160a060020a03308116604484015290519216926306ab59239260648084019382900301818387803b1515611cfb57fe5b60325a03f11515611d0857fe5b50506001546040805191825260208201859052805191829003810182206000805460e160020a630c4b7b8502855260048501839052602485018290529251919550600160a060020a039092169350631896f70a92604480820193929182900301818387803b1515611d7557fe5b60325a03f11515611d8257fe5b5050600080546040805160e060020a635b0fc9c302815260048101869052602481018490529051600160a060020a039092169350635b0fc9c392604480830193919282900301818387803b1515611dd557fe5b60325a03f11515610a6257fe5b5050505b5b5050565b805160009060018381019184010182805b82841015611e915750825160ff166080811015611e1e57600184019350611e81565b60e08160ff161015611e3557600284019350611e81565b60f08160ff161015611e4c57600384019350611e81565b60f88160ff161015611e6357600484019350611e81565b60fc8160ff161015611e7a57600584019350611e81565b6006840193505b5b5b5b5b5b600190910190611dfc565b8194505b50505050919050565b600081831115611eaf5750816116b4565b50806116b4565b5b92915050565b600081831015611eaf5750816116b4565b50806116b4565b5b92915050565b60008054600154604080516020908101859052815160e060020a6302571be302815260048101939093529051600160a060020a03308116959416936302571be3936024808201949392918390030190829087803b1515611f3857fe5b60325a03f11515611f4557fe5b50505060405180519050600160a060020a03161415611a1257600080546001546040805160e060020a6306ab5923028152600481019290925260248201869052600160a060020a03858116604484015290519216926306ab59239260648084019382900301818387803b1515611dd557fe5b60325a03f11515610a6257fe5b5050505b5b5050565b6000548251600160a060020a03909116906306ab5923908390859087908110611ff257fe5b602090810290910101516040805160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a033016604483015251606480830192600092919082900301818387803b151561204b57fe5b60325a03f1151561205857fe5b50505080828481518110151561206a57fe5b60209081029091018101516040805193845291830152805191829003019020905060008311156120a2576120a2600184038383611fcd565b5b600080546040805160e160020a630c4b7b8502815260048101859052602481018490529051600160a060020a0390921692631896f70a9260448084019382900301818387803b15156120f157fe5b60325a03f115156120fe57fe5b5050600080546040805160e060020a635b0fc9c302815260048101869052602481018490529051600160a060020a039092169350635b0fc9c392604480830193919282900301818387803b151561215157fe5b60325a03f1151561215e57fe5b5050505b505050565b60405161051680612178833901905600606060405260405160208061051683398101604052515b60028054600160a060020a03808416600160a060020a0319928316179092556000805433909316929091169190911790554260019081556005805460ff19169091179055346004555b505b6104a6806100706000396000f300606060405236156100885763ffffffff60e060020a60003504166305b34410811461008a5780630b5ab3d5146100ac57806313af4035146100be5780632b20e397146100dc5780633fa4f24514610108578063674f220f1461012a5780638da5cb5b14610156578063b0c8097214610182578063bbe427711461019c578063faab9d39146101b1575bfe5b341561009257fe5b61009a6101cf565b60408051918252519081900360200190f35b34156100b457fe5b6100bc6101d5565b005b34156100c657fe5b6100bc600160a060020a036004351661021d565b005b34156100e457fe5b6100ec6102c3565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b61009a6102d2565b60408051918252519081900360200190f35b341561013257fe5b6100ec6102d8565b60408051600160a060020a039092168252519081900360200190f35b341561015e57fe5b6100ec6102e7565b60408051600160a060020a039092168252519081900360200190f35b341561018a57fe5b6100bc60043560243515156102f6565b005b34156101a457fe5b6100bc600435610382565b005b34156101b957fe5b6100bc600160a060020a0360043516610431565b005b60015481565b60055460ff16156101e65760006000fd5b600254604051600160a060020a039182169130163180156108fc02916000818181858888f193505050501561021a5761deadff5b5b565b60005433600160a060020a039081169116146102395760006000fd5b600160a060020a038116151561024f5760006000fd5b600280546003805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03808516919091179092559084169116811790915560408051918252517fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369181900360200190a15b5b50565b600054600160a060020a031681565b60045481565b600354600160a060020a031681565b600254600160a060020a031681565b60005433600160a060020a039081169116146103125760006000fd5b60055460ff1615156103245760006000fd5b8160045410156103345760006000fd5b6004829055600254604051600160a060020a039182169130163184900380156108fc02916000818181858888f193505050501580156103705750805b1561037b5760006000fd5b5b5b5b5050565b60005433600160a060020a0390811691161461039e5760006000fd5b60055460ff1615156103b05760006000fd5b6005805460ff1916905561dead6108fc6103e883810330600160a060020a031631025b604051919004801590920291906000818181858888f1935050505015156103fa5760006000fd5b6040517fbb2ce2f51803bba16bc85282b47deeea9a5c6223eabea1077be696b3f265cf1390600090a16102bf6101d5565b5b5b5b50565b60005433600160a060020a0390811691161461044d5760006000fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a7230582001ac4feb3978044bcf02c01e8394b5c50f1ac7416edd3849059df00f41428e0a00297b6c4b278d165a6b33958f8ea5dfb00c8c9d4d0acf1985bef5d10786898bc3e7a165627a7a72305820fb9bfc915ed1cdd90dcfe3500992717cec3a1e88f63f1907125bb0d8c8e3c7f40029000000000000000000000000112234455c3a32fd11230c42e7bccd4a84e0201093cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae0000000000000000000000000000000000000000000000000000000000000000

    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000112234455c3a32fd11230c42e7bccd4a84e0201093cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae0000000000000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000112234455c3a32fd11230c42e7bccd4a84e02010
Arg [1] : 93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000


   Swarm Source:
bzzr://fb9bfc915ed1cdd90dcfe3500992717cec3a1e88f63f1907125bb0d8c8e3c7f4

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward