We are pleased to provide you with an update on our recent progress and developments. This report encompasses completed milestones, newly formed partnerships, and numerous technological breakthroughs.
Milestones
As of now, we are delighted to inform you that we have achieved around fifty percent of our outlined milestones. Please see the attached image for a more detailed visualization of our milestone completion.
Partnership with Bored Town
In our pursuit of innovation and expansion, we are thrilled to announce our collaboration with Bored Town to establish the .town domain name. Bored Town, the largest Non-Fungible Token (NFT) community on Optimism, boasts high-quality artists globally. With more than 20,000 unique holders in its NFT ecosystem, we are optimistic about this alliance’s potential to drive significant advancements.
Bored Town has expressed several challenges in its current whitelisting system, including:
- Fake impersonated wallet addresses
- Duplicated entries
- Sybil attacks
- Often missing entries
- Uncertainty about address submission
- Lack of transparency
- Incompatibility with alternative wallets
- Inability to account for the amount of NFT holdings
Opti.domains aims to address these concerns effectively. We are planning to launch the .town domain before the .op domain name to ensure we garner enough adoption and traction.
Our testnet has been launched for weeks and is available at https://town-testnet.opti.domains/
Mainnet Launch
We are excited to announce the successful deployment of our smart contracts on the Optimism mainnet following the bedrock merge. Our smart contracts, composed mainly of Ethereum Name Service (ENS) and Diamond Resolver, are now live on both the Optimism Goerli testnet and Optimism Mainnet.
Our primary focus now shifts to the upcoming launch of the mainnet, planned for next week. We will start with the .town domain, collaborating with Bored Town to ensure user adoption. Following this, we will launch our flagship .op domains, introducing additional features subsequently.
Permissionless and Deterministic Deployment
In terms of technological development, we have introduced a novel deployment technique that enables permissionless deployment of the entire Opti.domains smart contracts across multiple chains, while retaining the same address.
Before that, we could only permissionless deploy a smart contract that is not ownable and has the same address across chains with the Seaport Deployment technique.
We have extended the Seaport Deployment technique to deploy entire ENS ecosystems, which involve ownable contracts. We will publish more detail about this once we get enough adoption.
This represents a significant step towards enabling the deployment of many protocols, fostering greater interoperability between OP stack chains.
Deployed Contract Addresses
Our contracts are deployed into same addresses for both Optimism Mainnet and Optimism Goerli Testnet (and OP Stack chains in the future)
Opti.domains contracts are branded with 0x888811… while .town related contracts are branded with 0xB02ED…
Core Contracts
Contract | Address |
---|---|
Root | 0x88881190D24e8ecA11F0262972cff8081b2AFc45 |
ENSRegistry | 0x888811b3DFC94566Fc8F6aC5e86069981a50B490 |
ReverseRegistrar | 0x888811225d6751A0cf8a9F7fa6a77f4F1EF69DC9 |
Universal Registry and Resolver
Contract | Address |
---|---|
UniversalENSRegistry | 0x8888110038E46D4c4ba75aFF88EaAC6f9aA537c1 |
UniversalResolverTemplate | 0x888811D93EE697768FB2Eb23B4225038Beeb7FDc |
Diamond Resolver
Contract | Address |
---|---|
NameWrapperRegistry | 0x888811E08f362edB8B1BF4A52c08fED2A58a427E |
OptiDomainsAttestation | 0x888811653D30Ed5bd74f5afd4B2bffe2dE3192B3 |
DiamondResolver | 0x888811Da0c852089cc8DFE6f3bAd190a46acaAE6 |
RegistryWhitelistAuthFacet | 0x888811761f31b8242fAe670C3f0a054e226D10e8 |
PublicResolverFacet | 0x888811B3c11F37a978eED349b174F7e9cCec14D7 |
.op Domains
Contract | Address |
---|---|
BaseRegistrarImplementation | 0x8888111BAd1a449a6a0618C0fE7DC1727e3aaf99 |
MetadataService | 0x88881191aba4DEFD926dE9708C457d092120beaa |
NameWrapper | 0x888811F1B21176E15FB60DF500eA85B490Dd2836 |
RegistrarController | 0x8888117A2d8cC4e02A9A9691Ba0e166b2842360D |
.town Domains
Contract | Address |
---|---|
BaseRegistrarImplementation | 0xB02ED512702C46dbDB260053C97f79c3F467E39E |
MetadataService | 0xB02EDED8502B029aA7f2CB02e1C2a0c452531279 |
NameWrapper | 0xB02ED980693e14E082F0A3A33060046Ae8495EB2 |
RegistrarController | 0xB02EDc247246ACD78294c62F403B3e64D5917031 |
Diamond Resolver
Our Diamond Resolver technology has been developed to address the issue of data loss when upgrading resolvers. By leveraging ERC-2535: Diamonds, Multi-Facet Proxy, we have ensured compatibility with PublicResolver, thus facilitating stable user data and enabling upgrades to introduce new features without needing user action.
Typically, upgrading the resolver in ENS (Ethereum Name Service) results in data loss, requiring significant gas fees to store the data again. However, the upgrade process is relatively painless because 99.99% of ENS users primarily store only their Ethereum wallet address in the resolver.
In collaboration with our partner, Bored Town, we have devised a user journey that involves users connecting and storing their wallet addresses, wallet connections, and social profiles in the resolver. Migrating all of this data can be both laborious and costly for users. So, we solve this problem with the development of Diamond Resolver.
Finally, we have improved the Diamond standard to enable Extendable Diamond. Users can build and add features to their resolver while upgrading from the main Diamond Resolver by cloning a new Diamond Resolver and performing facet cuts on the new cloned diamond.
EAS Integration
We are proud to announce that we are the first protocol to integrate with Ethereum Attestation Service (EAS), achieved through our Diamond Resolver system. This integration will result in a new attestation from our attestor smart contract every time there is a data change in the resolver.
This picture shows the domination of Opti.domains in utilizing EAS with a wide range of testers 14 days ago.
Social and Wallet Oracle
As part of our efforts to address Bored Town’s pain points, we have developed an oracle responsible for signing attestations to the EAS, verifying the validity of the association between social profiles, wallets, and domain names.
The oracle is responsible for signing an attestation to the EAS that the association between social profile, wallet, and domain name is valid. Thereafter, this attestation will be referenced from the user attestation.
Any external services can verify the validity of the connection by checking if the oracle is trusted and if there is a matching attestation between the user and the oracle.
This picture shows off-chain attestation generated by our social oracle to verify that Chomtana is the Twitter account for Chomtana.
This picture shows on-chain attestation generated by the diamond resolver contract to associate Twitter account with the domain chomtana.town
Universal Registry and Resolver
Universal Resolver is developed by ENS to generalize the resolver logic into a single smart contract. Added support to ENSIP-10: Wildcard Resolution standard.
However, the capability of name resolution is still limited to ENS on the mainnet only. With Universal ENS Registry deployed to the same address across chains, we can set a universal standard for ENS name resolution across all EVM chains, especially OP Stack.
ENS has set a standard called ENSIP-9: Multichain Address Resolution, which relies on SLIP-0044 standard. It doesn’t work for OP stack chains, as these chains usually have one of the following properties that don’t fit into SLIP-0044 standard:
- OP Stack chains tend to use ETH tokens, which share the same coin type, 60.
- OP Stack chains are often developed per use case, which may not be popular enough to have a dedicated coin type in SLIP-0444 standard.
- SLIP-0444 standard can’t separate records between the testnet and mainnet chain.
With Universal Registry, we can resolve ENS record on-chain in each OP stack chain directly without relying on registering a coin type in the SLIP-0444 standard, which is highly centralized.
Universal Registry is deployed at 0x8888110038E46D4c4ba75aFF88EaAC6f9aA537c1 and source code is available at optidomains-ens-contract/contracts/universal-registry/UniversalENSRegistry.sol at master · Opti-domains/optidomains-ens-contract · GitHub
Rainbowkit and Wagmi Integration
Lastly, we are glad to report that we have successfully integrated our Universal Registry and ENS’s Universal Resolver with Rainbowkit and Wagmi, making Opti.domains compatible with these platforms.
We have submitted a pull request to the Wagmi repository: Support custom UniversalResolver for ENS resolution by Chomtana · Pull Request #2559 · wagmi-dev/wagmi · GitHub
However, it's not officially supported yet. To facilitate integration between the Dapp on Optimism platform and Opti.domains, it is necessary to substitute rainbowkit, @wagmi/core, and wagmi with the respective @optidomains replacement. If your Dapp exclusively relies on rainbowkit, inclusion of @wagmi/core and wagmi from the @optidomains scope is also essential for proper functionality of rainbowkit.
List of packages to substitute:
-
@wagmi/core
: npm:@optidomains/wagmi-core@1.2.0 -
wagmi
: npm:@optidomains/wagmi@1.2.0 -
rainbowkit
: npm:@optidomains/rainbowkit@1.0.1-ure2