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-entitiesfü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 pusha 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 --profileauto-stable connection key + relay fallback;bunker --personaderived nsec-tree identity; Tor SOCKS proxy minden HTTP fetch-re; NIP-47/NIP-29/NIP-86/NIP-65 wallet subcommand-ok;--jsonl/--csv/--tsvoutput flag-ek,req/event/publish-raw/bunker signverbek; 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:0profile-ok signature verify az ingest-nél;kind:39701d-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);/publishfan-outBLMOVE-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,
ncryptsec1import (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;
imetathumbnail, video duration,published_atésaltfallbackdisplayName;sign→hash_and_sign,verifyraisesValueError; 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 updatesubcommand (graceful restart); 21 percenkéntirefreshNostrEvents(); 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.sqlmodul 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,lastInboundAtMsstamp,markDead()+probeLiveness()5 másodperces REQ bármelyik relayre).
Unreleased work¶
- rust-nostr PR #1384 —
GiftWrapBuilderésPrivateDirectMessageBuilderkapnakexpirationopciót (Duration, NIP-40 tag a wrap randomizáltcreated_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 anostr-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 (
SearchableEventinterface, 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/hashCodefix 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);
NostrConnectCoordinatorextraction anostrconnect://flow-hoz (NIP-46 client-initiated bunker cleanup, issue #4741 előkészítés); kind-16 repost mapping hanotification_typehiá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éslogouta 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.parseServerListunit 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_framepayload offset fix (PR #13),heartwood-framecrate 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 Contenta NIP-51Draft relaysszekciójában is. Nincs wire change. - Open: NIP-AD — Nostr Web Addresses (PR #2406) —
.well-known/nostr.json?ad=/pathlookup, 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": [...]}, beillesztettnjump.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-86createrole/editrolesignature 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-92imeta, 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 paginguntil = oldest(inclusive) +iddedup, complete ha nincs új event; stuck másodperc → retry nagyobblimit-tel, ha relay clampel →until = oldest - 1vagy abort. Normál paging SOHA ne állítsonlimit-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.