[⚡] usenostr

nostr est un protocole

sur lequel on peut construire plein de choses.

Nostr n'est pas une appli. C'est un protocole ouvert, léger, simple et extensible qui permet de construire des réseaux vraiment résistants à la censure et décentralisés. Réseaux sociaux, messagerie, paiements, blogs, places de marché. Personne n'en est le propriétaire.

Le protocole repose sur des relais. Les relais sont des serveurs que n'importe qui peut faire tourner. En ouvrant une connexion persistante à un relais, les clients (les applis que vous utilisez) envoient et récupèrent des événements en temps réel. Personne ne peut vous expulser.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

sommaire

  1. 01 clés et comptes
  2. 02 événements
  3. 03 relais
  4. 04 zaps
  5. 05 messages privés
  6. 06 ce que vous pouvez en faire
  7. 07 construire sur nostr
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

01

clés et comptes

Sur Nostr, vous n'avez pas besoin de vous inscrire avec des données personnelles. Pas d'email, pas de téléphone, pas de mot de passe.

Comme avec Bitcoin, il vous suffit d'une paire de clés. Deux clés, pour être précis :

clé publique npub1…

Elle servira de nom d'utilisateur. Elle peut être partagée et sera publique pour tout le monde.

clé privée nsec1…

C'est comme votre mot de passe. Vous devez la garder secrète (d'où le nom). Elle vous donne accès à votre compte sur toute plateforme qui parle Nostr.

Vous devez sauvegarder votre clé privée. C'est le seul moyen de récupérer votre compte et de vous reconnecter plus tard.

obtenir une paire de clés

Le plus simple est de passer par nstart.me. Il génère une paire de clés, vous guide pour la sauvegarde, vous laisse choisir un nom et de bons relais, puis vous redirige vers le client de votre choix.

La plupart des clients peuvent aussi générer des clés au premier lancement. Les deux marchent, mais pour une première fois, le flux Nstart ci-dessus est plus accueillant.

signers : ne collez pas votre nsec dans n'importe quoi

Votre nsec est la clé de chez vous. La coller dans une appli de confiance qui la garde uniquement sur votre appareil, ça va (beaucoup de bons clients fonctionnent comme ça), mais dès que vous la collez dans quelque chose que vous ne connaissez pas bien, elle n'est plus secrète. Par défaut, mieux vaut laisser un signer (signataire) garder la clé et signer les événements pour le compte des applis que vous utilisez.

  • Amber sur Android.
  • nsec.app dans le navigateur, sans installation.
  • nos2x ou Alby en extensions de navigateur.

un identifiant lisible (NIP-05)

Un npub1…, ce n'est pas très mémorisable. NIP-05 vous permet de réclamer un identifiant plus sympa comme alice@example.com en hébergeant un petit fichier JSON sur un domaine que vous contrôlez. Ce n'est pas un registre central, juste du DNS.

infos du profil

Vous pouvez attacher des métadonnées à vos clés : un nom affiché, une bio, un avatar, une bannière. La plupart des clients vous laissent tout éditer. En coulisse, c'est juste un autre événement signé.

Le protocole Nostr est extensible via les NIPs (Nostr Implementation Possibilities). Les NIPs sont les specs que les gens écrivent quand ils veulent ajouter quelque chose au protocole. NIP-01 est le cœur ; tout le reste est optionnel.

02

événements

Le seul type d'objet qui existe sur Nostr, c'est l'événement. Les événements sont de petites structures signées, uniquement textuelles. Tout ce que votre client envoie à un relais est un événement : une publication, une réponse, un like, une mise à jour de profil, un zap, un message privé, un article long.

Voici à quoi ressemble un événement :

// kind 1, une note en texte brut
{
  "id":         "c011…4c43",
  "pubkey":     "dec1…4fb3",
  "created_at": 1761522400,
  "kind":       1,
  "tags":       [],
  "content":    "bonjour !",
  "sig":        "e1dc…5f1"
}

Décomposons :

  • Les champs content et created_at parlent d'eux-mêmes.
  • L'id est un identifiant unique pour cet événement. C'est comme ça que le réseau y fait référence.
  • La pubkey est la clé publique (l'utilisateur) qui a créé l'événement.
  • La sig est une preuve cryptographique que celui qui a publié l'événement possède la clé privée associée à cette pubkey.
  • Le champ tags peut contenir n'importe quelles étiquettes : références à d'autres événements, à d'autres utilisateurs, à des URLs, à des hashtags. Quand vous répondez à une note, par exemple, son id se retrouve dans une tag ici.

les kinds

Le kind de l'événement est l'une des parties les plus intéressantes de Nostr. C'est un nombre qui indique de quel type d'événement il s'agit. Le truc intéressant : il n'y a pas de limite aux kinds, donc on peut en inventer de nouveaux pour ce qu'on veut construire.

Quelques kinds courants :

  • 0 infos de profil (nom, bio, photo)
  • 1 une note de texte court (le « tweet »)
  • 3 votre liste de contacts (qui vous suivez)
  • 6 un repartage
  • 7 une réaction (like, emoji)
  • 1059 un message privé (NIP-17)
  • 9735 un reçu de zap (NIP-57)
  • 10002 votre liste de relais (NIP-65)
  • 30023 un article long (NIP-23)
  • 30311 un live stream

La liste complète vit dans le dépôt des NIPs. Tout le monde peut en proposer un nouveau.

03

relais

Les relais sont une pièce essentielle de Nostr. Ils reçoivent les événements des clients, les stockent et les transmettent à ceux qui sont abonnés. C'est tout ce qu'ils font.

Les relais ne se parlent pas entre eux. Seuls les relais auxquels vous êtes connecté vont recevoir et stocker vos événements. C'est important, ça vaut le coup de le répéter : les relais ne communiquent pas entre eux.

Vous avez intérêt à être connecté à plusieurs relais. Les clients vous laissent en choisir autant que vous voulez, et vous pouvez décider si vous voulez lire, écrire, ou les deux sur chacun. Par exemple, vous pouvez vous connecter à un relais juste pour lire, sans rien y publier.

Si je suis connecté uniquement au relais A et que vous êtes uniquement sur le relais B, on ne verra pas les publications de l'autre, même si on est tous les deux sur Nostr. Pour régler ça, il faut que l'un de nous se connecte à un relais que l'autre utilise aussi.

Ça peut paraître déroutant au début, mais c'est en fait une propriété très utile. Vous pouvez faire tourner un relais que vous ne partagez avec personne et y publier tous vos événements comme sauvegarde personnelle. Vous pouvez vous connecter à un relais dédié au football, et si le football ne vous intéresse pas, vous ne l'ajoutez pas, c'est tout.

le modèle outbox

Pour qu'on arrête de deviner, il y a NIP-65. Vous publiez un petit événement qui dit « voici les relais sur lesquels j'écris, voici ceux que je lis ». Les clients modernes (Damus, Amethyst, Primal, Coracle et d'autres) lisent cette liste et trouvent tout seuls où chercher.

Si quelqu'un n'arrive pas à voir vos publications, c'est presque toujours parce que vous ne partagez pas un relais. Publiez sur deux ou trois relais populaires et sur le vôtre, et le problème disparaît.

contre la censure

Les relais sont peu chers et faciles à faire tourner. Un relais peut tourner sur un petit VPS, voire un téléphone d'entrée de gamme. Comme les relais ne se parlent pas entre eux, en éteindre un n'affecte pas les autres. Si quelqu'un essaie de faire tomber un relais, un autre peut apparaître ailleurs en quelques minutes.

Il y a des centaines de relais répartis dans le monde, et le nombre continue de grandir.

→ guide : montez votre propre relais

04

zaps

Un des trucs les plus cool de Nostr, ce sont les paiements Bitcoin natifs. Un zap est un pourboire Lightning attaché à une publication ou un profil. Vous tapez sur un petit éclair, des sats bougent, et un reçu public apparaît sur la publication.

Les zaps ne sont pas juste des pourboires. C'est un signal plus fort qu'un « j'aime » : un like ne coûte rien, un zap coûte quelque chose. Les publications populaires affichent souvent le total de zaps à côté du compteur de réponses et de repartages.

1
vous tapez ⚡

Votre client construit une demande de zap et l'envoie à votre portefeuille.

2
le portefeuille paie

Le portefeuille paie une facture Lightning du destinataire.

3
le reçu apparaît

Un reçu de zap public est publié. Tout le monde le voit sur la publication.

les zaps en un tap

Pour que zapper soit aussi simple que liker, les clients utilisent Nostr Wallet Connect (NWC). Vous collez un lien nostr+walletconnect:// de votre portefeuille dans le client une seule fois, et ensuite les zaps se font en un tap. Plus de QR code, plus de copie de facture.

Portefeuilles compatibles NWC : Alby Hub, Primal Wallet, Coinos, Zeus et Phoenix.

Pour recevoir des zaps, il vous faut une adresse Lightning, du genre vous@getalby.com. La plupart des portefeuilles modernes vous en fournissent une automatiquement.

05

messages privés

Vous pouvez envoyer des messages privés chiffrés de bout en bout à d'autres utilisateurs. La façon moderne de le faire, c'est NIP-17, aussi appelés messages emballés (gift-wrapped). Chaque message est chiffré, puis emballé dans un événement extérieur, de sorte que les relais ne peuvent même pas savoir qui parle à qui, ni quand.

!

La spec de DMs d'origine (NIP-04, kind 4) fuitait des métadonnées. Si un client ne supporte que le kind 4, ses DMs ne sont pas vraiment privés. La plupart des clients ont migré ; utilisez-en un qui supporte NIP-17.

Clients avec DMs modernes : Damus, Amethyst, Primal, 0xchat et Coracle.

Pour le chat de groupe, il y a NIP-29, qui met les groupes dans un relais (un peu comme les salons Discord). Regardez Flotilla pour ça.

06

ce que vous pouvez en faire

Comme on l'a dit plus haut, Nostr est un protocole très flexible pour partager des données. Les gens peuvent construire ce qu'ils veulent par-dessus. C'est encore jeune, mais voici un aperçu de ce qui fonctionne déjà :

🐦 alternative à twitter

Nostr est né comme alternative à Twitter, et il y a beaucoup de clients dans cette lignée. Tous utilisent des notes de kind 1. Les plus populaires :

Essayez-en deux ou trois et gardez celui qui vous plaît.

📝 blogs et formats longs

Pour écrire des textes plus longs à la place des notes courtes, il y a Yakihonne et Highlighter. Les publications sont portables d'un client à l'autre, comme tout le reste.

🔐 chat privé

Vous pouvez envoyer des messages E2E et faire des appels voix/vidéo avec 0xchat, une appli façon Signal construite sur Nostr. Nostrchat est une option web plus légère.

💬 groupes et communautés

Flotilla vous offre du chat de groupe façon Discord par-dessus Nostr. Les groupes vivent sur un relais, que vous ou quelqu'un d'autre peut héberger.

🎥 streaming et médias

zap.stream pour la vidéo en direct (avec des zaps pendant la diffusion), Flare pour héberger des vidéos, et Fountain et Wavlake pour les podcasts et la musique.

🛒 places de marché

Plebeian Market et Shopstr vous permettent d'acheter et vendre des choses en sats sans intermédiaire.

🧩 jeux

On peut même construire des jeux multijoueur sur Nostr. Jester, par exemple, c'est des échecs en ligne via Nostr.

🔍 explorateurs et outils

njump.me transforme n'importe quel lien nostr: en page web partageable. ants.sh est un client de recherche pour trouver des notes et des profils. nostr.watch montre l'état du réseau de relais.

Une liste plus complète se trouve sur nostrapps.com et nostr.net.

07

construire sur nostr

Il reste beaucoup à construire sur Nostr. Un client, c'est n'importe quoi qui ouvre un WebSocket et s'abonne. Un relais, c'est n'importe quoi qui accepte du JSON signé via WebSocket. La barre est basse.

Quelques ressources pour démarrer :

« Noster » signifie « notre » en latin. « Nostra » signifie « notre » en italien, et « Nuestro » en espagnol. Un nom bien trouvé pour un réseau qui n'appartient à personne.