This repository contains smart contracts designed for listing and minting subnames on both Layer 1 (L1) and Layer 2 (L2) Ethereum chains. Built using Hardhat and Solidity.
Namespace allows ENS name owners to "list" a name and allow others to mint subnames under a listed name.
We have lots of different configurations for listed name such as:
- Setting custom prices per label length
- Setting custom prices per label type ( numbers only, emoji only )
- Subname reservations. Lister can disallow registration of a certail label or it can set a special price for it.
- Whitelisting.
- Token gated access ( ERC721/ERC1155/ERC20 )
- And many more to come
Because of that, listing/minting logic is offloaded to an offchain server
A registry controller contract responsible for minting subnames, deploying registrie and extending the expiry of existing registries. It verifies off-chain signatures before performing these actions using an EIP712
Public resolver is a replica of ENS Public Resolver contract and is used to store records for all the subnames on an L2 chain
Resolver contract used to map subnames to their registry address
Every listed name is deployed as an ERC721 contract.
Contracts used by an EnsRegistries to emit common events, such as Mints, Transfers, Burns, Expiries
Smart contract responsible for minting subnames by calling the ENS NameWrapper contract.
Uses EIP712 for signature verification
Responsible for storing the information about the listed names.