ENSIP-22: Contract Features
Authors: raffy.eth
Created: July 29, 2025
Status: draft
Abstract
This ENSIP standardizes ERC-7996 contract features relevant to ENS, enabling new optimizations while preserving compatibility with existing deployments.
Motivation
ENS has maintained backwards compatibility with contracts created in 2016 through extensive use of ERC-165. Unfortunately, not all contract capabilities can be expressed through an unique interface.
Features allow expression of contract capabilities that preserve existing interfaces. This proposal standardizes features related to the ENS protocol.
Specification
Contract features are defined in EIP-7996.
Resolver with Features
Any resolver that supports features must adhere to the following criteria:
- If the resolver utilizes EIP-3668 (CCIP-Read), it must support recursive calls and its gateway must support CORS.
- The resolver must be compiled with EIP-140 support.
Therefore, when resolution calldata is not a multicall
, the resolver may be invoked directly without batch gateway infrastructure.
eth.ens.resolver.extended.multicall — 0x96b62db8
If a resolver is an IExtendedResolver
and supports this feature, resolve(name, data)
must handle multicall(bytes[])
as expected.
For resolvers that utilize CCIP-Read, this feature permits a single OffchainLookup
request to fetch multiple records, which greatly reduces latency and network traffic.
A resolver with this feature may always be invoked directly without batch gateway infrastructure.
Backwards Compatibility
Callers unaware of features or any specific feature experience no change in behavior.
Security Considerations
As stated in ERC-7996, declaring support for a feature does not guarantee that the contract implements it.
Copyright
Copyright and related rights waived via CC0.