Skip to content

bilthon/p2psats

Repository files navigation

P2P sats

Live peer-to-peer Bitcoin order book aggregated from Nostr relays.

P2P sats — live peer-to-peer Bitcoin order book aggregated from Nostr relays

Live site: https://p2psats.com

What it is

P2P sats is a read-only aggregator of peer-to-peer Bitcoin orders. It connects to public Nostr relays where platforms like RoboSats, HodlHodl lnp2pbot, Mostro and Peach broadcast their offers under NIP-69, parses the events, and renders everything as a unified order book with depth chart, spread, and crossed-pair detection.

No accounts. No orders posted from here. No funds touched. Just a window into what's already public on the relays.

Why

The P2P Bitcoin market is fragmented. Liquidity, prices, and payment methods are spread across separate apps and bots, each with its own siloed slice of the order flow. To find the best ask you currently have to flip between four different UIs. Most people just don't bother, and liquidity stays thin where it could be deep.

P2P sats unifies the view to (hopefully) make the market stronger, especially for users in regions where non-KYC and local payment methods are essential.

Features

  • Live aggregation from four NIP-69 relays (Mostro, lnp2pbot, RoboSats, Peach)
  • Depth chart with bid/ask area and a Yadio reference price line
  • Spread, mid-price, best bid/ask, total depth on both sides
  • Crossed-pair detection (cross-platform arbitrage candidates)
  • 9 quote currencies (USD, EUR, BRL, ARS, MXN, VES, ZAR, RUB, PEN)
  • 3 locales: English, Spanish (es-419), Brazilian Portuguese (pt-BR)
  • Statically prerendered (vite-ssg) for fast first paint and SEO
  • Mobile-friendly responsive layout

Supported relays

Platform Relay Status
Mostro relay.mostro.network active
lnp2pbot relay.lnp2pbot.com active
RoboSats nostr.robosats.org active
Peach relay.peachbitcoin.com active

Adding a new platform is mostly a matter of identifying its NIP-69 relay and adding it to src/lib/data.ts. PRs welcome.

Quick start

Requires Node 22.12+ (see .nvmrc).

git clone git@github.com:bilthon/p2psats.git
cd p2psats
nvm use            # picks up .nvmrc
npm install
npm run dev        # http://localhost:5173

Other scripts

npm run type-check   # vue-tsc
npm run build        # vue-tsc + vite-ssg prerender (4 static HTML pages)
npm run preview      # serve dist/

Environment

Optional:

VITE_SITE_URL=https://p2psats.com   # used for canonical URLs and og:image

Project structure

src/
  views/        Home, Alerts, About, Contact
  components/   OrderBook, DepthChart, ArbitrageBanner, dialogs, switchers
  services/     nostrOrderbook (SimplePool subscription), btcRates (Yadio)
  lib/
    nip69/      NIP-69 event parser
    orderAdapter.ts   raw NIP-69 -> UI Order
    arbitrage.ts      crossed-pair detection
    data.ts           source / relay / payment-method registry
  stores/       Pinia app store
  i18n/         vue-i18n setup + locale JSON files
public/
  og.svg, og.png    social card (source + rendered)

Tech stack

Regenerating the OG image

The social card source lives at public/og.svg. After edits:

rsvg-convert -w 1200 -h 630 public/og.svg -o public/og.png

(brew install librsvg if you don't have rsvg-convert already.)

Contributing

Issues and PRs welcome. Easy first contributions:

  • Add a new NIP-69 relay (src/lib/data.ts, src/services/nostrOrderbook.ts)
  • Add a payment-method label (src/lib/data.ts)
  • Translation improvements (src/i18n/locales/*.json)
  • Bug reports for anything that looks wrong in the order data

Before opening a PR, please run npm run type-check && npm run build so the prerender still passes.

Related work

  • p2p.band by KoalaSat does something very similar. P2P sats was built independently; the more frontends on this public data, the better.
  • The NIP-69 spec, without which none of this would exist.
  • The RoboSats, lnp2pbot, Mostro and Peach teams, for publishing their order data openly to Nostr.

License

MIT © Bilthon

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors