36 lines
919 B
Solidity
36 lines
919 B
Solidity
|
// SPDX-License-Identifier: MIT
|
||
|
|
||
|
pragma solidity ^0.6.0;
|
||
|
|
||
|
interface ENS {
|
||
|
function resolver(bytes32 node) external view returns (Resolver);
|
||
|
}
|
||
|
|
||
|
interface Resolver {
|
||
|
function addr(bytes32 node) external view returns (address);
|
||
|
}
|
||
|
|
||
|
contract EnsResolve {
|
||
|
function resolve(bytes32 node) public view virtual returns (address) {
|
||
|
ENS Registry = ENS(
|
||
|
getChainId() == 1 ? 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e : 0x8595bFb0D940DfEDC98943FA8a907091203f25EE
|
||
|
);
|
||
|
return Registry.resolver(node).addr(node);
|
||
|
}
|
||
|
|
||
|
function bulkResolve(bytes32[] memory domains) public view returns (address[] memory result) {
|
||
|
result = new address[](domains.length);
|
||
|
for (uint256 i = 0; i < domains.length; i++) {
|
||
|
result[i] = resolve(domains[i]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function getChainId() internal pure returns (uint256) {
|
||
|
uint256 chainId;
|
||
|
assembly {
|
||
|
chainId := chainid()
|
||
|
}
|
||
|
return chainId;
|
||
|
}
|
||
|
}
|