DEV Community

Cover image for The Nostr Protocol - NIP01
Melvin Carvalho
Melvin Carvalho

Posted on • Updated on

The Nostr Protocol - NIP01

What is Nostr?

Nostr stands for "Notes and Other Stuff Transmitted by Relays". It is a new type of social experience on the web where "dumb" relays can be used to send messages from one user to another, in a secure, censorship resistant manner.

Since it is not P2P it has a chance of working.

Nostr Relays

Relays are lightweight, easy to set up, and can run in as little as 5MB of memory. A list of relays can be found here.

How can I try Nostr?

Nostr can be run on a number of clients. They can be run on your own machine, or on a public instance. Here is a list of client software and a list of running instances.

For example, you can try out Nostr here.

You can follow my identity ed1d0e1f... and discover new users.

A Brief Introduction to the Nostr Protocol?


Nostr is very simple. Each user gets an EC key pair, which they use to sign Events. An Event has a unique id and is signed by the nostr public key using a Schnorr Signature.

The event has is of a certain kind/type, has content, a timestamp, and additional tags. The event id is the sha256 of those fields. Events can then be sent to, and requested by, relays over websockets. The diagram above gives a visualization of the core event structure.

The core protocol is described here and can be extended via NIPs.

NIPs are a way to extent the base Nostr functionality. Already there are NIPs for encrypted chat, contact management, profiles, relay management, Tor relays, Open Timestamps and much more.

I am personally working on a chat client depicted below.

Image description


Nostr is a new kind of protocol that that provides censorship resistant communications on the internet

Dumb relays forward messages from one user to another. It is not P2P, so it has a chance of working.

I've touched on some of the basic concepts of Nostr in this post, and will explore the protocol in greater depth, in future posts.


Discussion (0)