Back to Docs

NornRegistry

Contract

On-chain usernames for the Tempo blockchain. Human-readable addresses that last forever.

Overview

The NornRegistry is the foundation of the Norn identity system. It maps human-readable usernames to wallet addresses, enabling payments to @username instead of long hex addresses. Usernames are permanent and non-transferable.

Human-Readable

Share @yourname instead of a 42-character hex address.

On-Chain

Stored on the blockchain. Decentralized and verifiable.

Bidirectional

Resolve username to address, or address to username.

Use Cases

Payments
Send money to @username

Instead of asking for a wallet address, users can simply share their username. The registry resolves @alice to the correct wallet address automatically.

Identity
Build your on-chain reputation

Your username becomes your portable identity across the Norn ecosystem. Transaction history, subscriptions, and gated content all link to your username.

Integration
Build on top of Norn usernames

Any application can integrate with the registry to resolve usernames. Display @alice instead of 0x1234...abcd in your app's UI.

Core Functions

register(username)
Claim a username for your wallet

// Claim the username "alice"

register("alice")

  • username: 3-20 characters (letters, numbers, underscores)
  • Each wallet can only register one username
  • Usernames are permanent and cannot be transferred
resolve(username) → address
Get the wallet address for a username

// Get alice's wallet address

address wallet = resolve("alice")

// Returns 0x1234...abcd

Returns the zero address (0x0000...0000) if the username is not registered.

reverseResolve(address) → username
Get the username for a wallet address

// Get the username for a wallet

string memory name = reverseResolve(0x1234...)

// Returns "alice"

Returns an empty string if the wallet has not registered a username.

View Functions

isAvailable(username)
Check if a username can be claimed
getOwner(username)
Get the wallet that owns a username
hasUsername(address)
Check if a wallet has registered a username

Events

  • UsernameRegistered(address indexed owner, string username)

Integration

The registry contract is deployed on Tempo Testnet and ready for integration.