Quick Start
This guide will help you start using ENS Contracts in your JavaScript/TypeScript or Solidity project.
JavaScript/TypeScript Usage
Import the contracts
Import the compiled contract JSON files in your JavaScript or TypeScript code:import {
BaseRegistrarImplementation,
BulkRenewal,
ENS,
ENSRegistry,
ENSRegistryWithFallback,
ETHRegistrarController,
FIFSRegistrar,
LinearPremiumPriceOracle,
PublicResolver,
Resolver,
ReverseRegistrar,
StablePriceOracle,
TestRegistrar,
} from '@ensdomains/ens-contracts'
Each import provides the compiled contract JSON including ABI, bytecode, and metadata.
Use with your Web3 library
Use the imported contracts with your preferred Web3 library:import { ethers } from 'ethers'
import { ENSRegistry } from '@ensdomains/ens-contracts'
const provider = new ethers.JsonRpcProvider('https://...')
const ensRegistry = new ethers.Contract(
'0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e', // ENS Registry address
ENSRegistry.abi,
provider
)
// Query the owner of a domain
const owner = await ensRegistry.owner(namehash('alice.eth'))
Access additional contracts
Import other ENS contracts as needed:// DNS-related contracts
import {
DNSRegistrar,
DNSSEC,
PublicSuffixList,
SimplePublicSuffixList,
TLDPublicSuffixList
} from '@ensdomains/ens-contracts'
// DNSSEC algorithm contracts
import {
RSASHA256Algorithm,
RSASHA1Algorithm,
SHA256Digest,
SHA1Digest
} from '@ensdomains/ens-contracts'
// Root contract
import { Root } from '@ensdomains/ens-contracts'
Solidity Usage
Import contracts in Solidity
Import ENS contracts directly into your Solidity smart contracts:// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import '@ensdomains/ens-contracts/contracts/registry/ENS.sol';
import '@ensdomains/ens-contracts/contracts/registry/ENSRegistry.sol';
import '@ensdomains/ens-contracts/contracts/registry/ENSRegistryWithFallback.sol';
import '@ensdomains/ens-contracts/contracts/registry/ReverseRegistrar.sol';
import '@ensdomains/ens-contracts/contracts/registry/TestRegistrar.sol';
Use in your contract
Interact with ENS contracts in your Solidity code:// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import '@ensdomains/ens-contracts/contracts/registry/ENS.sol';
contract MyENSIntegration {
ENS public ens;
constructor(address _ensAddress) {
ens = ENS(_ensAddress);
}
function getDomainOwner(bytes32 node) public view returns (address) {
return ens.owner(node);
}
function getDomainResolver(bytes32 node) public view returns (address) {
return ens.resolver(node);
}
}
CommonJS Usage
If you’re using CommonJS (require syntax):
const {
BaseRegistrarImplementation,
ENSRegistry,
PublicResolver
} = require('@ensdomains/ens-contracts')
Available Contracts
Here’s a comprehensive list of all available contract imports:
Registry: ENS, ENSRegistry, ENSRegistryWithFallback, FIFSRegistrar, ReverseRegistrar, TestRegistrarEthRegistrar: BaseRegistrarImplementation, BulkRenewal, ETHRegistrarController, LinearPremiumPriceOracle, StablePriceOracle, ExponentialPremiumPriceOracleResolvers: PublicResolver, ResolverDNS: DNSRegistrar, DNSSEC, PublicSuffixList, SimplePublicSuffixList, TLDPublicSuffixListDNSSEC Algorithms: RSASHA256Algorithm, RSASHA1Algorithm, SHA256Digest, SHA1DigestOther: Root, IBaseRegistrar, IPriceOracle
Next Steps
Now that you know how to import ENS contracts, explore the following resources:
ENS Documentation
Complete ENS system documentation
GitHub Repository
View source code and contribute
Audit Report
ConsenSys Diligence security audit
Build Status
CI/CD build status