Introduction — Mostro, le P2P Bitcoin dans l’esprit de Satoshi
Mostro est un protocole d’échange Bitcoin ↔ fiat construit entièrement sur Nostr, sans intermédiaire, sans plateforme, sans garde, sans KYC. Ce n’est pas un exchange : c’est un protocole.
Deux individus peuvent échanger de la valeur directement grâce à :
- un ordre public (NIP‑69)
- des mises à jour immuables (NIP‑33)
- des messages privés chiffrés (NIP‑59)
- un daemon qui orchestre l’échange sans jamais détenir les fonds
Mostro applique la vision de Satoshi : pair‑à‑pair réel, messages signés, réseau ouvert, vérification indépendante. C’est un outil d’autonomie et de souveraineté.
1. Lire l’orderbook Mostro
Pour lire les ordres Mostro, l’outil le plus efficace est NostrDebug : nostrdebug.com/relay.
Ordres pending
["REQ","nostrfr-1",{
"kinds":[38383],
"#s":["pending"],
"#z":["order"],
"limit":50
}]
BUY uniquement
["REQ","nostrfr-buy",{
"kinds":[38383],
"#k":["buy"],
"#s":["pending"],
"#z":["order"]
}]
SELL uniquement
["REQ","nostrfr-sell",{
"kinds":[38383],
"#k":["sell"],
"#s":["pending"],
"#z":["order"]
}]
Ordres EUR
["REQ","nostrfr-eur",{
"kinds":[38383],
"#f":["EUR"],
"#s":["pending"],
"#z":["order"]
}]
Ordre précis (UUID)
["REQ","nostrfr-one",{
"kinds":[38383],
"#d":["<UUID>"]
}]
2. Passer un ordre Mostro (EVENT 38383)
Passer un ordre = publier un event signé via NIP‑07, envoyé au relay Mostro :
wss://relay.mostro.network.
Tags obligatoires
d— identifiant uniquek— buy / sellf— fiats— statut initialamt— montant satsfa— montant fiatpm— méthode de paiementpremium— premium %network— mainnetlayer— lightningz— order
3. Exemple : achat 100€ en espèces (cash)
UUID : cash-eur-100-fr-2026
Montant sats : 300000
Timestamp : 1778202000
Event non signé
{
"kind": 38383,
"created_at": 1778202000,
"tags": [
["d", "cash-eur-100-fr-2026"],
["k", "buy"],
["f", "EUR"],
["s", "pending"],
["amt", "300000"],
["fa", "100"],
["pm", "Cash (rdv via Nostr)"],
["premium", "0"],
["network", "mainnet"],
["layer", "lightning"],
["z", "order"]
],
"content": ""
}
Signature via nos2x
let ev = await window.nostr.signEvent({...})
Publication
["EVENT", { ...event_signé... }]
4. Prendre un ordre (NIP‑59)
Prendre un ordre = envoyer un message privé chiffré au daemon Mostro (EVENT 1059).
["EVENT",{
"kind":1059,
"created_at":1778202500,
"tags":[
["p","<pubkey_daemon>"],
["d","cash-eur-100-fr-2026"]
],
"content":"{\"type\":\"take-order\",\"d\":\"cash-eur-100-fr-2026\"}",
"sig":"<signature>"
}]
5. Suivre un ordre (NIP‑33)
Mostro met à jour un ordre via des events 38383 partageant le même d.
["REQ","nostrfr-follow",{
"kinds":[38383],
"#d":["cash-eur-100-fr-2026"]
}]
6. Installer nos2x (NIP‑07)
Installation
- Chrome :
https://chrome.google.com/webstore/detail/nos2x/npbghhgfgnkakjkjgfgjbljcgopglcbo - Firefox :
https://addons.mozilla.org/en-US/firefox/addon/nos2x/ - Source : github.com/fiatjaf/nos2x
Tester la signature
window.nostr.getPublicKey()
window.nostr.signEvent({ kind:1, content:"test" })
7. Workflow souverain complet
- Lire : NostrDebug
- Passer un ordre : nos2x + WebsocketKing
- Prendre un ordre : nos2x + app Mostro
- Suivre : NostrDebug
- Héberger : GitHub Pages / Neocities
Conclusion
Avec NostrDebug, WebsocketKing et nos2x, Mostro devient un protocole transparent, inspectable et souverain. Un échange Bitcoin ↔ fiat sans intermédiaire, fidèle à l’esprit originel de Bitcoin.
Sources (version courte)
- Mostro — GitHub MostroP2P
- Nostr — NIP‑01, 07, 33, 59, 69
- Outils — NostrDebug, WebsocketKing, nos2x
- Bitcoin — Whitepaper de Satoshi Nakamoto