Registrars are responsible for allocating domain names to users of the system, and are the only entities capable of updating the ENS; the owner of a node in the ENS registry is its registrar. Registrars may be contracts or externally owned accounts, though it is expected that the root and top-level registrars, at a minimum, will be implemented as contracts.- ENSIP-1
.ethtop level domain, and subdomain shorter than 7 characters in length disallowed. This specification largely describes @alexvandesande and @arachnid's hash registrar implementation in order to facilitate discussion.
.ethto the Initial Registrar. The ENS's root node should be controlled by multiple parties using a multisig contract.
abcdefg.eth, one should submit
sha3(sha3(0, 'eth'), 'abcdefg').
A Vickrey auction is a type of sealed-bid auction. Bidders submit written bids without knowing the bid of the other people in the auction. The highest bidder wins but the price paid is the second-highest bid. This type of auction... gives bidders an incentive to bid their true value.
0x00would become available immediately,
0xFFwould become available after 8 weeks, and the availability of other names is distributed accordingly. Once a name is available, it is possible to start an auction on it.
sha3(bytes32 hash, address owner, uint value, bytes32 salt). The bidder may obfuscate the true bid value by sending a greater amount of ether.
setSubnodeOwnerfunction, recording the winning bidder's address as the owner of the hash of the name.
Deedcontracts. A deed contract is first created and funded when a sealed bid is submitted. After an auction is completed and a hash is registered, the deed for the winning bid is held in exchange for ownership of the hash. Non-winning bids are refunded.
.ethnode to the Permanent Registrar.
function state(bytes32 _hash) constant returns (Mode)
function entries(bytes32 _hash) constant returns (Mode, address, uint, uint, uint)
function getAllowedTime(bytes32 _hash) constant returns (uint timestamp)
function isAllowed(bytes32 _hash, uint _timestamp) constant returns (bool allowed)
function startAuction(bytes32 _hash);
function startAuctions(bytes32 _hashes);
function shaBid(bytes32 hash, address owner, uint value, bytes32 salt) constant returns (bytes32 sealedBid);
function newBid(bytes32 sealedBid);
function startAuctionsAndBid(bytes32 hashes, bytes32 sealedBid)
newBidin a single transaction.
function unsealBid(bytes32 _hash, address _owner, uint _value, bytes32 _salt);
shaBid()function above to verify that they match a pre-existing sealed bid. If the unsealedBid is the new best bid, the old best bid is returned to its bidder.
function cancelBid(bytes32 seal);
function finalizeAuction(bytes32 _hash);
setSubnodeOwner()updating the ENS record to set the winning bidder as owner of the node.
function transfer(bytes32 _hash, address newOwner);
function releaseDeed(bytes32 _hash);
function invalidateName(string unhashedName);
function eraseNode(bytes32 labels)
foo.bar.ethon a registrar that owns
.eth, pass an array containing
function transferRegistrars(bytes32 _hash) onlyOwner(_hash);