diff --git a/20.md b/20.md index 49e2396a..7e97dd91 100644 --- a/20.md +++ b/20.md @@ -82,7 +82,7 @@ Client Handling For the `pow:` prefix it may query relay metadata to get the updated difficulty requirement and try again in the background. -For the `invalid:` and `blocked`: prefix the client may wish to show these as styled error popups. +For the `invalid:` and `blocked:` prefix the client may wish to show these as styled error popups. The prefixes include a colon so that the message can be cleanly separated from the prefix by taking everything after `:` and trimming it. diff --git a/46.md b/46.md index a9f37c1b..6589fc00 100644 --- a/46.md +++ b/46.md @@ -61,7 +61,7 @@ These are mandatory methods the remote signer app MUST implement: - **describe** - params [] - - result `{"get_public_key": { params: [], result: anything }}` + - result `["describe", "get_public_key", "sign_event", "connect", "disconnect", "delegate", ...]` - **get_public_key** - params [] - result `pubkey` @@ -77,8 +77,8 @@ These are mandatory methods the remote signer app MUST implement: - **disconnect** - params [] - **delegate** - - params [`pubkey`, `conditions query string`] - - result `nip26 delegation token` + - params [`delegatee`, `{ kind: number, since: number, until: number }`] + - result `{ from: string, to: string, cond: string, sig: string }` - **get_relays** - params [] - result `{ [url: string]: {read: boolean, write: boolean} }` diff --git a/78.md b/78.md new file mode 100644 index 00000000..175f66b1 --- /dev/null +++ b/78.md @@ -0,0 +1,21 @@ +NIP-78 +====== + +Arbitrary custom app data +------------------------- + +`draft` `optional` `author:sandwich` `author:fiatjaf` + +The goal of this NIP is to enable [remoteStorage](https://remotestorage.io/)-like capabilities for custom applications that do not care about interoperability. + +Even though interoperability is great, some apps do not want or do not need interoperability, and it that wouldn't make sense for them. Yet Nostr can still serve as a generalized data storage for these apps in a "bring your own database" way, for example: a user would open an app and somehow input their preferred relay for storage, which would then enable these apps to store application-specific data there. + +## Nostr event + +This NIP specifies the use of event kind `30078` (parameterized replaceable event) with a `d` tag containing some reference to the app name and context -- or any other arbitrary string. `content` and other `tags` can be anything or in any format. + +## Some use cases + + - User personal settings on Nostr clients (and other apps unrelated to Nostr) + - A way for client developers to propagate dynamic parameters to users without these having to update + - Personal private data generated by apps that have nothing to do with Nostr, but allow users to use Nostr relays as their personal database diff --git a/README.md b/README.md index da8ce96e..cce1b001 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ NIPs stand for **Nostr Implementation Possibilities**. They exist to document wh - [NIP-58: Badges](58.md) - [NIP-65: Relay List Metadata](65.md) - [NIP-69: Polls](69.md) +- [NIP-78: Application-specific data](78.md) ## Event Kinds | kind | description | NIP | @@ -62,13 +63,14 @@ NIPs stand for **Nostr Implementation Possibilities**. They exist to document wh | 10002 | Relay List Metadata | [65](65.md) | | 22242 | Client Authentication | [42](42.md) | | 24133 | Nostr Connect | [46](46.md) | +| 30008 | Profile Badges | [58](58.md) | +| 30009 | Badge Definition | [58](58.md) | | 30023 | Long-form Content | [23](23.md) | +| 30078 | Application-specific Data | [78](78.md) | | 1000-9999 | Regular Events | [16](16.md) | | 10000-19999 | Replaceable Events | [16](16.md) | | 20000-29999 | Ephemeral Events | [16](16.md) | | 30000-39999 | Parameterized Replaceable Events | [33](33.md) | -| 30008 | Profile Badges | [58](58.md) | -| 30009 | Badge Definition | [58](58.md) | ## Message types @@ -86,7 +88,7 @@ NIPs stand for **Nostr Implementation Possibilities**. They exist to document wh | EVENT | used to send events requested to clients | [1](01.md) | | NOTICE | used to send human-readable messages to clients | [1](01.md) | | EOSE | used to notify clients all stored events have been sent | [15](15.md) | -| OK | used to notify clients if an EVENT was successuful | [20](20.md) | +| OK | used to notify clients if an EVENT was successful | [20](20.md) | | AUTH | used to send authentication challenges | [42](42.md) | Please update these lists when proposing NIPs introducing new event kinds.