User profile metadata events.
Profile Event (kind 0)
Defines profile information using tags.
Required Tags
None required.
Optional Tags
-
["name", "<display-name>"] (nickname or full name)
-
["about", "<bio>"] (short biography or description)
-
["picture", "<url>"] (profile picture URL)
-
["banner", "<url>"] (banner image URL)
-
["website", "<url>"] (personal website)
-
["lud16", "<lightning-address>"] (Lightning address for payments)
-
["nip05", "<email-like-identifier>"] (NIP-05 verification, one for each address)
-
["badge", "<kind 30009 badge definition event id>", "<kind 30382 profile label event id>"] (one for each accepted badge)
-
["label", "<kind 30382 label definition event id>"] (one for each label)
-
["i", "<platform:identity>", "<proof>"] (external identity verification)
Example
{
"id": "<event-id>",
"pubkey": "<pubkey>",
"created_at": 1675642635,
"kind": 0,
"tags": [
["name", "Alice"],
["about", "Bitcoin enthusiast and developer"],
["picture", "https://example.com/alice.jpg"],
["website", "https://alice.dev"],
["lud16", "alice@example.com"],
["nip05", "alice@example.com"],
["badge", "30009:communityName:member", "profile-label-event-id-123"],
["label", "member"],
["i", "github:alice", "9721ce4ee4fceb91c9711ca2a6c9a5ab"],
["i", "twitter:alice_public", "1619358434134196225"],
["i", "mastodon:bitcoinhackers.org/@alice", "109775066355589974"]
],
"content": "",
"sig": "<signature>"
}
External Identities
The i tag allows users to verify external platform identities.
Identity Format
["i", "<platform:identity>", "<proof>"]
-
platform:identity: Platform name and identity joined with: -
proof: Verification proof (varies by platform)
Supported Platforms
GitHub
-
Identity:
github:username -
Proof: GitHub Gist ID
-
Verification: Gist contains
Verifying that I control the following Nostr public key: <npub>
-
Identity:
twitter:username -
Proof: Tweet ID
-
Verification: Tweet contains
Verifying my account on nostr My Public Key: "<npub>"
Mastodon
-
Identity:
mastodon:instance/@username -
Proof: Post ID
-
Verification: Post contains
Verifying that I control the following Nostr public key: "<npub>"
Telegram
-
Identity:
telegram:user-id -
Proof:
channel/message-id -
Verification: Message contains
Verifying that I control the following Nostr public key: "<npub>"
Badge Display
Users can display accepted Badges by including both badge definition and Profile Label event IDs in the badge tag.
Badge Acceptance
-
Users accept badges by adding
["badge", "<kind 30009 badge definition event id>", "<kind 30382 profile label event id>"]to their profile -
Only profile label events where the user is the target (
dtag) should be included -
Clients SHOULD verify both the badge definition and profile label events exist and are valid
Recommendations
For Clients
-
Display external identities with verification status
-
Show badge information from referenced profile label events
-
Validate profile label events before displaying badges
-
Support future identity platforms by processing additional
itag values
For Relays
-
Store all kind 0 events as replaceable events
-
Allow profile updates by replacing older events
-
Index
itags for identity verification queries -
Index
badgetags for badge-related queries
Comments
Public conversation about this article.
No comments yet.
Article metadata
About this entry
Event Id
Raw event
Other authors
No one else has published this topic yet.
