Lots of updates of content and structure (#34)
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 8.4 KiB |
BIN
public/images/damus-login.png
Normal file
|
After Width: | Height: | Size: 678 KiB |
BIN
public/images/damus-settings.png
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
public/images/damus-signup.png
Normal file
|
After Width: | Height: | Size: 675 KiB |
@@ -2,6 +2,12 @@ import clsx from 'clsx'
|
||||
|
||||
import { Icon } from '@/components/Icon'
|
||||
|
||||
// Example usage:
|
||||
// Available types: warning | note
|
||||
// {% callout type="warning" title="Oh no! Something bad happened!" %}
|
||||
// This is what a disclaimer message looks like. You might want to include inline `code` in it. Or maybe you’ll want to include a [link](/) in it. I don’t think we should get too carried away with other scenarios like lists or tables — that would be silly.
|
||||
// {% /callout %}
|
||||
|
||||
const styles = {
|
||||
note: {
|
||||
container:
|
||||
|
||||
@@ -32,14 +32,23 @@ const navigation = [
|
||||
title: 'Clients',
|
||||
links: [
|
||||
{ title: 'How do clients work?', href: '/clients' },
|
||||
{ title: 'Client comparison list', href: '/clients/comparison' },
|
||||
{ title: 'Guide: Astral (Web)', href: '/clients/astral' },
|
||||
{ title: 'Guide: Damus (iOS)', href: '/clients/damus' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Relays',
|
||||
links: [
|
||||
{ title: 'What are relays?', href: '/relays' },
|
||||
{ title: 'List of known relays', href: '/relays/list' },
|
||||
{
|
||||
title: 'List of relay implementations',
|
||||
href: '/relays/implementations',
|
||||
},
|
||||
{
|
||||
title: 'Nostr Watch ↗️',
|
||||
href: 'https://nostr.watch/relays/find',
|
||||
target: '_blank',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
@@ -21,6 +21,7 @@ export function Navigation({ navigation, className }) {
|
||||
<li key={link.href} className="relative">
|
||||
<Link
|
||||
href={link.href}
|
||||
target={link.target}
|
||||
className={clsx(
|
||||
'block w-full pl-3.5 before:pointer-events-none before:absolute before:-left-1 before:top-1/2 before:h-1.5 before:w-1.5 before:-translate-y-1/2 before:rounded-full',
|
||||
link.href === router.pathname
|
||||
|
||||
@@ -11,7 +11,7 @@ Clients are the way that you access and interact with the Nostr protocol.
|
||||
|
||||
A client in Nostr is just the app that you use to access and interact with the protocol. It's like the Twitter iOS app or web app that you use to interact with Twitter's feed of tweets.
|
||||
|
||||
Because the Nostr protocol is very simple and flexible, different clients have focused on implementing different aspects of the protocol in slightly different ways. For example, some clients focus on beautiful and usable UI, others focus more on enabling lighting payments, still others focus on Nostr for creative use cases like playing chess (Yes, you can play chess via the Nostr protocol).
|
||||
Because the Nostr protocol is very simple and flexible, different clients have focused on implementing different aspects of the protocol in slightly different ways. For example, some clients focus on beautiful and usable UI, others focus more on enabling lighting payments, still others focus on Nostr for creative use cases like playing chess (Yes, you can [play chess](https://jesterui.github.io/) via the Nostr protocol).
|
||||
|
||||
## Can I switch clients?
|
||||
|
||||
@@ -19,4 +19,21 @@ Yes. Because a client is just a way to access the underlying data held by relays
|
||||
|
||||
## Should I enter my private key in the client?
|
||||
|
||||
We strongly recommend that you don't enter your private key into any client. Most clients that ask for private keys do their absolute best to keep your key secure but given the nature of software, there are always breaches, exploits, and bugs that could potentially expose your private key. Remember, your private key is your identity in Nostr, so if it is compromised, you'll have to start from scratch rebuilding your identity, and you'll lose your list of followers and all your private messages. Sharing your private key with a client just isn't worth that risk.
|
||||
Generally, it's better not to enter your private key into any client. Most clients that ask for private keys do their absolute best to keep your key secure but given the nature of software, there are always breaches, exploits, and bugs that could potentially expose your private key.
|
||||
|
||||
Remember, your private key is your identity in Nostr, so if it is compromised, you'll have to start from scratch rebuilding your identity, and you'll lose your list of followers and all your private messages.
|
||||
|
||||
## A few of our favorite clients
|
||||
|
||||
### Web
|
||||
|
||||
- [Astral](https://astral.ninja)
|
||||
- [Iris](https://iris.to)
|
||||
|
||||
### iOS
|
||||
|
||||
- [Damus](https://apps.apple.com/app/damus/id1628663131)
|
||||
|
||||
### Android
|
||||
|
||||
- [Amethyst](https://play.google.com/store/apps/details?id=com.vitorpamplona.amethyst&hl=en&pli=1)
|
||||
|
||||
30
src/pages/clients/astral.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: Astral (Web)
|
||||
description: How to get started using Nostr on the web with Astral
|
||||
---
|
||||
|
||||
A step-by-step guide to getting started with Nostr with the Astral web client.
|
||||
|
||||
---
|
||||
|
||||
## Step 1 – Install Alby
|
||||
|
||||
Get [Alby](https://chrome.google.com/webstore/detail/alby-bitcoin-lightning-wa/iokeahhehimjnekafflcihljlcjccdbe) from the Chrome Webstore or directly from the [Alby website](https://getalby.com/).
|
||||
|
||||
Once you have the extension installed create a new account. Unless you're a pro already, we recommend just creating an account on Alby and setting up a new Lightning wallet.
|
||||
|
||||
## Step 2 – Generate your Private Key
|
||||
|
||||
1. Once Alby is installed and you've created or connected to a lightning wallet, navigate to the Alby settings page. 
|
||||
1. Scroll to the Nostr section and click the "generate" button in the private key field. This will generate a private key and save it to your alby wallet. You can now use this private key to log into Nostr.
|
||||
1. Once you've generated your private key, click the small eyeball icon to show your key. Copy the private key (which will start with `nsec`) and save it to a password manager or somewhere **very** safe. Remember, if you lose this key, it's gone forever, along with all your account data.
|
||||
|
||||
## Step 3 – Sign into Astral
|
||||
|
||||
1. Navigate to [Astral](https://astral.ninja).
|
||||
1. In the login popup that appears, click the "USE PUBLIC KEY FROM EXTENSION" button. 
|
||||
1. Authorize key usage in the alby extension popup. 
|
||||
1. Once you confirm you'll be presented with another popup in Astral. We can see here that Alby has passed our public key to Astral. Since we don't want to store our private key on Astral should just press "Proceed" here. 
|
||||
1. Astral will then show you yet another popup telling you that your private key isn't present. Again, this is what we want so you can just hit "Close". 
|
||||
1. You are logged in! It may take a few moments for content to start loading. 🤙
|
||||
1. At this point, you can copy your public key from the top left of the page. You should store this alongside your private key so you have it. 
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
title: Client Comparison
|
||||
description: A comparison of the available Nostr clients on all platforms
|
||||
---
|
||||
|
||||
A comparison of the available Nostr clients on all platforms
|
||||
|
||||
---
|
||||
|
||||
## Clients
|
||||
32
src/pages/clients/damus.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: Damus (iOS)
|
||||
description: How to get started using Nostr on iOS with Damus
|
||||
---
|
||||
|
||||
A step-by-step guide to getting started with Nostr with the Damus iOS client.
|
||||
|
||||
---
|
||||
|
||||
This is a specific guide to get started using Nostr with [Damus](https://damus.io/), a beautiful, easy to use iOS client.
|
||||
|
||||
1. Install [the Damus app on the iOS App Store](https://apps.apple.com/app/damus/id1628663131).
|
||||
1. When you open the app you'll have the option to create a new account or to log in with a private key you've already generated.
|
||||
1. If you have already created a private key via the Alby extension or another client, you can click "Login". Otherwise, click "Create account".
|
||||

|
||||
|
||||
## Creating a new account
|
||||
|
||||
1. Click "Create Account".
|
||||
1. Read through and accept the EULA.
|
||||
1. You'll then pick a username (this can be changed later) and, optionally, add some other profile details. Damus auto generates keys for you at this step. Your public key is shown as the "Account ID" value. 
|
||||
1. Once you've finished, click "Create" and you're ready to use Nostr! 🤙
|
||||
1. Just one last **extremely important** step. You need save your private key somewhere safe.
|
||||
1. Naviate to Settings by clicking your profile image at the top left of the screen, then click "Settings" in the menu. 
|
||||
1. You'll see your "Public Account ID" (this is your public key) and your "Secret Account Login Key" (this is your private key).
|
||||
1. Copy both of these values and store them somewhere **VERY** safe. 1Password or another password manager is a good option. Remember, if you don't save this value, you'll never be able to recover your account. You can find [more info on keys here](/get-started#understanding-keys).
|
||||
|
||||
## Logging in with an existing key
|
||||
|
||||
1. Click "Login".
|
||||
1. Read through and accept the EULA.
|
||||
1. You'll then be asked for your private key. Enter your key and you're done. 🤙 **Important**: Your private key is stored locally and isn't collected or stored by Damus servers in any way.
|
||||
@@ -9,7 +9,7 @@ It takes a village. We started Nostr.how because we are excited about the Nostr
|
||||
|
||||
## In general
|
||||
|
||||
This is an open source project run by volunteers. [The code](https://github.com/nostr-how/nostr-how) is publicly hosted on Github, we encourage anyone and everyone to clone the repo, make changes, and submit pull requests.
|
||||
This is an open source project run by volunteers. [The code](https://github.com/erskingardner/nostr-how) is publicly hosted on Github, we encourage anyone and everyone to clone the repo, make changes, and submit pull requests.
|
||||
|
||||
If you're not technical, don't worry. There are other ways that you can contirbute, like translating, writing content, or just reporting typos.
|
||||
|
||||
@@ -22,6 +22,7 @@ Additionally, if you have ideas for content that we should write, please create
|
||||
## Write content
|
||||
|
||||
If you're a writer and want to contribute, please don't hesitate to reach out (again, [via an issue in the Github repo](https://github.com/nostr-how/nostr-how/issues)). We can help you get set up in whatever way makes sense based on your technical level.
|
||||
|
||||
## Translate content into other languages
|
||||
|
||||
Coming soon...
|
||||
@@ -29,3 +30,7 @@ Coming soon...
|
||||
## Hack with us
|
||||
|
||||
This site is built using Next.js, Tailwind CSS, and Markdown. If you'd like to contribute to the codebase, feel free to submit Pull Requests.
|
||||
|
||||
## Donate
|
||||
|
||||
We're happy to take donations in Sats via the Lightning network. Use the following address for donations: `erskingardner@getalby.com`
|
||||
|
||||
@@ -16,45 +16,29 @@ Let me say that again so it's clear: **If you lose your private key your Nostr a
|
||||
Make sure you store you private key somewhere safe, like a password manager (we like [1Password](https://1password.com/)).
|
||||
|
||||
## Protocol vs Client
|
||||
|
||||
Nostr itself is just a protocol; an agreed upon procedure for passing messages around on the internet.
|
||||
|
||||
You will access Nostr (the protocol) via a client. Clients can be web, desktop, or mobile apps. Some Nostr clients allow you to sign in by pasting in your private key. This is generally not recommended - it's tedious and insecure.
|
||||
You will access Nostr (the protocol) via a client. Clients can be web, desktop, or mobile apps. Some Nostr clients allow you to sign in by pasting in your private key. On the web, this is generally not recommended - it's tedious and insecure. Instead, we recomment using a web-based crypto wallet, which is a piece of software specifically designed to manage private keys.
|
||||
|
||||
Instead, we will use a crypto wallet, which is a piece of software specifically designed to manage private keys.
|
||||
|
||||
[Alby](https://chrome.google.com/webstore/detail/alby-bitcoin-lightning-wa/iokeahhehimjnekafflcihljlcjccdbe) is a bitcoin lightning wallet that has built-in support for Nostr. It's a great option for new users.
|
||||
[Alby](https://chrome.google.com/webstore/detail/alby-bitcoin-lightning-wa/iokeahhehimjnekafflcihljlcjccdbe) is a bitcoin lightning wallet that has built-in support for Nostr. It's a great option for new users. We'll cover installing Alby in the client-specific guides where it's needed below.
|
||||
|
||||
## Let's do this!
|
||||
|
||||
### Step 1 – Install Alby
|
||||
Get [Alby](https://chrome.google.com/webstore/detail/alby-bitcoin-lightning-wa/iokeahhehimjnekafflcihljlcjccdbe) from the Chrome Webstore or directly from the [Alby website](https://getalby.com/).
|
||||
Here are guides to a few different clients we recommend.
|
||||
|
||||
Once you have the extension installed create a new account. Unless you're a pro already, we recommend just creating an account on Alby and setting up a new Lightning wallet.
|
||||
- [Astral](/clients/astral) (Web)
|
||||
- [Damus](/clients/damus) (iOS)
|
||||
- Amethyst (Android) _coming soon_
|
||||
|
||||
### Step 2 – Generate your Private Key
|
||||
## Find friends to follow
|
||||
|
||||
1. Once Alby is installed and you've created or connected to a lightning wallet, navigate to the Alby settings page. 
|
||||
1. Scroll to the Nostr section and click the "generate" button in the private key field. This will generate a private key and save it to your alby wallet. You can now use this private key to log into Nostr.
|
||||
1. Once you've generated your private key, click the small eyeball icon to show your key. Copy the private key (which will start with `nsec`) and save it to a password manager or somewhere **very** safe. Remember, if you lose this key, it's gone forever, along with all your account data.
|
||||
|
||||
### Step 3 – Log into Nostr via a client
|
||||
|
||||
Now that you have a private key, you can log into Nostr. But remember, Nostr is only a protocol, not an application, so you will need to use a Nostr client to access the network. For this guide we'll use [Astral](https://astral.ninja), a simple twitter-like web client.
|
||||
|
||||
1. Navigate to [Astral](https://astral.ninja).
|
||||
1. In the login popup that appears, click the "USE PUBLIC KEY FROM EXTENSION" button. 
|
||||
1. Authorize key usage in the alby extension popup. 
|
||||
1. Once you confirm you'll be presented with another popup in Astral. We can see here that Alby has passed our public key to Astral. Since we don't want to store our private key on Astral should just press "Proceed" here. 
|
||||
1. Astral will then show you yet another popup telling you that your private key isn't present. Again, this is what we want so you can just hit "Close". 
|
||||
1. You are logged in! It may take a few moments for content to start loading.
|
||||
1. At this point, you can copy your public key from the top left of the page. You should store this alongside your private key so you have it. 
|
||||
|
||||
### Step 4 – Find friends to follow
|
||||
* If you know someone is on Nostr, find their profile by searching for their public key.
|
||||
* Many Twitter users are tweeting their Nostr pubkeys with the hashtag #nostr so searching this hashtag can give you a good start.
|
||||
* [nostr.directory](https://nostr.directory) is a database mapping twitter users to their Nostr pubkeys.
|
||||
- If you know someone is on Nostr, find their profile by searching for their public key.
|
||||
- Many Twitter users are tweeting their Nostr pubkeys with the hashtag #nostr so searching this hashtag can give you a good start.
|
||||
- [nostr.directory](https://nostr.directory) is a database mapping twitter users to their Nostr pubkeys.
|
||||
|
||||
## What does "Signing" mean?
|
||||
|
||||
In order to interact with the Nostr protocol you must create a cryptographic signature each time you perform an action. Think of this signature as an authentication step where you confirm that you are, indeed, who you say you are.
|
||||
|
||||
Most Nostr clients try to make this easy and quick (or allow you to save your private key in the client so that they can sign on your behalf anytime you do anything).
|
||||
@@ -62,10 +46,7 @@ Most Nostr clients try to make this easy and quick (or allow you to save your pr
|
||||
By only providing our public key above, we'll be prompted to sign anytime we want to interact with any posts or perform any updates to our profile. When that happens, Alby will automatically pop up (like it did during the sign up step) and you can confirm that you actually want to sign.
|
||||
|
||||
## Can I use other clients?
|
||||
|
||||
Yes! Now that you have created your public/private key pair, you can use this pair on any Nostr client to access your account. Remember, the client is just an interface to see messages broadcast on the Nostr protocol.
|
||||
|
||||
Since it's so early in Nostr's development, not all clients support all protocol features in the same way. It's worth checking out our [client comparison](/clients/comparison) to find the best client for you.
|
||||
|
||||
## Safely store your keys
|
||||
|
||||
You saved your private and public keys somewhere **very** safe, didn't you?
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Relays
|
||||
title: What are relays?
|
||||
description: What are Relays and how do they work
|
||||
---
|
||||
|
||||
@@ -7,8 +7,20 @@ What are Relays and how do they work?
|
||||
|
||||
---
|
||||
|
||||
## What are Relays?
|
||||
## What are relays?
|
||||
|
||||
Relays are like the backend servers for Nostr. They allow Nostr clients to send them messages, and they may (or may not) store those messages and broadcast those messages to all other connected clients.
|
||||
|
||||
[//]: # (TODO: IMAGE OF CLIENTS AND RELAYS)
|
||||
The world of relays is changing fast so expect many changes here in the future. One thing to note, because Nostr is decentralized and depends on relays to store and retreive data, if you notice that your Nostr client feels slow, it's most likely due to the relays that you're using. It might be worth adding a few more relays to your client.
|
||||
|
||||
## Where can I find a list of relays?
|
||||
|
||||
The best resource we've found for browsing and assessing the speed of known relays is the [Nostr.watch site](https://nostr.watch/relays/find).
|
||||
|
||||
## What happens if all the relays I use stop working?
|
||||
|
||||
If _all_ the relays that you have used in the past go offline, all your posts will be unretrievable. This is one reason that Nostr allows users to connect to many relays – this ensures some degree of backup. That said, if you're really interested in being uncensorable, you can run your own personal relay.
|
||||
|
||||
## Should I run my own relay?
|
||||
|
||||
For most people, no, it's not worth the hassle. That said, if you're technical and want to ensure that your speech is absolutely uncensorable, then you can and should run your own relay. This ensures that you always have a copy of all your Nostr posts and interactions for all time. We're working on a guide to this but in the meantime, [here is a guide](https://andreneves.xyz/p/set-up-a-nostr-relay-server-in-under) from Andre Neves.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Relays
|
||||
title: Relay Implementations
|
||||
description: A list of Nostr relay implementations
|
||||
---
|
||||
|
||||
This is a list of all known implementations of the Nostr relay spec
|
||||
This is a list of all known implementations of the Nostr relay spec. You only need this if you're planning on running a relay yourself.
|
||||
|
||||
---
|
||||
|
||||
@@ -18,6 +18,7 @@ of the public instances.
|
||||
- [Expensive Relay](https://github.com/fiatjaf/relayer/tree/master/expensive): A reference relay that requires payment for registration
|
||||
|
||||
### C#
|
||||
|
||||
- [NNostr](https://github.com/Kukks/NNostr): A C# relay
|
||||
|
||||
### Rust
|
||||
@@ -48,11 +49,3 @@ of the public instances.
|
||||
|
||||
- [NostrPostr Relay](https://github.com/Giszmo/NostrPostr/tree/master/NostrRelay): A Kotlin Relay supporting both SQLite and Postgresql
|
||||
- [knostr](https://github.com/lpicanco/knostr): A nostr relay implemented in Kotlin with support for Postgres and metrics(micrometer)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -15,9 +15,11 @@ The [Nostr protocol repository](https://github.com/nostr-protocol/nostr) is the
|
||||
|
||||
The [NIPs repository](https://github.com/nostr-protocol/nips) is the home of all Nostr NIPs.
|
||||
|
||||
## Nostr Relays
|
||||
|
||||
- [Nostr.watch](https://nostr.watch/relays/find) is all the info on all the known relays out there.
|
||||
|
||||
## Others
|
||||
|
||||
* [Awesome Nostr](https://github.com/aljazceru/awesome-nostr) is a repository of links for Nostr clients, relay implementations, and more.
|
||||
* [Nostr Resources](https://nostr-resources.com) covers Nostr basics and links to many other resources.
|
||||
|
||||
|
||||
- [Awesome Nostr](https://github.com/aljazceru/awesome-nostr) is a repository of links for Nostr clients, relay implementations, and more.
|
||||
- [Nostr Resources](https://nostr-resources.com) covers Nostr basics and links to many other resources.
|
||||
|
||||
@@ -9,5 +9,28 @@ Events are the atomic unit of the Nostr protocol. This is a short overview of va
|
||||
|
||||
## What is an Event?
|
||||
|
||||
* Thing
|
||||
* Thing 2
|
||||
Events are the only object type on the Nostr network. There are many different kinds of events, which detail the different actions that user might take or messages that might be received.
|
||||
|
||||
A deeper discussion of events is beyond the scope of this site but you can see a list of the various types of events that exist in Nostr below.
|
||||
|
||||
## Event Kinds
|
||||
|
||||
| Kind | Description | Covered in NIP |
|
||||
| ----------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 0 | Metadata | [1](https://github.com/nostr-protocol/nips/blob/master/01.md), [5](https://github.com/nostr-protocol/nips/blob/master/05.md) |
|
||||
| 1 | Text | [1](https://github.com/nostr-protocol/nips/blob/master/01.md) |
|
||||
| 2 | Recommend Relay | [1](https://github.com/nostr-protocol/nips/blob/master/01.md) |
|
||||
| 3 | Contacts | [2](https://github.com/nostr-protocol/nips/blob/master/02.md) |
|
||||
| 4 | Encrypted Direct Messages | [4](https://github.com/nostr-protocol/nips/blob/master/04.md) |
|
||||
| 5 | Event Deletion | [9](https://github.com/nostr-protocol/nips/blob/master/09.md) |
|
||||
| 7 | Reaction | [25](https://github.com/nostr-protocol/nips/blob/master/25.md) |
|
||||
| 40 | Channel Creation | [28](https://github.com/nostr-protocol/nips/blob/master/28.md) |
|
||||
| 41 | Channel Metadata | [28](https://github.com/nostr-protocol/nips/blob/master/28.md) |
|
||||
| 42 | Channel Message | [28](https://github.com/nostr-protocol/nips/blob/master/28.md) |
|
||||
| 43 | Channel Hide Message | [28](https://github.com/nostr-protocol/nips/blob/master/28.md) |
|
||||
| 44 | Channel Mute User | [28](https://github.com/nostr-protocol/nips/blob/master/28.md) |
|
||||
| 45-49 | Public Chat Reserved | [28](https://github.com/nostr-protocol/nips/blob/master/28.md) |
|
||||
| 22242 | Client Authentication | [42](https://github.com/nostr-protocol/nips/blob/master/42.md) |
|
||||
| 10000-19999 | Replaceable Events Reserved | [16](https://github.com/nostr-protocol/nips/blob/master/16.md) |
|
||||
| 20000-29999 | Ephemeral Events Reserved | [16](https://github.com/nostr-protocol/nips/blob/master/16.md) |
|
||||
| 30000-39999 | Param. Repl. Events Reserved | [33](https://github.com/nostr-protocol/nips/blob/master/33.md) |
|
||||
|
||||
@@ -3,15 +3,18 @@ title: Nostr Implementation Possibilities (NIPs)
|
||||
description: Documentation on what must, should, and may be implemented by Nostr.
|
||||
---
|
||||
|
||||
Quasi sapiente voluptates aut minima non doloribus similique quisquam. In quo expedita ipsum nostrum corrupti incidunt. Et aut eligendi ea perferendis.
|
||||
What are NIPs and why should you care about them?
|
||||
|
||||
---
|
||||
|
||||
## How does Nostr work?
|
||||
## What is a NIP?
|
||||
|
||||
* There are two components: clients and relays. Each user runs a client. Anyone can run a relay.
|
||||
* Every user is identified by a public key. Every post is signed. Every client validates these signatures.
|
||||
* Clients fetch data from relays of their choice and publish data to other relays of their choice. A relay doesn't talk to another relay, only directly to users.
|
||||
* For example, to "follow" someone a user just instructs their client to query the relays it knows for posts from that public key.
|
||||
* On startup, a client queries data from all relays it knows for all users it follows (for example, all updates from the last day), then displays that data to the user chronologically.
|
||||
* A "post" can contain any kind of structured data, but the most used ones are going to find their way into the standard so all clients and relays can handle them seamlessly.
|
||||
A Nostr Implementation Possibilty, or NIP for short, exist to document what MUST, what SHOULD and what MAY be implemented by Nostr-compatible relay and client software. It is a document outlining how the Nostr protocol works.
|
||||
|
||||
## Why should I care?
|
||||
|
||||
Nostr is decentralized and not owned by a centralized service (like Twitter). This means that the direction of the protocol is up to all of us! We can suggest and advocate for changes and offer feedback on ideas suggested by others. Being an active part of the community gives you a say in the direction of the network. NIPs published in the main repository are already approved. Adding new ideas is done via Pull Request on that repo.
|
||||
|
||||
## Where can I find NIPs?
|
||||
|
||||
You can see all current NIPs in the [Nostr NIP repo](https://github.com/nostr-protocol/nips).
|
||||
|
||||