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
.eth
top 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..eth
TLD..eth
to the Initial Registrar. The ENS's root node should be controlled by multiple parties using a multisig contract.abcdefg.eth
, one should submit sha3('abcdefg')
, not 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.
0x00
would become available immediately, 0xFF
would 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.setSubnodeOwner
function, recording the winning bidder's address as the owner of the hash of the name.Deed
contracts. 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.eth
node..eth
node 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)
not-yet-available
state.function isAllowed(bytes32 _hash, uint _timestamp) constant returns (bool allowed)
not-yet-available
state.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)
startAuctions
followed by newBid
in 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.eth
on a registrar that owns .eth
, pass an array containing [sha3('foo'), sha3('bar')]
.function transferRegistrars(bytes32 _hash) onlyOwner(_hash);
.eth
.onion
domain.