diff --git a/contracts/ethregistrar/ETHRegistrarController.sol b/contracts/ethregistrar/ETHRegistrarController.sol index b60713ae..fd240b5a 100644 --- a/contracts/ethregistrar/ETHRegistrarController.sol +++ b/contracts/ethregistrar/ETHRegistrarController.sol @@ -20,6 +20,7 @@ error CommitmentTooOld(bytes32 commitment); error NameNotAvailable(string name); error DurationTooShort(uint256 duration); error ResolverRequiredWhenDataSupplied(); +error ResolverRequiredWhenReverseRecord(); error UnexpiredCommitmentExists(bytes32 commitment); error InsufficientValue(); error Unauthorised(bytes32 node); @@ -120,6 +121,9 @@ contract ETHRegistrarController is uint16 ownerControlledFuses ) public pure override returns (bytes32) { bytes32 label = keccak256(bytes(name)); + if (resolver == address(0) && reverseRecord == true) { + revert ResolverRequiredWhenReverseRecord(); + } if (data.length > 0 && resolver == address(0)) { revert ResolverRequiredWhenDataSupplied(); } diff --git a/contracts/ethregistrar/IETHRegistrarController.sol b/contracts/ethregistrar/IETHRegistrarController.sol index 540c1a9a..d0340b3f 100644 --- a/contracts/ethregistrar/IETHRegistrarController.sol +++ b/contracts/ethregistrar/IETHRegistrarController.sol @@ -24,6 +24,8 @@ interface IETHRegistrarController { function commit(bytes32) external; + function commitments(bytes32) external view returns (uint256); + function register( string calldata, address,