Skip to content

Commit b03ca8c

Browse files
committed
add IERC7996 support w/o features
1 parent 6d87752 commit b03ca8c

File tree

4 files changed

+21
-6
lines changed

4 files changed

+21
-6
lines changed

contracts/reverseResolver/AbstractReverseResolver.sol

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.17;
33

4-
import {ERC165} from "@openzeppelin/contracts-v5/utils/introspection/ERC165.sol";
4+
import {
5+
ERC165
6+
} from "@openzeppelin/contracts-v5/utils/introspection/ERC165.sol";
57
import {IExtendedResolver} from "../resolvers/profiles/IExtendedResolver.sol";
68
import {IAddressResolver} from "../resolvers/profiles/IAddressResolver.sol";
79
import {IAddrResolver} from "../resolvers/profiles/IAddrResolver.sol";
810
import {INameResolver} from "../resolvers/profiles/INameResolver.sol";
911
import {INameReverser} from "./INameReverser.sol";
12+
import {IERC7996} from "../utils/IERC7996.sol";
1013
import {ENSIP19, COIN_TYPE_DEFAULT, COIN_TYPE_ETH} from "../utils/ENSIP19.sol";
1114

1215
abstract contract AbstractReverseResolver is
1316
IExtendedResolver,
1417
INameReverser,
18+
IERC7996,
1519
ERC165
1620
{
1721
/// @inheritdoc INameReverser
1822
uint256 public immutable coinType;
1923

20-
/// @inheritdoc INameReverser
24+
/// @inheritdoc INameReverser
2125
address public immutable chainRegistrar;
2226

2327
/// @notice `resolve()` was called with a profile other than `name()` or `addr(*)`.
@@ -40,9 +44,15 @@ abstract contract AbstractReverseResolver is
4044
return
4145
interfaceId == type(IExtendedResolver).interfaceId ||
4246
interfaceId == type(INameReverser).interfaceId ||
47+
interfaceId == type(IERC7996).interfaceId ||
4348
super.supportsInterface(interfaceId);
4449
}
4550

51+
/// @inheritdoc IERC7996
52+
function supportsFeature(bytes4) external pure returns (bool) {
53+
return false;
54+
}
55+
4656
/// @inheritdoc INameReverser
4757
function chainId() external view returns (uint32) {
4858
return ENSIP19.chainFromCoinType(coinType);
@@ -86,14 +96,18 @@ abstract contract AbstractReverseResolver is
8696
(bool valid, ) = ENSIP19.parseNamespace(name, 0);
8797
if (!valid) revert UnreachableName(name);
8898
return
89-
abi.encode(coinType == COIN_TYPE_ETH ? chainRegistrar : address(0));
99+
abi.encode(
100+
coinType == COIN_TYPE_ETH ? chainRegistrar : address(0)
101+
);
90102
} else if (selector == IAddressResolver.addr.selector) {
91103
(bool valid, ) = ENSIP19.parseNamespace(name, 0);
92104
if (!valid) revert UnreachableName(name);
93105
(, uint256 ct) = abi.decode(data[4:], (bytes32, uint256));
94106
return
95107
abi.encode(
96-
coinType == ct ? abi.encodePacked(chainRegistrar) : new bytes(0)
108+
coinType == ct
109+
? abi.encodePacked(chainRegistrar)
110+
: new bytes(0)
97111
);
98112
} else {
99113
revert UnsupportedResolverProfile(selector);

test/reverseResolver/TestChainReverseResolver.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ describe('ChainReverseResolver', () => {
8686
'IERC165',
8787
'IExtendedResolver',
8888
'INameReverser',
89+
'IERC7996',
8990
'IVerifiableResolver',
9091
],
9192
})

test/reverseResolver/TestDefaultReverseResolver.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ async function fixture() {
2727
describe('DefaultReverseResolver', () => {
2828
shouldSupportInterfaces({
2929
contract: () => loadFixture().then((F) => F.defaultReverseResolver),
30-
interfaces: ['IERC165', 'IExtendedResolver', 'INameReverser'],
30+
interfaces: ['IERC165', 'IExtendedResolver', 'INameReverser', 'IERC7996'],
3131
})
3232

3333
it('coinType()', async () => {

test/reverseResolver/TestETHReverseResolver.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ Object.entries(sources).forEach(([source, setters], i) => {
147147
describe('ETHReverseResolver', () => {
148148
shouldSupportInterfaces({
149149
contract: () => loadFixture().then((F) => F.reverseResolver),
150-
interfaces: ['IERC165', 'IExtendedResolver', 'INameReverser'],
150+
interfaces: ['IERC165', 'IExtendedResolver', 'INameReverser', 'IERC7996'],
151151
})
152152

153153
it('coinType()', async () => {

0 commit comments

Comments
 (0)