Skip to content

Commit

Permalink
fix: outdated name and address in Public Resolver (#5)
Browse files Browse the repository at this point in the history
fix: outdated name and address in Public Resolver
  • Loading branch information
ducthotran2010 authored Oct 4, 2023
1 parent 522498e commit 4862664
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 3 deletions.
7 changes: 6 additions & 1 deletion src/RNSUnified.sol
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ contract RNSUnified is Initializable, RNSToken {
_mint(admin, 0x00);
}

/// @inheritdoc INSUnified
function namehash(string memory) external pure returns (uint256) {
revert("TODO");
}

/// @inheritdoc INSUnified
function available(uint256 id) public view returns (bool) {
return block.timestamp > LibSafeRange.add(_expiry(id), _gracePeriod);
Expand Down Expand Up @@ -182,7 +187,7 @@ contract RNSUnified is Initializable, RNSToken {

/// @dev Override {ERC721-ownerOf}.
function ownerOf(uint256 tokenId) public view override(ERC721, IERC721) returns (address) {
if (_isExpired(tokenId)) revert Expired();
if (_isExpired(tokenId)) return address(0);
return super.ownerOf(tokenId);
}

Expand Down
5 changes: 5 additions & 0 deletions src/interfaces/INSUnified.sol
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@ interface INSUnified is IERC721Metadata {
*/
function RESERVATION_ROLE() external pure returns (bytes32);

/**
* @dev Returns the name hash output of a domain.
*/
function namehash(string memory domain) external view returns (uint256 id);

/**
* @dev Returns true if the specified name is available for registration.
* Note: Only available after passing the grace period.
Expand Down
2 changes: 1 addition & 1 deletion src/resolvers/NameResolvable.sol
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ abstract contract NameResolvable is INameResolver, BaseVersion {
/**
* @inheritdoc INameResolver
*/
function name(bytes32 node) external view virtual override returns (string memory) {
function name(bytes32 node) public view virtual override returns (string memory) {
return _versionName[_recordVersion[node]][node];
}

Expand Down
11 changes: 10 additions & 1 deletion src/resolvers/PublicResolver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ contract PublicResolver is

/// @inheritdoc IAddressResolver
function setAddr(bytes32 node, address addr_) external onlyAuthorized(node) {
revert("PublicResolver: Cannot set address");
_setAddr(node, addr_);
}

Expand Down Expand Up @@ -169,7 +170,15 @@ contract PublicResolver is
override(AddressResolvable, IAddressResolver, InterfaceResolvable)
returns (address payable)
{
return super.addr(node);
return payable(_rnsUnified.ownerOf(uint256(node)));
}

/// @dev Override {INameResolver-name}.
function name(bytes32 node) public view virtual override(INameResolver, NameResolvable) returns (string memory) {
address reversedAddress = _reverseRegistrar.getAddress(node);
string memory domainName = super.name(node);
uint256 tokenId = _rnsUnified.namehash(domainName);
return _rnsUnified.ownerOf(tokenId) == reversedAddress ? domainName : "";
}

/**
Expand Down

0 comments on commit 4862664

Please sign in to comment.