go-ethereum/contracts/ens/contract/FIFSRegistrar.sol

36 lines
1007 B
Solidity
Raw Normal View History

2019-03-20 03:33:24 -05:00
pragma solidity ^0.5.0;
2019-03-20 03:33:24 -05:00
import "./ENS.sol";
/**
* A registrar that allocates subdomains to the first person to claim them.
*/
contract FIFSRegistrar {
2019-03-20 03:33:24 -05:00
ENS ens;
bytes32 rootNode;
2019-03-20 03:33:24 -05:00
modifier only_owner(bytes32 label) {
address currentOwner = ens.owner(keccak256(abi.encodePacked(rootNode, label)));
require(currentOwner == address(0x0) || currentOwner == msg.sender);
_;
}
/**
* Constructor.
* @param ensAddr The address of the ENS registry.
* @param node The node that this registrar administers.
*/
2019-03-20 03:33:24 -05:00
constructor(ENS ensAddr, bytes32 node) public {
ens = ensAddr;
rootNode = node;
}
/**
* Register a name, or change the owner of an existing registration.
2019-03-20 03:33:24 -05:00
* @param label The hash of the label to register.
* @param owner The address of the new owner.
*/
2019-03-20 03:33:24 -05:00
function register(bytes32 label, address owner) public only_owner(label) {
ens.setSubnodeOwner(rootNode, label, owner);
}
2019-03-20 03:33:24 -05:00
}