the protocol
nostr is a protocol for establishing pseudonymous identities and using them to cryptographically sign messages and pass them around via relays. it grew out of a small community of bitcoin/lightning devs, specifically fiatjaf. it was a reaction to the counter-party risks in using centralized social networks (twitter, facebook, etc) and the failings of other, semi-decentralized approaches (mastodon).
bitcoin familiarity helps when groking nostr. the identity portion of nostr is private/public key pair. similar to a bitcoin wallet where one uses one’s private key to sign a transaction and publish it into the network, one uses a nostr private key to sign an event and publish it to relays. there are various defined kinds of events, from profile information (name, about, url, avatar url, etc), to contact lists (follows), to notes (a short plain text message). the bitcoin network is peer to peer (distributed), where nodes will gossip transactions around to all the other nodes, but this is not the case with nostr. events stay where you publish them, relays only talk to clients, not other relays. this makes nostr decentralized, but not distributed. since it’s not peer-to-peer, one client doesn’t need to see the entire traffic of the network, or to query some distributed hash table a la IPFS, to find content across the network. this middle ground between centralized and distributed allows snappy response times yet prevents the domination of network lock-in.
a nostr client looking to read messages connects to a set of relays defined by the user and hands them each a filter. that filter usually contains a list of pubkeys that the user follows, but it is also possible to filter on event kind, before and after timestamps, or various combinations.
the first use cases for nostr were various clones of twitter and similar services. and even if this were the full extent of the possible bredth of nostr, it would be immense and very valuable. but this is still very early days. anything that benefits from a publish/subscribe architecture could be mapped onto nostr.
the impact
bitcoin used the power of decentralization to create a digital asset that disallows seigniorage, redirecting the lost purchasing power to those who carry bitcoin over time. nostr aims to do a similar trick with centralized social networks. twitter is able to reap the benefits of the network effect they create by owning the network entirely. they can gatekeep who joins and under what circumstances. since the gravity well of users is so deep there, it has it’s own network inertia. nostr offers an alternative where there is no centralized gatekeeper. anyone anywhere can create a private/public key pair at will. and your followers and content are not locked into one operator. it is as easy as starting your own website to start your own relay. this has the effect of paying the benefit of the network effect to those who provide the network value, proportional to that value. so just as the bitcoin schelling point is to buy and hold, the nostr schelling point is to provide value and find your audience on nostr.
clients
there are all manner of clients across all platforms and more every day. a few suggested clients:
web
- snort.social snort keeps up with the lates NIPs, my daily driver
- iris.to also quite current and well done
android
- iris the same UI as the web, packaged as an android app. not exactly native, but functional enough for reliable use.
- amethyst a nice android native app that I’m enjoying very much so far
ios
if you have experience using nostr on ios, ping me on nostr (see below) and let me know.
- damus this is the classic, probably the most populous client. I am not an ios user and cannot vouch for it, but it is widely used and implements most useful features before any other clients.
relays
this is a moving target. free relays are quickly becoming a thing of the past, and the role of relays in the nostr ecosystem is still feels like it’s evolving. I’ll add more thoughts here as they arise.
wss://nostr.drss.io
is a free to use relay that I host. this is going to change to pay-to-relay soon, as the bandwidth usage is growing out of control.wss://eden.nostr.land
is pay-to-relay from cameri
NIP05
the NIP05 protocol specification is a way to point DNS to a public key, which can serve whatever purpose the user has for that. for one, it’s a good way to discover if someone you follow, a blog or personal website, uses nostr. it’s also a good way to validate that the pubkey you are seeing on nostr is in fact the same entity you know from elsewhere. for example, when @jack showed up on nostr, people were rightly skeptical. however, he caused the cash.app domain to point to his public key.
- try this yourself if you have a website. in a folder called
.well-known
off your root, put a file callednostr.json
with your name and pubkey. you may also specify a relay where you can be found, which is very handy. you can see mine here - nostrplebs.com is a site where you can pay some sats for @nostrplebs.com. I don’t see the point of paying just to have a NIP05 on an unrelated domain. if you know of a meaningful reason, @ me and let me know.
browser plugins
-
nos2x use NIP07 to log into sites without divulging your private key, but also for parsing
nostr:
protocol links, so you can plug in your preferred nostr web client and open links there, rather than the author hard-wiring a client into their URLs. this plugin is table stakes for safely participating in the nostr protocol via the web. -
alby also handles private key storage and signing (NIP07) stuff, but NOT the
nostr:
protocol parsing. however, alby does handle lightning transactions in the browser, which is incredibly valuable for paying to join relays, paying for NIP05, or participating in zaps, which are lightning payments to profiles or posts.
find me
my pubkey is npub1mkq63wkt4v94cvq869njlwpszwpmf62c84p3sdvc2ptjy04jnzjs20r4tx, if you have a nostr:
protocol handler configured, you can
click here to follow me or send me a message
the oldest note I can find that I’ve authored: note1lty6wnuvfkydjggl3wpqatfu5mh9mvv48sdx48jar5g6ugmqvgsqmuvrwr