NIP-46: Nostr Connect
NIP-46 definieert remote signing via Nostr-relays. Een client praat met een aparte signer, vaak een bunker genoemd, zodat signing keys buiten de app kunnen blijven die de gebruiker actief gebruikt.
Hoe Het Werkt
- De client genereert een lokaal keypair dat alleen voor de bunkersessie wordt gebruikt.
- De verbinding wordt opgezet met een
bunker://- ofnostrconnect://-URI. - Client en signer wisselen versleutelde kind
24133request- en response-events uit via relays. - Na het verbinden roept de client
get_public_keyaan om de werkelijke user pubkey op te halen waarvoor wordt getekend.
Verbindingsmethoden
- bunker:// - Door de signer gestarte verbinding
- nostrconnect:// - Door de client gestarte verbinding via QR-code of deep link
nostrconnect://-flows bevatten een vereiste shared secret zodat de client kan verifiëren dat de eerste response echt van de bedoelde signer kwam. Dat voorkomt eenvoudige connection spoofing.
Ondersteunde Bewerkingen
sign_event- Een willekeurig event ondertekenenget_public_key- De pubkey van de gebruiker ophalen bij de signernip04_encrypt/decrypt- NIP-04-encryptiebewerkingennip44_encrypt/decrypt- NIP-44-encryptiebewerkingenswitch_relays- De signer vragen om een bijgewerkte relay-set
Veel implementaties gebruiken tijdens het opzetten ook permission strings zoals sign_event:1 of nip44_encrypt, zodat de signer een beperkte scope kan goedkeuren in plaats van volledige toegang.
Relay- en Vertrouwensmodel
NIP-46 verplaatst private keys uit de client, maar haalt vertrouwen niet weg bij de signer. De signer kan requests goedkeuren, weigeren of vertragen, en ziet elke bewerking die de client vraagt uit te voeren. Ook de relay-keuze is belangrijk, omdat het protocol afhangt van request- en response-delivery via relays die beide kanten kunnen bereiken.
De methode switch_relays bestaat zodat de signer de sessie na verloop van tijd naar een andere relay-set kan verplaatsen. Clients die die methode negeren, werken minder betrouwbaar wanneer de relay-voorkeuren van de signer veranderen.
Primaire bronnen:
Vermeld in:
- Nieuwsbrief #1: Opvallende codewijzigingen
- Nieuwsbrief #3: Decemberoverzicht
- Nieuwsbrief #7: Primal Android wordt een volledige signing hub
- Nieuwsbrief #15: NDK collaborative events en NIP-46-time-out
Zie ook: