Skip to content

Commit 62dab74

Browse files
committed
feat: implement IERC165
1 parent e1d50be commit 62dab74

5 files changed

Lines changed: 29 additions & 1 deletion

File tree

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@
3737
"test/unit/**/*.tree": "yarn lint:bulloak",
3838
"package.json": "sort-package-json"
3939
},
40+
"dependencies": {
41+
"@openzeppelin/contracts": "5.4.0"
42+
},
4043
"devDependencies": {
4144
"@commitlint/cli": "19.3.0",
4245
"@commitlint/config-conventional": "19.2.2",

remappings.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
forge-std/=node_modules/forge-std/src
22
halmos-cheatcodes=node_modules/halmos-cheatcodes
3+
openzeppelin-contracts=node_modules/@openzeppelin/contracts
34

45
contracts/=src/contracts
56
interfaces/=src/interfaces

src/contracts/L2Resolver.sol

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity 0.8.30;
33

4+
import {IERC165} from 'openzeppelin-contracts/interfaces/IERC165.sol';
45
import {IENS} from 'src/interfaces/IENS.sol';
6+
import {IExtendedResolver} from 'src/interfaces/IExtendedResolver.sol';
57
import {IL2Resolver} from 'src/interfaces/IL2Resolver.sol';
68
import {INameWrapper} from 'src/interfaces/INameWrapper.sol';
79

@@ -12,7 +14,7 @@ import {INameWrapper} from 'src/interfaces/INameWrapper.sol';
1214
* formatted chain identifiers and allows reverse lookup by mapping them back to their primary ENS names.
1315
* EIP-7930 is an example of supported chain identifier.
1416
*/
15-
contract L2Resolver is IL2Resolver {
17+
contract L2Resolver is IL2Resolver, IERC165 {
1618
/// @inheritdoc IL2Resolver
1719
bytes32 public constant REVERSE_LOOKUP_NODE = bytes32(keccak256('reverse.chain.id.eip7930'));
1820

@@ -47,4 +49,9 @@ contract L2Resolver is IL2Resolver {
4749
REVERSE_ADMIN = _reverseAdmin;
4850
PARENT_NODE = _parentNode;
4951
}
52+
53+
/// @inheritdoc IERC165
54+
function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool _isSupported) {
55+
_isSupported = _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IExtendedResolver).interfaceId;
56+
}
5057
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity 0.8.30;
3+
4+
interface IExtendedResolver {
5+
/**
6+
* @notice Provides a mechanism to support wildcard resolution of ENS names
7+
* @param _name The name to resolve
8+
* @param _data The data to resolve
9+
* @return _result The result of the resolution
10+
*/
11+
function resolve(bytes memory _name, bytes memory _data) external view returns (bytes memory _result);
12+
}

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,11 @@
202202
"@nodelib/fs.scandir" "2.1.5"
203203
fastq "^1.6.0"
204204

205+
"@openzeppelin/contracts@5.4.0":
206+
version "5.4.0"
207+
resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-5.4.0.tgz#177594bdb2d86c71f5d1052fe40cb4edb95fb20f"
208+
integrity sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A==
209+
205210
"@solidity-parser/parser@^0.19.0":
206211
version "0.19.0"
207212
resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.19.0.tgz#37a8983b2725af9b14ff8c4a475fa0e98d773c3f"

0 commit comments

Comments
 (0)