Nostrs

Nostr NIPS 60

NIP-60 Cashu Wallet draft optional This NIP defines the operations of a cashu-based wallet. A cashu wallet is a wallet which information is stored in relays to make it accessible across applications. The purpose of this NIP is: ease-of-use: new users immediately are able to receive funds without creating accounts with other services. interoperability: users’ wallets follows them across applications. This NIP doesn’t deal with users’ receiving money from someone else, it’s just to keep state of the user’s wallet.

Nostr NIPS 61

NIP-61: Nut Zaps A Nut Zap is a P2PK cashu token where the payment itself is the receipt. High-level flow Alice wants to nutzap 1 sat to Bob because of an event event-id-1 she liked. Alice nutzaps Bob Alice fetches event kind:10019 from Bob to see the mints Bob trusts. She mints a token at that mint (or swaps some tokens she already had in that mint) p2pk-locked to the pubkey Bob has listed in his kind:10019.

Nostr NIPS 73

NIP-73 External Content IDs draft optional There are certain established global content identifiers such as Book ISBNs , Podcast GUIDs , and Movie ISANs that are useful to reference in nostr events so that clients can query all the events assosiated with these ids. i tags are used for referencing these external content ids, with k tags representing the external content id kind so that clients can query all the events for a specific kind.

Nostr NIPS 70

NIP-70 Protected Events draft optional When the "-" tag is present, that means the event is “protected”. A protected event is an event that can only be published to relays by its author. This is achieved by relays ensuring that the author is authenticated before publishing their own events or by just rejecting events with ["-"] outright. The default behavior of a relay MUST be to reject any event that contains ["-"].

Nostr NIPS 55

NIP-55 Android Signer Application draft optional This NIP describes a method for 2-way communication between an Android signer and any Nostr client on Android. The Android signer is an Android Application and the client can be a web client or an Android application. Usage for Android applications The Android signer uses Intents and Content Resolvers to communicate between applications. To be able to use the Android signer in your application you should add this to your AndroidManifest.

Nostr NIPS 54

NIP-54 Wiki draft optional This NIP defines kind:30818 (an addressable event) for descriptions (or encyclopedia entries) of particular subjects, and it’s expected that multiple people will write articles about the exact same subjects, with either small variations or completely independent content. Articles are identified by lowercase, normalized ascii d tags. Articles { "content": "A wiki is a hypertext publication collaboratively edited and managed by its own audience.", "tags": [ ["d", "wiki"], ["title", "Wiki"], ] } d tag normalization rules Any non-letter character MUST be converted to a -.

Nostr NIPS 34

NIP-34 git stuff draft optional This NIP defines all the ways code collaboration using and adjacent to git can be done using Nostr. Repository announcements Git repositories are hosted in Git-enabled servers, but their existence can be announced using Nostr events, as well as their willingness to receive patches, bug reports and comments in general. { "kind": 30617, "content": "", "tags": [ ["d", "<repo-id>"], // usually kebab-case short name ["name", "<human-readable project name>"], ["description", "brief human-readable project description>"], ["web", "<url for browsing>", .

Nostr NIPS 92

NIP-92 Media Attachments Media attachments (images, videos, and other files) may be added to events by including a URL in the event content, along with a matching imeta tag. imeta (“inline metadata”) tags add information about media URLs in the event’s content. Each imeta tag SHOULD match a URL in the event content. Clients may replace imeta URLs with rich previews. The imeta tag is variadic, and each entry is a space-delimited key/value pair.

Nostr NIPS 49

NIP-49 Private Key Encryption draft optional This NIP defines a method by which clients can encrypt (and decrypt) a user’s private key with a password. Symmetric Encryption Key derivation PASSWORD = Read from the user. The password should be unicode normalized to NFKC format to ensure that the password can be entered identically on other computers/clients. LOG_N = Let the user or implementer choose one byte representing a power of 2 (e.

Nostr NIPS 96

NIP-96 HTTP File Storage Integration draft optional Introduction This NIP defines a REST API for HTTP file storage servers intended to be used in conjunction with the nostr network. The API will enable nostr users to upload files and later reference them by url on nostr notes. The spec DOES NOT use regular nostr events through websockets for storing, requesting nor retrieving data because, for simplicity, the server will not have to learn anything about nostr relays.

Nostr NIPS 64

NIP-64 Chess (Portable Game Notation) draft optional This NIP defines kind:64 notes representing chess games in PGN format, which can be read by humans and is also supported by most chess software. Note Content The .content of these notes is a string representing a PGN-database . Notes { "kind": 64, "content": "1. e4 *", // other fields... } { "kind": 64, "tags": [ ["alt", "Fischer vs. Spassky in Belgrade on 1992-11-04 (F/S Return Match, Round 29)"], // rest of tags.

Nostr NIPS 44

NIP-44 Encrypted Payloads (Versioned) optional The NIP introduces a new data format for keypair-based encryption. This NIP is versioned to allow multiple algorithm choices to exist simultaneously. This format may be used for many things, but MUST be used in the context of a signed event as described in NIP 01. Note: this format DOES NOT define any kinds related to a new direct messaging standard, only the encryption required to define one.

Nostr NIPS 71

NIP-71 Video Events draft optional This specification defines video events representing a dedicated post of externally hosted content. These video events are addressable and delete-requestable per NIP-09 . Unlike a kind 1 event with a video attached, Video Events are meant to contain all additional metadata concerning the subject media and to be surfaced in video-specific clients rather than general micro-blogging clients. The thought is for events of this kind to be referenced in a Netflix, YouTube, or TikTok like nostr client where the video itself is at the center of the experience.

Nostr NIPS 29

NIP-29 Relay-based Groups draft optional This NIP defines a standard for groups that are only writable by a closed set of users. They can be public for reading by external users or not. Groups are identified by a random string of any length that serves as an id. There is no way to create a group, what happens is just that relays (most likely when asked by users) will create rules around some specific ids so these ids can serve as an actual group, henceforth messages sent to that group will be subject to these rules.

Nostr NIPS 84

NIP-84 Highlights draft optional This NIP defines kind:9802, a “highlight” event, to signal content a user finds valuable. Format The .content of these events is the highlighted portion of the text. .content might be empty for highlights of non-text based media (e.g. NIP-94 audio/video). References Events SHOULD tag the source of the highlight, whether nostr-native or not. a or e tags should be used for nostr events and r tags for URLs.

Nostr NIPS 24

NIP-24 Extra metadata fields and tags draft optional This NIP defines extra optional fields added to events. kind 0 These are extra fields not specified in NIP-01 that may be present in the stringified JSON of metadata events: display_name: an alternative, bigger name with richer characters than name. name should always be set regardless of the presence of display_name in the metadata. website: a web URL related in any way to the event author.

Nostr NIPS 75

NIP-75 Zap Goals draft optional This NIP defines an event for creating fundraising goals. Users can contribute funds towards the goal by zapping the goal event. Nostr Event A kind:9041 event is used. The .content contains a human-readable description of the goal. The following tags are defined as REQUIRED. amount - target amount in milisats. relays - a list of relays the zaps to this goal will be sent to and tallied from.

Nostr NIPS 38

NIP-38 User Statuses draft optional Abstract This NIP enables a way for users to share live statuses such as what music they are listening to, as well as what they are currently doing: work, play, out of office, etc. Live Statuses A special event with kind:30315 “User Status” is defined as an optionally expiring addressable event, where the d tag represents the status type: For example: { "kind": 30315, "content": "Sign up for nostrasia!

Nostr NIPS 59

NIP-59 Gift Wrap optional This NIP defines a protocol for encapsulating any nostr event. This makes it possible to obscure most metadata for a given event, perform collaborative signing, and more. This NIP does not define any messaging protocol. Applications of this NIP should be defined separately. This NIP relies on NIP-44 ’s versioned encryption algorithms. Overview This protocol uses three main concepts to protect the transmission of a target event: rumors, seals, and gift wraps.

Nostr NIPS 17

NIP-17 Private Direct Messages draft optional This NIP defines an encrypted direct messaging scheme using NIP-44 encryption and NIP-59 seals and gift wraps. Direct Message Kind Kind 14 is a chat message. p tags identify one or more receivers of the message. { "id": "<usual hash>", "pubkey": "<sender-pubkey>", "created_at": "<current-time>", "kind": 14, "tags": [ ["p", "<receiver-1-pubkey>", "<relay-url>"], ["p", "<receiver-2-pubkey>", "<relay-url>"], ["e", "<kind-14-id>", "<relay-url>", "reply"] // if this is a reply ["subject", "<conversation-title>"], // rest of tags.

Nostr NIPS 72

NIP-72 Moderated Communities (Reddit Style) draft optional The goal of this NIP is to enable public communities. It defines the replaceable event kind:34550 to define the community and the current list of moderators/administrators. Users that want to post into the community, simply tag any Nostr event with the community’s a tag. Moderators may issue an approval event kind:4550. Community Definition Kind:34550 SHOULD include any field that helps define the community and the set of moderators.

Nostr NIPS 48

NIP-48 Proxy Tags draft optional Nostr events bridged from other protocols such as ActivityPub can link back to the source object by including a "proxy" tag, in the form: ["proxy", <id>, <protocol>] Where: <id> is the ID of the source object. The ID format varies depending on the protocol. The ID must be universally unique, regardless of the protocol. <protocol> is the name of the protocol, e.g. "activitypub". Clients may use this information to reconcile duplicated content bridged from other protocols, or to display a link to the source object.

Nostr NIPS 90

NIP-90 Data Vending Machine draft optional This NIP defines the interaction between customers and Service Providers for performing on-demand computation. Money in, data out. Kinds This NIP reserves the range 5000-7000 for data vending machine use. Kind Description 5000-5999 Job request kinds 6000-6999 Job result 7000 Job feedback Job results always use a kind number that is 1000 higher than the job request kind. (e.g. request: kind:5001 gets a result: kind:6001).

Nostr NIPS 99

NIP-99 Classified Listings draft optional This NIP defines kind:30402: an addressable event to describe classified listings that list any arbitrary product, service, or other thing for sale or offer and includes enough structured metadata to make them useful. The category of classifieds includes a very broad range of physical goods, services, work opportunities, rentals, free giveaways, personals, etc. and is distinct from the more strictly structured marketplaces defined in NIP-15 that often sell many units of specific products through very specific channels.

Nostr NIPS 53

NIP-53 Live Activities draft optional Service providers want to offer live activities to the Nostr network in such a way that participants can easily log and query by clients. This NIP describes a general framework to advertise the involvement of pubkeys in such live activities. Concepts Live Event A special event with kind:30311 “Live Event” is defined as an addressable event of public p tags. Each p tag SHOULD have a displayable marker name for the current role (e.

Nostr NIPS 52

NIP-52 Calendar Events draft optional This specification defines calendar events representing an occurrence at a specific moment or between moments. These calendar events are addressable and deletable per NIP-09 . Unlike the term calendar event specific to this NIP, the term event is used broadly in all the NIPs to describe any Nostr event. The distinction is being made here to discern between the two terms. Calendar Events There are two types of calendar events represented by different kinds: date-based and time-based calendar events.

Nostr NIPS 89

NIP-89 Recommended Application Handlers draft optional This NIP describes kind:31989 and kind:31990: a way to discover applications that can handle unknown event-kinds. Rationale Nostr’s discoverability and transparent event interaction is one of its most interesting/novel mechanics. This NIP provides a simple way for clients to discover applications that handle events of a specific kind to ensure smooth cross-client and cross-kind interactions. Parties involved There are three actors to this workflow:

Nostr NIPS 32

NIP-32 Labeling draft optional This NIP defines two new indexable tags to label events and a new event kind (kind:1985) to attach those labels to existing events. This supports several use cases, including distributed moderation, collection management, license assignment, and content classification. New Tags: L denotes a label namespace l denotes a label Label Namespace Tag An L tag can be any string, but publishers SHOULD ensure they are unambiguous by using a well-defined namespace (such as an ISO standard) or reverse domain name notation.

Nostr NIPS 31

NIP-31 Dealing with unknown event kinds draft optional When creating a new custom event kind that is part of a custom protocol and isn’t meant to be read as text (like kind:1), clients should use an alt tag to write a short human-readable plaintext summary of what that event is about. The intent is that social clients, used to display only kind:1 notes, can still show something in case a custom event pops up in their timelines.

Nostr NIPS 30

NIP-30 Custom Emoji draft optional Custom emoji may be added to kind 0, kind 1, kind 7 (NIP-25 ) and kind 30315 (NIP-38 ) events by including one or more "emoji" tags, in the form: ["emoji", <shortcode>, <image-url>] Where: <shortcode> is a name given for the emoji, which MUST be comprised of only alphanumeric characters and underscores. <image-url> is a URL to the corresponding image file of the emoji. For each emoji tag, clients should parse emoji shortcodes (aka “emojify”) like :shortcode: in the event to display custom emoji.