Summary
Nomen is a decentralized naming protocol by Ursus Camp. It tries to keep the minimum parts needed for DNS-like names:
- Global uniqueness — solved by publishing a name claim on Bitcoin. Bitcoin's block ordering answers "who claimed this name first?"
- Owner-authenticated updates — solved by Nostr events signed by the same key that owns the Bitcoin claim.
- Resolution infrastructure — solved by indexers / name servers that read Bitcoin claims, follow Nostr relays, and answer DNS-like queries.
This makes Nomen a hybrid between Handshake and Nostr NIP-05. Like Handshake, it uses a blockchain to order scarce human-readable names. Like NIP-05, it uses Nostr events as a signed record transport. Unlike ENS, there is no smart contract registry; unlike PKARR, the human-readable namespace is scarce and globally ordered.
Nomen is experimental and appears lightly maintained: the ursuscamp/nomen repository had 17 GitHub stars, 4 forks, 5 releases, and its most recent push was 2023-11-26 when checked on 2026-05-04. The specifications repository ursuscamp/noms is even smaller. That does not invalidate the design, but it means Nomen should be treated as a research prototype rather than a dependable name layer.
Historical context
Decentralized naming repeatedly runs into Zooko's triangle: names that are human-meaningful, decentralized, and secure/global are difficult to combine. Earlier systems chose different points:
| Era | System | Choice |
|---|---|---|
| 2011 | Namecoin | Bitcoin-like chain for .bit names |
| 2017 | ENS | Ethereum smart contracts for .eth names |
| 2018 | Handshake | New PoW chain for root-zone replacement |
| 2020s | NIP-05 | Human aliases over DNS/HTTPS, mapped to Nostr pubkeys |
| 2023 | PKARR / Pubky | Public key as name; no human-readable global name |
| 2023 | Nomen | Bitcoin orders name claims; Nostr transports updates |
Nomen's key historical move is refusing to bootstrap another consensus layer. It asks: if Bitcoin already provides censorship-resistant ordering, and Nostr already provides a relay-based signed-event network, can names be built by composing them?
The answer is technically yes, but with adoption caveats. Every resolver must index Bitcoin transactions and monitor Nostr relays; no major browser, OS resolver, or wallet ships this out of the box.
Architecture
Name claim:
Bitcoin transaction commits to name + owner public key
└─ first valid claim in Bitcoin ordering wins
Record updates:
owner signs Nostr kind 38300 event
└─ event contains DNS-like records / name metadata
Resolution:
Nomen indexer scans Bitcoin for claims
Nomen indexer subscribes to Nostr relays for updates
indexer answers queries as a name server / explorer
The protocol separates ownership from records:
- Ownership is slow, final, and globally ordered through Bitcoin.
- Records are faster, mutable, and distributed through Nostr.
- Indexers assemble the view by applying protocol rules.
This is close to an event-sourced registry: Bitcoin establishes the root event, Nostr streams subsequent state transitions, and resolvers materialize the current state.
Protocol pieces
Bitcoin claim layer
Nomen claims are published to the Bitcoin blockchain. The repository describes the ownership rule as simple: the first valid claim to a name owns it. Bitcoin provides:
- A globally replicated append-only log.
- Work-backed ordering of conflicting claims.
- Censorship resistance proportional to Bitcoin transaction inclusion.
- No need for a bespoke token or chain.
Trade-off: claiming a name costs Bitcoin fees, is visible on-chain, and is subject to Bitcoin confirmation latency. There is also no smart-contract-enforced renewal or clawback logic unless specified in higher-level protocol rules.
Nostr record layer
After a name is claimed, the owner publishes signed Nostr events to update records. The NOM specifications define Nostr event kinds:
| Kind | Purpose | Source |
|---|---|---|
38300 |
Name records | NOM-02 |
38301 |
Relay-published index data | NOM-04 |
This makes updates cheap and widely relayable. Because Nostr events are signed, an indexer can verify that a record update came from the owner key anchored by the Bitcoin claim.
Trade-off: Nostr relays are not guaranteed to retain every event. Robust resolution needs multiple relays, replay protection, and indexer persistence.
Indexer / name server
The ursuscamp/nomen repository includes the Nomen Explorer, described as the first indexer or name server for the protocol. Indexers are not trusted to create ownership, but users do rely on them for availability and correct materialization unless they run their own.
The clean deployment model is:
- Run your own Nomen indexer.
- Configure clients to use it as a resolver.
- Cross-check results against Bitcoin and Nostr signatures when high assurance matters.
Evidence at a glance
| Claim | Evidence | Confidence |
|---|---|---|
| Nomen uses Bitcoin for name-claim ordering | ursuscamp/nomen README: claims are published to Bitcoin; first valid claim wins |
High |
| Nomen uses Nostr for record updates | ursuscamp/nomen README and ursuscamp/noms; event kind 38300 for name records |
High |
| The project is experimental / lightly maintained | GitHub API on 2026-05-04: 17 stars, 4 forks, last push 2023-11-26 | High |
| The specification is Nostr-native | ursuscamp/noms says NOMs are modeled after NIPs; event kinds 38300 and 38301 |
High |
| Production deployment is limited | No mainstream resolver/browser support; hosted explorer exists but should not be confused with broad adoption | Medium |
Maturity and active development
| Component | Repository | Maturity | Activity snapshot (2026-05-04) |
|---|---|---|---|
| Nomen implementation / explorer | ursuscamp/nomen | Prototype | 17 stars, 4 forks, 5 releases, Rust, MIT, last pushed 2023-11-26 |
| NOM specifications | ursuscamp/noms | Early spec | 1 star, 7 commits, last pushed 2023-11-22 |
| Hosted explorer | nomenexplorer.com |
Demo / service | Referenced by README; availability should be checked before relying on it |
Interpretation: Nomen is worth tracking as a design primitive, but not as a mature censorship-resistance substrate. It lacks the implementation depth of GNS, the economic/security weight of ENS, and the active tooling momentum of PKARR.
Use cases
1. Nostr-native human names
Nostr has public keys but still leans on DNS/HTTPS for human-readable aliases through NIP-05. Nomen gives a Nostr-native alternative:
alice.<nomen namespace>
Bitcoin claim -> Alice's public key
Nostr record -> relays, service endpoints, profile records
This removes dependence on a web domain for the alias, while preserving human readability.
2. Bitcoin-anchored service names
Services that already trust Bitcoin finality can use Nomen names for endpoints, donation addresses, mirrors, or metadata. A resolver could return:
- A records / AAAA records for IP endpoints.
- TXT records for contact metadata.
- Nostr relay hints.
- Content hashes for IPFS and Filecoin or Arweave mirrors.
3. Experiments in minimal dDNS composition
Nomen is useful for protocol designers because it demonstrates a modular pattern:
- Use a battle-tested global ordering layer for scarce names.
- Use a signed event network for mutable records.
- Let resolvers be independently operated.
This pattern may reappear in future Bitcoin, Nostr, or off-grid naming systems.
Trade-offs
Strengths
- No new blockchain. Bitcoin handles global ordering and anti-double-claim semantics.
- No new transport layer. Nostr handles signed event distribution.
- Simple ownership rule. First valid claim wins.
- Nostr-native. Fits the relay/event culture better than DNSSEC or EVM-only systems.
- Self-hostable indexer. Users can run their own name server rather than trusting a company.
Limitations
- Light adoption. Tiny GitHub footprint and no mainstream client support.
- On-chain privacy leak. Name claims are public Bitcoin transactions.
- Name squatting. First-claim-wins systems invite squatting unless there are auction, renewal, or social-layer mitigations.
- Relay availability. Nostr updates may disappear unless relays and indexers persist them.
- Indexer complexity. Resolvers must watch both Bitcoin and Nostr, then apply protocol rules correctly.
- No native lookup privacy. Queries to a Nomen resolver can reveal names being resolved unless combined with Overview - Mix Networks or private resolver operation.
Attack surface
| Attack | Applies to | Mitigation |
|---|---|---|
| Bitcoin transaction censorship | Name claims | Use fee bumping, multiple broadcast paths, Tor / I2P for broadcast privacy |
| Name squatting | Scarce human names | Auctions, social registries, namespaces, or acceptance that names are scarce property |
| Nostr event suppression | Record updates | Publish to many relays; run archival relays; indexer persistence |
| Indexer equivocation | Resolution | Run local indexer; verify against Bitcoin + Nostr signatures; compare multiple indexers |
| Key compromise | Name owner | Hardware signer, multisig/threshold signing, preplanned rotation if protocol supports it |
| Lookup surveillance | Users | Local resolver, Tor/VPN, mixnet transport, or private information retrieval layer |
Comparison
| System | Ownership substrate | Record update substrate | Human-readable | Maturity | Best fit |
|---|---|---|---|---|---|
| ENS | Ethereum contracts | Ethereum / CCIP-Read | Yes | High | Crypto-native identity and wallet names |
| Handshake | Handshake PoW chain | HNS DNS records | Yes | Niche | Permissionless TLD ownership |
| PKARR | Ed25519 key | Mainline DHT | No | Emerging | Self-authenticating service discovery |
| GNS | Zone keys + petnames | GNUnet DHT | Local petnames | Experimental (RFC 9498) | Privacy-preserving lookup |
| Nomen | Bitcoin transaction ordering | Nostr signed events | Yes | Experimental | Nostr/Bitcoin-native naming experiments |
Operational notes
If experimenting with Nomen:
- Treat it as a lab protocol, not critical production DNS.
- Run your own indexer if correctness matters.
- Archive relevant Nostr events; do not assume arbitrary relays preserve history.
- Publish record updates to several relays.
- Keep the Bitcoin claim key in cold storage or a hardware signer.
- Mirror important endpoints in PKARR,
.onion, or conventional DNS until client support matures.
Primary sources
-
Nomen implementation — github.com/ursuscamp/nomen.
- Nomen specifications — github.com/ursuscamp/noms.
- NOM-02 — protocol v1 and Nostr kind
38300name records. - NOM-04 — relay-published index data and Nostr kind
38301. - Nostr protocol specifications — github.com/nostr-protocol/nips.
- Bitcoin protocol reference — developer.bitcoin.org.
Page history
- Updated
- 2026-05-04
- Origin
- Compiled from the ungovernable.tech research notes.
- Improve this page
- Suggest an edit — issues and pull requests are welcome.