github.com/intfoundation/intchain@v0.0.0-20220727031208-4316ad31ca73/contracts/ens/contract/FIFSRegistrar.sol (about) 1 pragma solidity ^0.4.0; 2 3 import './AbstractENS.sol'; 4 5 /** 6 * A registrar that allocates subdomains to the first person to claim them. 7 */ 8 contract FIFSRegistrar { 9 AbstractENS ens; 10 bytes32 rootNode; 11 12 modifier only_owner(bytes32 subnode) { 13 var node = sha3(rootNode, subnode); 14 var currentOwner = ens.owner(node); 15 16 if (currentOwner != 0 && currentOwner != msg.sender) throw; 17 18 _; 19 } 20 21 /** 22 * Constructor. 23 * @param ensAddr The address of the ENS registry. 24 * @param node The node that this registrar administers. 25 */ 26 function FIFSRegistrar(AbstractENS ensAddr, bytes32 node) { 27 ens = ensAddr; 28 rootNode = node; 29 } 30 31 /** 32 * Register a name, or change the owner of an existing registration. 33 * @param subnode The hash of the label to register. 34 * @param owner The address of the new owner. 35 */ 36 function register(bytes32 subnode, address owner) only_owner(subnode) { 37 ens.setSubnodeOwner(rootNode, subnode, owner); 38 } 39 }