Kihagyás

Nostr Compass #30 — 2026-07-08

Eredeti forrás: nostrcompass.org/en/newsletters/2026-07-08-newsletter/

Vezértörténetek

Marmot: a spec „adopted” státuszba került, MDK v0.9.0–v0.9.3

A Marmot Protocol repó július 3-án egy PR-rel 42 fájlt váltott át Status: draft for internal review-ről Status: adopted-re. A README címe is változott, a MIP-korszak dokumentumai elavultnak jelöltek, a „v2” labelek eltűntek, a „Review Status” szekció pedig „Review Guidance”-dá alakult. Két fájl szándékosan maradt draft: az implementation-model.md (nem normatív) és a multi-device feature saját doc-ja. Két további PR (admin-policy / membership invariantok, wire-boundary validation) szigorítja a komitensek érvényességét és a KeyPackage 84 nap + 1 óra skew ablakát.

Az MDK workspace v0.9.0–v0.9.3-at vágott négy nap alatt: validate-before-mutate storage discipline, egy host-safety dial az összes kimenő kapcsolatra (egységesített hálózati validáció), valamint encrypted group avatar-ok és külső signer támogatás a uniffi bindingokon. A MarmotKit iOS (xcframework + Swift) és Android (Kotlin + JNI) bindingok azonos MDK commit hash-re pin-elve release-elődnek. Új wn-agent release channel shell installer-ekkel.

Mostro v0.18.0 + Mobile v1.3.0: Transport v2 NIP-44-en

A mostrod daemon átállt Transport v2-re: NIP-44-es DM-ek, anti-spam kapuk, dual-receive a szerver oldalon. A Phase 1–3 PR-ek (v2 wire, anti-spam gate, dual-send/dial-receive) mellett Phase 4 unified live-quote path cache-and-staleness enforcement-tel, El Toque fiat-cross provider CUP/MLC párokra, és slashed-party notification a dispute bond slash után. A Mobile kliens Riverpod 3.x-re migrált, és kibővítette az afrai fizetési módokat (MWK, KES, MZN, TZS, UGX, ZAR, ZMW, illetve bővített NGN). A restore flow megvárja a node connectivity-t, és külön kezeli a dispute vs timeout slash-t.

Bitchat 1.6.0: NIP-13 PoW + opt-in mesh-to-Nostr gateway

Két Nostr-alakú feature. (1) NIP-13 PoW a kind 20000 geohash channel üzenetekre: 8 leading zero bit target, <1 ms M-series Mac-en, validált PoW-jú bejövő event lazítja a per-sender intake rate limitet. (2) Gateway mode: ha egy mesh-only user egy .gateway képességű peer közelében van, az aláírt kind 20000 event MessageType.nostrCarrier = 0x28 TLV envelope-ban feljut a Nostr-ra, a gateway lepublisholja és a bejövő forgalmat visszaszórja a mesh-re (disaster / protest scenario-kra). A signature azelőtt készül, hogy az event elhagyja a sendert — a gateway nem forge-olhat attribúciót. Továbbá: prekey bundle-ök (async first contact courier mail-en), transitive verification (1-hop trust propagation), creator-managed encrypted private groups, Cashu ecash redeem /pay paranccsal, persistent signed geohash bulletin board, open couriers spray-and-wait routing-gal és 6 órás public history ablakkal.

Címkézett release-ek

  • Amber v6.2.3 — profile fetch interval beállítás (never/always), profile kép az account switcherben, profile subscription-ök per-account scoping; NIP-65 relay list fetch a profile metadata előtt; Tor notification élő státusz indikátorrá vált restart akcióval; Android Lint strict warnings-as-errors mód.
  • Jumble v26.7.1 — Blossom az alapértelmezett upload service (NIP-96 helyett); mobile DM menu, „scroll to latest”, long-press reactions, retry path a failed outgoing DMs-re; custom emoji detail view, Linux ARM64 build-ek.
  • Applesauce signers 6.2.2 — @sandwichfarm/encoded-entities függőség elhagyva, beépített nbunksec helper; eggyel kevesebb supply-chain surface a NIP-46 bunker session encoding-hoz.
  • Ngit v2.6.2 — git push a default branch-re nem publishol duplikált PR merge/applied státusz event-eket (pre-push Nostr repo state az authority, nem a git heurisztika).
  • Bray v1.33.0 — bunker --profile auto-stable connection key + relay fallback; bunker --persona derived nsec-tree identity; Tor SOCKS proxy minden HTTP fetch-re; NIP-47/NIP-29/NIP-86/NIP-65 wallet subcommand-ok; --jsonl/--csv/--tsv output flag-ek, req/event/publish-raw/bunker sign verbek; reproducibilis npm tarball (533,844 byte, két független CI runner).
  • Deepmarks 1.0.0 — IPv6-literal SSRF bypass fix [::1]/[fd00::1]/IPv4-mapped címekre; kind:0 profile-ok signature verify az ingest-nél; kind:39701 d-tag-ek scheme-checked minden render sink-en; zap receipt-ek túlélnek egy bunker outage-et (atomic claim, post-sign finalize, release on failure); /publish fan-out BLMOVE-val heartbeat-gated recovery-vel.
  • Bitcredit Core v0.5.13 — block metadata (id, hash, signature) immár unencrypted a Nostr wire-ön, csak a block data marad bill key-jel titkosítva; optimista threshold model a publish-ra (1 relay default threshold, async fan-out).
  • Coop Mobile v0.2.3 / v0.2.4 — inline image/link render, image attachment, speech-to-text, contact removal confirm; stuck indicator fix, Nostr Connect handshake javítás, ncryptsec1 import (NIP-49) + redesignelt import identity screen.
  • Granary v11.0 — NIP-71 video event-ek (kind 21/22/34235/34236) ActivityStreams 1 note-okká konvertálva; imeta thumbnail, video duration, published_at és alt fallback displayName; sign → hash_and_sign, verify raises ValueError; NIP-42 AUTH gracefully skipped ha nincs privkey.
  • Nostr-relay v0.0.244 — Firestore backend a Go relay-hez (mattn), managed serverless DB opció.
  • Manent v1.4.0 — NIP-42 AUTH fix, Blossom upload http:// korrekció, compression flow rewrite; image clipboard copy/paste, drag-drop, crop/rotate, video/gif playback, long-press camera; Linux middle-click primary clipboard.
  • Routstrd v0.3.7 — routstrd update subcommand (graceful restart); 21 percenkénti refreshNostrEvents(); a Nostr event store a persistent source of truth (210 perces TTL törölve); Xcashu refund retry 3×, 425 Too Early handling.
  • Nymchat 1.0.1 — PWA + iOS/Android messenger, ephemeral chat Nostr/Bitchat bridge; kind 20000/23333 channels, NIP-17 gift wrap DM-ek forgó ephemeral recipient key-ekkel; NIP-07/NIP-46/nsec login; WebAuthn PRF / PBKDF2 device-local identity encryption; NIP-17 signaling + WebRTC media; Cloudflare Pages Functions privacy proxy.
  • 21Meetup 1.1.0 — Flutter app az Einundzwanzig német Bitcoin közösségnek; NFC tag + 10 másodperces rolling QR; kind 21000 attendance badge BIP-340 Schnorr aláírással a meetup organizertől; lokális trust score a badge-ekből, QR-ben prezentálható P2P trade verification-re.
  • Nostrord v2.0.0 / v2.1.0 — KMP/WASM Nostr kliens; v2.0.1 kritikus desktop fix (java.sql modul jpackage jlink image-be, plus routing az optimistic send a network layer-re); v2.1.0 relay pool fold (NIP-29 socket a shared poolba, egységes reconnect scheduler, NIP-42 AUTH retry, fail-closed publish), PR #179 zombie WebSocket detekció Androidon (Doze / mobile network silent TCP kill, lastInboundAtMs stamp, markDead() + probeLiveness() 5 másodperces REQ bármelyik relayre).

Unreleased work

  • rust-nostr PR #1384 — GiftWrapBuilder és PrivateDirectMessageBuilder kapnak expiration opciót (Duration, NIP-40 tag a wrap randomizált created_at-jához anchor-ölve, nem absolute timestamp — különben send time leak). NIP-17 ugyanazt az értéket adja le. PR #1387: nostr-relay-builder összevonva a nostr-sdk-ba.
  • Amethyst — 43 PR, három fő téma: (1) negentropy sync hardening a geode↔strfry határon (refused-window backoff, v1.1.1 függőség, 1M-event benchmark strfry-parity mirror-ral, lock-free concurrent collections); (2) NIP-50 full-text search infra (SearchableEvent interface, NIP-50 extension strip a SQLite FTS előtt, centralizált default search relays); (3) niche verticals: Birdstar kind 2473 bird-detection, PS1 memory-card save state kind 38192, compose-signature auto-append, privacy lock a Messages oszlopon, equals/hashCode fix az OpenTimestamps verify path-ban.
  • Buzz (volt Sprout) — 123 PR július 1–7.: (1) kind 44200 NIP-AM agent turn metrics-nek (signed event a user relay-én, lokális archívummal, modellnév a turn-ben); (2) relay perf (post-commit dispatch defer + verify clone elkerülés, batched ingest/fan-out p99 ack 7–16% / p999 tail 29–53% drop, bounded-concurrency multi-filter, batched WebSocket send); per-community workspace icon NIP-11 extension, agent owner kind:5 delete, OpenTelemetry + Prometheus, git repo-name registry → Postgres.
  • Divine Video mobile — 97 PR: trust boundary hardening (PR #5774 inbound event signature verify, PR #5828 FCM push token encrypted a kind-3080 dereg event-ben, PR #5831 chunked kind:5 deletion REQ); NostrConnectCoordinator extraction a nostrconnect:// flow-hoz (NIP-46 client-initiated bunker cleanup, issue #4741 előkészítés); kind-16 repost mapping ha notification_type hiányzik.
  • Zap Cooking frontend — 18 PR: bunker login fix explicit connect handshake + error surfacing (PR #503); NIP-98 auth az extract-recipe upload pathokon (PR #495); NIP-50 recipe search a nostrarchives backend-en (PR #483); quoted-note + media inline render, link preview, hashtag sizing, multi-word search, server-side OG cards.
  • swift-nostr-client v0.6.0 — 30 PR, közelít az első stabil API surface-hez a Swift Nostr klienseknek MDK/MarmotKit nélkül.
  • Nostr Applet Protocol (NAPS) — NAP-OUTBOX szigorítása: kevesebb caller-controlled routing, kevesebb leaked relay detail, shared event result shape relay hints + resource sidecar-okkal (NAP-RESOURCE); explicit outbox/inbox/relay fanout szabályok.
  • Napplet toolchain — NAP-COUNT query, OUTBOX runtime-owned lifecycle, RelayEventResult sidecar-ok, CVM registry, DM error envelope, MEDIA session context, LISTS count, COMMON profile results, htree: RESOURCE séma. Új @napplet/cli: config discovery, deploy planning, signing, Blossom uploads, manifest generation. Host-injectable shim prelude, JSR readiness.
  • primal-android — 18 PR: switch_relays és logout a remote-signer role-hoz (PR #1075), splash-gated local app-migration framework (PR #1083), note-feed prefetch a splash view-model-ben (PR #1080).
  • Wisp — 9 PR: multi-account switcher explicit cancel path (PR #604), Blossom.parseServerList unit tesztek (PR #613), zap sheet iOS rewrite (PR #574), transaction history swipe-up bottom sheet (PR #605), non-ASCII hashtag parser (PR #611), inline gallery media a profile notes feed-en (PR #609), blank line preservation (PR #603).
  • TAO + Wired — 13 PR: default post-signal PoW target → 21 leading zero bit (PR #84); feed roots from fresh PoW activity a timeline ranking-hoz nyers event age helyett (PR #80); custom emoji picker restore (PR #75); first-frame video preview (PR #65). A második NIP-13-as kliens ezen a héten a Bitchat után.
  • keep-android v1.1.5 / v1.1.6 — NIP-46 challenge flow UX polish; TOCTOU race fix set_active_share-ben; NIP-98 approval prompt URL + method surfacing; RNG health check fail-closed (panic helyett error); v0.5.0 keep core pin (threshold-OPRF unlock, software DKG, HD FROST wallet-ek CLI-only, app-ba még nem kerültek).
  • Heartwood v0.7.0 — relay-to-serial signing bridge (PR #11), serial-frame coverage + device read_frame payload offset fix (PR #13), heartwood-frame crate extraction (PR #14). HSM-mode data plane Bray serial-signer path-hoz.
  • SafeBox — Phase 3 lényegében complete: 49 commit az áprilisi riport óta (1136 összesen); mutating NWC actions queue-ölve proof race-ek ellen, failed Lightning melts protect proofs, long-lived NWC listeners proaktív refresh, LNURL callback canonical origins + explicit JSON/CORS; QR/NFC record exchange unified flow spec (recipient-presented, sender-presented, cross-device) KEM handling + replay protection OQS-sel; FreeBSD jail deployment + liboqs build runbook (commit 6866dae); OpenETR spin-off (electronic transferable records — bills of lading, warehouse receipts, promissory notes, certificates) 7 commit július 7-én.

Protokoll munka és NIP frissítések

  • Merged: NIP-51 + NIP-37 name alignment (PR #2404) — a kind 10013 neve mostantól konzisztensen Relay List for Private Content a NIP-51 Draft relays szekciójában is. Nincs wire change.
  • Open: NIP-AD — Nostr Web Addresses (PR #2406) — .well-known/nostr.json?ad=/path lookup, ami path → {filter, relays} mapping-ot ad vissza. Standard NIP-01 filter, szabadon variálható limit. Ugyanaz a domain HTML-t szolgáltat web böngészőknek és Nostr klienseknek egy kanonikus path-ról. Use case-ek: NIP-29 group name → kind 39000 lookup (nincs többé group id farming), NIP-5A nsite, hosted feed {"ids": [...]}, beillesztett njump.me/nevent1... natív render, Nostr-fueled blog. Statikus fájl is lehet.
  • Open: NIP-86 claim management invite code-okra (PR #2408) — három új RPC method: listclaims, createclaim, deleteclaim. Community-relay onboarding flow: admin fizetés előtt create-eli a claimet, user a kind 28935 claim event-re válaszol, bot auto-assignolja a role-t.
  • Open: role color HSL tuple (PR #2402) — NIP-43 role color hue (0–360) → (hue, saturation, lightness). Empty string bármelyik komponensben megengedett (client default). NIP-86 createrole/editrole signature frissül: [id, label, description, [h, s, l], order]. Motiváció: hue alone kliensenként más intenzitást eredményez.
  • Open: NIP-80 — hardware-attested media provenance (PR #2409) — kamera capture pillanatában ír alá, a proof a content által kulcsolva relay-re kerül (túlél metadata strip / re-host / takedown). Hat új kind: 1080 (capture attestation), 1081 (derivation: resize/crop/recompress/redact, reveal mode vagy ZK opció), 1082 (revocation, monotonic, author-scoped), 11080 (device announcement), 31080 (device endorsement), 31081 (device set, experimental, lehet külön NIP). Reused: NIP-94 x-tag, NIP-92 imeta, NIP-65 revocation discovery, Blossom storage, NIP-03 timestamp anchoring opcionális. Signing: BIP-340 device key + hardware ECDSA key (Microchip ATECC608 P-256, NXP SE050 secp256k1 ECDSA-only, TPM 2.0 P-256/RSA, Apple SE / Android StrongBox P-256). Explicit scope: nem bizonyítja, hogy a scene valódi, csak hogy ez az image ebből az eszközből ekkor jött, és csak deklarált, provable módon módosították. Tilos „authentic” bare badge-re collapse-olni. Működő prototype: OpenVeilCam (Rust, Raspberry Pi, ATECC608).
  • Open: NIP-01 pagination hardening (PR #2407) — új „Pagination & limits” subszekció. Relay max limit > a DB-ben egy másodpercre jutó max eventszám; backward paging until = oldest (inclusive) + id dedup, complete ha nincs új event; stuck másodperc → retry nagyobb limit-tel, ha relay clampel → until = oldest - 1 vagy abort. Normál paging SOHA ne állítson limit-et (kivéve a stuck second drain-t).

NIP Deep Dive: NIP-13 (Proof of Work)

A mechanizmus: az event id (sha256(serialized event)) leading zero bit-számát miningolja a szerző egy nonce tag-en keresztül, target bits értékkel. A target_bits claim, a tényleges leading-zero count a verifikáció. 8 bit átlag 256 hash (Bitchat geohash channel, <1 ms M-series Mac), 20 bit ~1M (TAO/Wired default, 21 bit), 28 bit ~268M. Nem mandátum, minden relay és kliens saját maga dönt.

NIP Deep Dive: NIP-40 (Expiration Timestamp)

Az expiration tag unix timestamp-et tartalmaz; a relayek/cliensek törölhetik vagy elutasíthatják az eventet ezen idő után. Hasznos ephemeral, signer-issued invite code-ok, paywall content, time-bound offers esetén. A created_at a valódi publish idő, az expiration ahol szükséges — NE használd „scheduled delete”-re, mert a created_at timestamp a bányászathoz és feed rendering-hez is használatos.

Vissza a tetejére