Wikifreedia

Nostr-Attestations

All versions

This NUD defines the event 1983 Attestations, with which a npub can attest to the validity of a different npub.

The attestation event

The event is issued by the attestor’s client and can contain any sort of attest that is not already evident in a different type of event, such as labels, zaps, following, replies, relationship status, badges, community or group membership, authorized access to a relay, etc.

In particular, this could be issued by someone’s npub, after meeting someone in real life, like on-boarding a new user at a conference or meetup. It could also be used to attest to some interaction that occurred on another online network, or acknowledgement that someone has been allowed access to some channel off-Nostr.

This is more effective than a mere "introductory note", as it is measurable, independent of someone’s personal feed or lists, and such attestations could be accumulated and used to gain access to some other place.

The confirmation event

The npub who is receiving the attestation, has the ability to confirm (accept) or decline (reject) an attestation, by replying to it with a different 1983 event. This raises the value of the attestation, by allowing both sides to attest to the same interaction, or to show disagreement on what occurred.

Attestation Event Structure

The following rules apply to kind 1983 attestation :

  • The attestation event MUST include a p tag, referencing the pubkey of the user you are attesting.

  • There MAY be a content field, containing some human-readable text describing the reason for the attestation.

  • There MAY be a expiration time stamp tag, formatted according to NIP-40

  • An attestation type tag MUST be included, and can include multiple entries. It MUST select from the following list:

    • meetup : the npub was seen or interacted-with, in person, at a real-life event

    • personal : the npub has some personal, real-life relationship with the attestation issuer, such as being a coworker or family-member

    • online : the npub has a long-standing online relationship with the person issuing the attestation. There MAY be an i tag (see NIP-39), indicating some external online identity, that is being attested to.

    • task : the npub has performed some work, that the attestor has observed

    • payment : the npub has paid the attestor some sum of money, to prove that they are not merely spam

    • membership : the npub is a member of some group or organization

    • other : none of the above apply. A content field MUST be added, in this case.

Additional tags MAY be included.

Example Attestation Events

{
	"id": "<event_id>",
	"pubkey": "8ae74c618a4713f32129...",
	"created_at": 1708083476,
	"kind": 1983,
	"tags": [
		[ "p", "f7234bd4c1394dda46d09f35bd384dd30cc552ad5541990f98844fb06676e9ca" ],
        [ "attestation type", "online", "payment"],
		[ "i", "telegram:1087295469", "nostrdirectory/770" ]
	],
	"content": "We've been communicating online, weekly, for 4 years. I sold them a painting a year ago, and they paid me for it in USD.",
	"sig": "49cab8c75fb35cec71d07258..."
}
{
	"id": "<event_id>",
	"pubkey": "8ae74c618a4713f32129...",
	"created_at": 1708083476,
	"kind": 1983,
	"tags": [
		[ "p", "f7234bd4c1394dda46d09f35bd384dd30cc552ad5541990f98844fb06676e9ca" ],
        [ "attestation type", "meetup" ],
        [ "expiration", "1726611824" ]
    ],
	"content": "I met this person at the Nostr conference in Amsterdam and helped them onboard.",
	"sig": "49cab8c75fb35cec71d07258..."
}

Confirmation Event Structure

The following rules apply to kind 1983 confirmation :

  • The confirmation event MUST include an e tag, referencing the attestation event you are confirming.

  • The confirmation event MUST include a p tag, referencing the pubkey of the npub who issued the original attestation.

  • There MUST be a content field, containing + or - , to signify confirmation.

Example Confirmation Event

{
	"id": "<event_id>",
	"pubkey": "8ae74c618a4713f32129...",
	"created_at": 1708083476,
	"kind": 1983,
	"tags": [
		[ "p", "f7234bd4c1394dda46d09f35bd384dd30cc552ad5541990f98844fb06676e9ca" ],
        ["e", "5c83da77af1dec6d7289834998ad7aafbd9e2191396d75ec3cc27f5a77226f36", "wss://nostr.example.com"],
    "content": "+"
}