pragma solidity >=0.8.4;
import "../registry/RNS.sol";
import "./IReverseRegistrar.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "../root/Controllable.sol";
abstract contract NameResolver {
function setName(bytes32 node, string memory name) public virtual;
}
bytes32 constant lookup = 0x3031323334353637383961626364656600000000000000000000000000000000;
bytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;
contract ReverseRegistrar is Ownable, Controllable, IReverseRegistrar {
RNS public immutable ens;
NameResolver public defaultResolver;
event ReverseClaimed(address indexed addr, bytes32 indexed node);
event DefaultResolverChanged(NameResolver indexed resolver);
* Constructor
* ensAddr The address of the RNS registry.
constructor(RNS ensAddr) {
ens = ensAddr;
ReverseRegistrar oldRegistrar = ReverseRegistrar(