feat(nip77): negentropy reconciliation core for the PostgreSQL backend
I maintainer di solito rispondono entro 1 giorno
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Is your feature request related to a problem? Please describe.
Clients and relay-to-relay syncers catching up with nostream currently send wide REQ filters, so the relay streams every matching event even when the other side already has most of them. NIP-77 (Negentropy) solves this with set reconciliation: both sides exchange range fingerprints and only transfer the events that actually differ. nostream has no NIP-77 support.
The strfry backend being added separately already implements negentropy itself, so this work targets the PostgreSQL backend only and must stay cleanly separable from it.
Describe the solution you'd like
This issue covers only the first, protocol-independent piece of NIP-77, so it can be reviewed on its own before any wire-level work:
- A negentropy reconciliation core: encode/decode of negentropy messages and fingerprint computation over a sorted set of
(created_at, id)items, with no networking or WebSocket code. - A new
EventRepositorymethod returning just(created_at, event id)for events matching a filter, sorted as negentropy requires. It reuses the shared filter conditions (so NIP-56 hidden reports are never advertised) and also excludes deleted and expired events, so they are never advertised either. - Unit tests for the codec/fingerprint (including interop vectors from the reference implementation) and for the new query.
Follow-ups, tracked separately and not part of this issue: the NEG-OPEN/NEG-MSG/NEG-CLOSE/NEG-ERR wire protocol with per-connection sessions and limits, then settings, NIP-11 advertisement and backend gating.
Additional context
- Spec: https://github.com/nostr-protocol/nips/blob/master/77.md
- Reference implementation: https://github.com/hoytech/negentropy
- Lingua principale
- TypeScript
- Stelle
- 829
- Fork
- 234
- Merge medio
- 2g 10h
- PR unite (30g)
- 24
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di cameri/nostream
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
feat(admin): bounded NIP-66 probe history and Network Health timelineForse già presa @Ferryx349 l’ha presa 4 giorni fa. ApertaAdmin Console enhancement
cameri/nostream#800 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Store relay settings overrides in PostgreSQL (SETTINGS_BACKEND=db)Forse già presa @Ferryx349 l’ha presa 37 giorni fa. Apertaenhancement
cameri/nostream#757 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
feat(nip85): Web-of-Trust spam mitigation engineForse di nuovo libera @Ferryx349 l’ha presa 67 giorni fa e non c’è nessuna pull request aperta. Apertaenhancement
cameri/nostream#720 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
feat(nip96): native HTTP media storage pipelineForse di nuovo libera @Ferryx349 l’ha presa 67 giorni fa e non c’è nessuna pull request aperta. Apertaenhancement
cameri/nostream#719 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di cameri/nostream
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: [A11y] Missing accessible name on icon-only standalone links (WCAG 2.1 SC 2.4.4, 4.1.2)Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
jaegertracing/jaeger-ui#4596 ·
I maintainer di solito rispondono entro 1 giorno
-
area:tui enhancement platform:macos
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
anthropics/claude-code#101490 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
netlify/netlify-mcp#75 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno