pragma solidity ^0.4.18; import './ENS.sol'; /** * A registrar that allocates subdomains to the first person to claim them. */ contract FIFSRegistrar { ENS ens; bytes32 rootNode; modifier only_owner(bytes32 subnode) { address currentOwner = ens.owner(keccak256(rootNode, subnode)); require(currentOwner == 0 || currentOwner == msg.sender); _; } /** * Constructor. * @param ensAddr The address of the ENS registry. * @param node The node that this registrar administers. */ function FIFSRegistrar(ENS ensAddr, bytes32 node) public { ens = ensAddr; rootNode = node; } /** * Register a name, or change the owner of an existing registration. * @param subnode The hash of the label to register. * @param owner The address of the new owner. */ function register(bytes32 subnode, address owner) public only_owner(subnode) { ens.setSubnodeOwner(rootNode, subnode, owner); } }