From email-simple to cryptographically serious — the exact steps to get a @giveabit.io name you control.
Getting a verified Nostr identity is one task with two halves:
There is no signup form, no password reset, no company to ask. That is the point — and it means you are responsible for the secret key. That responsibility is the whole game.
Nostr keys are just an elliptic-curve keypair. The simplest correct path is a client or tool that generates a key locally and shows you the nsec once. Save the nsec somewhere offline (password manager or paper), never paste it into chat or a shared file.
NIP-05 verification is a single well-known URL. For the handle [email protected], serve this file at:
https://example.com/.well-known/nostr.jsonwith this content (your hex public key in place of the placeholder):
{
"names": {
"you": "<YOUR_HEX_PUBKEY>"
}
}That's it. When a client wants to verify [email protected], it fetches this file, finds your name, and reads off the public key.
curl -s 'https://example.com/.well-known/nostr.json?name=you'
The response must list you mapped to your hex key. If it does, any NIP-05-aware client can now show your handle as verified.Most clients also need to see a signed post from your key before they'll show the checkmark — the client confirms the key is actually being used. Posting from your nsec once is enough to complete the loop.
If you don't own a domain, Give A Bit can host the file for you. We maintain a public, open registry that already resolves 10 names, and the registry file is itself publicly auditable:
curl -s 'https://giveabit.io/.well-known/nostr.json' | jq '.names | keys'The exact steps to be added are simple: generate a keypair, send the public key to hello@giveabit.io, and our registry ops verify and publish it. The secret key never leaves your hands.
A verified handle is not a reputation score and not a blue badge. It is a durable answer to one question: "does the key signing these posts belong to whoever controls this name?" For that question it is the cheapest, most open proof that exists — and it's one you can run yourself, forever.
Here is the live giveabit.io registry proving rosa@giveabit.io maps to a real, distinct key — same command any client runs:
curl -s 'https://giveabit.io/.well-known/nostr.json?name=rosa' \
| jq -r '.names["rosa"]'
Expected output: 6237810583edbf60099439ff92e46f773f49939ebd9b1d182b9bc373fe1c3a5b · npub npub1vgmczpvraklkqzv588le9er0wul5nyu7hkd36xptn0ph8lsu8fdsg9y63uIf you follow the same three steps above, your own name will resolve the same way — and the registry proving it will be yours to control.