.omni Domains
The .omni domain system provides human-readable, wallet-linked identities on OmniSocial, similar to ENS or Lens handles.
It enhances discoverability, trust, and user experience by replacing unreadable addresses with personalized names like alex.omni.
🧩 Key Concepts
Primary Domain: Assigned once at sign-up, tied to your first PersonaNFT’s handle (e.g.,
alex.omni).Subdomains: Users can create unlimited subdomains under their
.omni(e.g.,dao.alex.omni,mod.alex.omni) for organizing roles, bots, or alt-personas.Uniqueness: All
.omninames are globally unique at the root level.Gasless: Registration and resolution are gasless thanks to off-chain indexing + zkLinking for on-chain anchoring.
🪄 How It Works
Domains are registered automatically during Persona creation via
createPersona(handle, ...), minting both the PersonaNFT and reservinghandle.omni.Each
.omnidomain is anchored to a user’sOmniWalletvia a verified mapping stored on-chain and in the subgraph.Subdomains are added using a UI flow or smart contract call to the
DomainRegistrycontract.
🔄 Example Resolution Flow
When a user enters kali.omni:
Frontend calls the subgraph to fetch:
walletAddresspersonaIdcurrentMetadata
If desired, a call can also verify the DID and zkProofs linked to that domain.
UI updates to show profile, rep, avatar, and connected content.
🧪 GraphQL Query Example (Subgraph)
To resolve kali.omni to address and persona:
query ResolveOmniDomain {
omniDomain(id: "kali.omni") {
name
owner
persona {
id
handle
metadataURI
}
}
}Expected result:
{
"data": {
"omniDomain": {
"name": "kali.omni",
"owner": "0xAbC123...",
"persona": {
"id": "42",
"handle": "kali",
"metadataURI": "ipfs://..."
}
}
}
}🛠 Smart Contract Integration
.omni domains are managed by the OmniDomainRegistry smart contract. Core functions:
registerPrimary(handle)– Called once per accountcreateSubdomain(parent, subhandle)– E.g.,createSubdomain("alex", "dao")resolve(handle)– Returns the linked wallet + persona info
🔒 Domain Verification
Every domain is linked to a DID (Decentralized Identifier).
Optional zkProofs allow users to verify:
They control a GitHub/X account
They're human (PoH, zkKYC)
They meet community-specified identity criteria
🧑💼 Example Use Cases
jessica.omniposts as herself.mod.jessica.omnimoderates DAO forums anonymously.ethdev.jessica.omnipublishes smart contract packages under a different profile.
Last updated
Was this helpful?
