Step 1 of 5
Your relay as an app database
Apps that don't need to share data with other apps can still keep it on Nostr: you choose a relay, the app reads and writes its own events there.
NIP-78
DraftEventsRelay
Lets apps store their own private data, such as settings, on your relays in any format they like, as kind 30078 (one record per key) or kind 78 (many records).
Edit the form or the JSON: both stay in sync, the badge says whether the result is valid, and tapping any field explains it.
Not signed yet · Demo keys only. These personas' secret keys are public on purpose.
Select any field in the form or the JSON to see what it does.
Step 1 of 5
Apps that don't need to share data with other apps can still keep it on Nostr: you choose a relay, the app reads and writes its own events there.
No course chapter covers this NIP yet. The editor above is the quickest way in.
30078 is addressable (replaced per d); 78 is a regular event.
Relays should only serve these events to the authenticated author.
Encrypt sensitive values to yourself with NIP-44.
Specification text is quoted in English from the nostr-protocol/nips repository. Our explanations and the interface are translated. Source on GitHub at commit 0046368
The goal of this NIP is to enable remoteStorage-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 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.
These kinds are not meant to be used as a generic interchange format for data that should be public or exchanged between different applications. Applications that need such interoperability should use dedicated kinds instead.
This NIP specifies the use of event kinds 30078 (an addressable 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.
It also defines the kind 78 (a normal event) for when the app needs to store and query multiple events of the same type. Apps should use some unique tag (even a d tag) for grouping these events together.
Because this data is private to the user, relays SHOULD require clients to perform the NIP-42 AUTH flow before accepting or serving kind 78 and kind 30078 events, and SHOULD only serve these events to the authenticated owner, i.e. the client must authenticate with the same pubkey as the event author.