.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
.omni
names 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
.omni
domain is anchored to a user’sOmniWallet
via a verified mapping stored on-chain and in the subgraph.Subdomains are added using a UI flow or smart contract call to the
DomainRegistry
contract.
🔄 Example Resolution Flow
When a user enters kali.omni
:
Frontend calls the subgraph to fetch:
walletAddress
personaId
currentMetadata
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.omni
posts as herself.mod.jessica.omni
moderates DAO forums anonymously.ethdev.jessica.omni
publishes smart contract packages under a different profile.
Last updated
Was this helpful?