Skip to content

Commit 4f5d013

Browse files
committed
fix: namehash
1 parent a1ead3e commit 4f5d013

3 files changed

Lines changed: 23 additions & 17 deletions

File tree

src/contracts/L2Resolver.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ contract L2Resolver is IL2Resolver, IERC165 {
3333
address public immutable REVERSE_ADMIN;
3434

3535
/// @inheritdoc IL2Resolver
36-
bytes32 public constant PARENT_NODE = keccak256('l2.eth');
36+
bytes32 public constant PARENT_NODE_NAMEHASH = 0xe0266f32655869693dc63423876e5a7367f6e55552b718bdf9c96d0b31f8155d;
3737

3838
/// @inheritdoc IL2Resolver
3939
mapping(bytes32 _node => mapping(string _key => bytes _data)) public records;
@@ -67,7 +67,7 @@ contract L2Resolver is IL2Resolver, IERC165 {
6767
} else {
6868
// If the node is not owned by the ENSRegistry, then it could be a wildcard and caller must be an approved
6969
// operator or the owner of the parent node
70-
address _parentOwner = _getOwner(PARENT_NODE);
70+
address _parentOwner = _getOwner(PARENT_NODE_NAMEHASH);
7171
if (_parentOwner == address(0)) revert NotAuthorized();
7272
if (!_isApprovedOperatorOrOwner(msg.sender, _parentOwner)) revert NotAuthorized();
7373
}

src/interfaces/IL2Resolver.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ interface IL2Resolver {
120120
function REVERSE_ADMIN() external view returns (address _adminAddress);
121121

122122
/**
123-
* @notice The parent node namehash for wildcard resolution and authorization.
124-
* @return _parentNode The parent node namehash.
123+
* @notice The parent node (l2.eth) namehash for wildcard resolution and authorization.
124+
* @return _parentNodeNamehash The parent node namehash.
125125
*/
126-
function PARENT_NODE() external view returns (bytes32 _parentNode);
126+
function PARENT_NODE_NAMEHASH() external view returns (bytes32 _parentNodeNamehash);
127127
}

test/unit/L2Resolver.t.sol

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ contract UnitL2Resolver is Test {
1717
address internal _reverseAdmin = makeAddr('ReverseAdmin');
1818
bytes32 internal _reverseLookupNode;
1919
string internal _key;
20-
bytes32 internal _parentNode = keccak256('l2.eth');
20+
bytes32 internal _parentNodeNamehash = 0xe0266f32655869693dc63423876e5a7367f6e55552b718bdf9c96d0b31f8155d; // l2.eth
2121

2222
function setUp() external {
2323
_l2Resolver = new L2Resolver(_ensRegistry, _nameWrapper, _reverseAdmin);
@@ -222,10 +222,12 @@ contract UnitL2Resolver is Test {
222222
) external whenTheNodeHasNoENSRegistryOwner(_node) {
223223
vm.assume(_parentNodeOwner != address(0));
224224
vm.assume(_parentNodeOwner != _nameWrapper);
225-
vm.assume(_node != _parentNode);
225+
vm.assume(_node != _parentNodeNamehash);
226226

227227
_mockAndExpect(
228-
address(_ensRegistry), abi.encodeWithSelector(IENS.owner.selector, _parentNode), abi.encode(_parentNodeOwner)
228+
address(_ensRegistry),
229+
abi.encodeWithSelector(IENS.owner.selector, _parentNodeNamehash),
230+
abi.encode(_parentNodeOwner)
229231
);
230232

231233
// it emits the RecordSet event
@@ -247,10 +249,12 @@ contract UnitL2Resolver is Test {
247249
vm.assume(_parentNodeOwner != address(0));
248250
vm.assume(_parentNodeOwner != _nameWrapper);
249251
vm.assume(_caller != _parentNodeOwner);
250-
vm.assume(_node != _parentNode);
252+
vm.assume(_node != _parentNodeNamehash);
251253

252254
_mockAndExpect(
253-
address(_ensRegistry), abi.encodeWithSelector(IENS.owner.selector, _parentNode), abi.encode(_parentNodeOwner)
255+
address(_ensRegistry),
256+
abi.encodeWithSelector(IENS.owner.selector, _parentNodeNamehash),
257+
abi.encode(_parentNodeOwner)
254258
);
255259

256260
_mockAndExpect(
@@ -278,14 +282,14 @@ contract UnitL2Resolver is Test {
278282
vm.assume(_parentNodeOwner != address(0));
279283
vm.assume(_parentNodeOwner != _nameWrapper);
280284
vm.assume(_caller != _parentNodeOwner);
281-
vm.assume(_node != _parentNode);
285+
vm.assume(_node != _parentNodeNamehash);
282286

283287
_mockAndExpect(
284-
address(_ensRegistry), abi.encodeWithSelector(IENS.owner.selector, _parentNode), abi.encode(_nameWrapper)
288+
address(_ensRegistry), abi.encodeWithSelector(IENS.owner.selector, _parentNodeNamehash), abi.encode(_nameWrapper)
285289
);
286290
_mockAndExpect(
287291
address(_nameWrapper),
288-
abi.encodeWithSelector(INameWrapper.ownerOf.selector, _parentNode),
292+
abi.encodeWithSelector(INameWrapper.ownerOf.selector, _parentNodeNamehash),
289293
abi.encode(_parentNodeOwner)
290294
);
291295

@@ -320,10 +324,12 @@ contract UnitL2Resolver is Test {
320324
vm.assume(_parentNodeOwner != address(0));
321325
vm.assume(_parentNodeOwner != _nameWrapper);
322326
vm.assume(_caller != _parentNodeOwner);
323-
vm.assume(_node != _parentNode);
327+
vm.assume(_node != _parentNodeNamehash);
324328

325329
_mockAndExpect(
326-
address(_ensRegistry), abi.encodeWithSelector(IENS.owner.selector, _parentNode), abi.encode(_parentNodeOwner)
330+
address(_ensRegistry),
331+
abi.encodeWithSelector(IENS.owner.selector, _parentNodeNamehash),
332+
abi.encode(_parentNodeOwner)
327333
);
328334

329335
_mockAndExpect(
@@ -353,10 +359,10 @@ contract UnitL2Resolver is Test {
353359
vm.assume(_parentNodeOwner != address(0));
354360
vm.assume(_parentNodeOwner != _nameWrapper);
355361
vm.assume(_caller != _parentNodeOwner);
356-
vm.assume(_node != _parentNode);
362+
vm.assume(_node != _parentNodeNamehash);
357363

358364
_mockAndExpect(
359-
address(_ensRegistry), abi.encodeWithSelector(IENS.owner.selector, _parentNode), abi.encode(address(0))
365+
address(_ensRegistry), abi.encodeWithSelector(IENS.owner.selector, _parentNodeNamehash), abi.encode(address(0))
360366
);
361367

362368
// it reverts

0 commit comments

Comments
 (0)