NIP-01: Protocollo Base
NIP-01 definisce il protocollo fondamentale per Nostr, stabilendo le strutture dati e i pattern di comunicazione su cui si basano tutti gli altri NIP.
Eventi
Gli eventi sono l’unico tipo di oggetto in Nostr. Ogni dato, da un aggiornamento del profilo a un post di testo a una reazione, e’ rappresentato come un evento con questa struttura:
- id: Hash SHA256 dell’evento serializzato (identificatore unico)
- pubkey: La chiave pubblica del creatore (32 byte esadecimali, secp256k1)
- created_at: Timestamp Unix
- kind: Intero che categorizza il tipo di evento
- tags: Array di array per i metadati
- content: Il payload (l’interpretazione dipende dal kind)
- sig: Firma Schnorr che prova l’autenticita'
Kind
I kind determinano come i relay memorizzano e gestiscono gli eventi:
- Eventi regolari (1, 2, 4-44, 1000-9999): Memorizzati normalmente, tutte le versioni mantenute
- Eventi sostituibili (0, 3, 10000-19999): Solo l’ultimo per pubkey viene mantenuto
- Eventi effimeri (20000-29999): Non memorizzati, solo inoltrati ai sottoscrittori
- Eventi indirizzabili (30000-39999): Ultimo per combinazione pubkey + kind + tag
d
I kind principali includono: 0 (metadati utente), 1 (nota di testo), 3 (lista follow).
Comunicazione Client-Relay
I client comunicano con i relay tramite connessioni WebSocket usando array JSON:
Da client a relay:
["EVENT", <event>]- Pubblica un evento["REQ", <sub-id>, <filter>, ...]- Sottoscrivi agli eventi["CLOSE", <sub-id>]- Termina una sottoscrizione
Da relay a client:
["EVENT", <sub-id>, <event>]- Consegna evento corrispondente["EOSE", <sub-id>]- Fine degli eventi memorizzati (ora streaming live)["OK", <event-id>, <true|false>, <message>]- Conferma accettazione/rifiuto["NOTICE", <message>]- Messaggio leggibile
Filtri
I filtri specificano quali eventi recuperare, con campi che includono: ids, authors, kinds, #e/#p/#t (valori tag), since/until, e limit. Le condizioni in un filtro usano logica AND; piu’ filtri in una REQ si combinano con logica OR.
Fonti primarie:
Menzionato in:
Vedi anche: