Dit is een overzicht op hoog niveau van het Nostr-protocol met details over gebeurtenistypen en hoe Nostr-implementatiemogelijkheden (NIP’s) werken.

Nostr op het hoogste niveau

  • Het Nostr-netwerk bestaat uit twee hoofdcomponenten: clients en relays.
  • Clients zijn de interface die gebruikers gebruiken om gegevens naar relais te lezen en te schrijven. Zie dit in een context van sociale media als de Twitter-webapp of mobiele app. Het is een client waarmee u gegevens kunt lezen van en schrijven naar de gecentraliseerde database van Twitter.
  • Relays zijn als databases (hoewel ze veel meer doen dan alleen gegevens opslaan). Ze stellen klanten in staat hen gegevens te sturen en die gegevens op te slaan in een database. Klanten kunnen vervolgens gegevens uit relais lezen om aan gebruikers te tonen.
  • Elke gebruiker wordt geïdentificeerd door een openbare sleutel. Elk gebeurtenisobject (bijv. bericht dat u plaatst, update van uw volglijst, enz.) is ondertekend. Clients valideren deze handtekeningen om er zeker van te zijn dat ze correct zijn.
  • Clients halen gegevens op van relais en publiceren gegevens naar relais. De relais worden bijna altijd gekozen door de gebruiker. Relais hoeven niet met elkaar te praten, maar mogelijk in de toekomst.
  • Om bijvoorbeeld uw profiel bij te werken, instrueert u uw klant om een gebeurtenis van het type 0 te sturen naar de relais die u wilt gebruiken. De relais slaan die gebeurtenis dan op.
  • Bij het opstarten vraagt uw client gegevens op van de relais waaraan u hem opdracht geeft. Dit kan worden gefilterd om alleen gebeurtenissen weer te geven voor gebruikers die u volgt of u kunt alles van iedereen vragen, waarna de client die gegevens aan u weergeeft.
  • Er zijn veel verschillende soorten evenementen. Gebeurtenissen kunnen allerlei soorten gestructureerde gegevens bevatten en de meest gebruikte structuren vinden hun weg naar Nostr Implementation Possibilities (NIP’s – protocolstandaarden waar iedereen zich aan houdt), zodat alle klanten en relais ze naadloos kunnen afhandelen.
  • De gegevens die u op Nostr kunt zien, zijn volledig afhankelijk van de relais waarmee u besluit verbinding te maken. Zie het netwerkschema hieronder voor meer informatie hierover.

Nostr Netwerk diagram

U kunt in het bovenstaande diagram zien dat we 3 relais en 3 gebruikers hebben. Elk van de gebruikers maakt verbinding met Nostr met een andere client (en op een ander platform).

Gegeven de leest en schrijft in het diagram:

  • Bob kan alle berichten van Alice zien, maar kan niets van Mary zien (en weet niet eens dat ze bestaat)
  • Alice kan alle berichten van Bob zien, maar kan niets van Mary zien (en weet niet eens dat ze bestaat)
  • Mary kan alle posts van Bob en Alice zien. Dit komt omdat terwijl ze alleen naar Relay 3 schrijft, ze leest van Relay 2, waar Bob en Alice hun berichten schrijven.

Dit is een zeer vereenvoudigde situatie, maar je kunt al zien dat de keuze van de relais waarmee je verbinding wilt maken een grote invloed kan hebben op wie en wat je ziet wanneer je Nostr gebruikt.

Events
Gebeurtenissen zijn het enige objecttype op het Nostr-netwerk. Elk gebeurtenisobject heeft een soort, die aangeeft wat voor soort gebeurtenis het is (wat voor soort actie een gebruiker kan ondernemen of welke berichten kunnen worden ontvangen).

Zo ziet een soort 1-evenement eruit (soort 1 is voor korte tekstnotities, d.w.z. zoiets als een Twitter-tweet)

{
  "id": "4376c65d2f232afbe9b882a35baa4f6fe8667c4e684749af565f981833ed6a65",
  "pubkey": "6e468422dfb74a5738702a8823b9b28168abab8655faacb6853cd0ee15deee93",
  "created_at": 1673347337,
  "kind": 1,
  "tags": [
    ["e", "3da979448d9ba263864c4d6f14984c423a3838364ec255f03c7904b1ae77f206"],
    ["p", "bf2376e17ba4ec269d10fcc996a4746b451152be9031fa48e74553dde5526bce"]
  ],
  "content": "Walled gardens became prisons, and nostr is the first step towards tearing down the prison walls.",
  "sig": "908a15e46fb4d8675bab026fc230a0e3542bfade63da02d542fb78b2a8513fcd0092619a2c8c1221e581946e0191f2af505dfdf8657a414dbca329186f009262"
}

  • Het id-veld vertelt ons de ID van het evenement
  • Het veld pubkey vertelt ons de openbare sleutel van de gebruiker die de gebeurtenis heeft verzonden
  • Het veld create_at vertelt ons wanneer het evenement is gepubliceerd
  • Het soort veld vertelt ons wat voor soort gebeurtenis het is
  • Het veld Tags vertelt ons over tags op het evenement. Deze worden gebruikt voor het maken van links, het toevoegen van media en het vermelden van andere gebruikers of evenementen.
  • Het inhoudsveld geeft ons de inhoud van het evenement. In dit geval de korte tekstpost.
  • Het sig-veld is de handtekening die clients gebruiken om te verifiëren dat de gebruiker met deze pubkey deze gebeurtenis inderdaad op de opgegeven datum heeft verzonden.
kinddescriptionNIP
0Metadata15
1Short Text Note1
2Recommend Relay1
3Contacts2
4Encrypted Direct Messages4
5Event Deletion9
7Reaction25
8Badge Award58
40Channel Creation28
41Channel Metadata28
42Channel Message28
43Channel Hide Message28
44Channel Mute User28
45-49Public Chat Reserved28
1984Reporting56
9734Zap Request57
9735Zap57
10002Relay List Metadata65
22242Client Authentication42
24133Nostr Connect46
30023Long-form Content23
1000-9999Regular Events16
10000-19999Replaceable Events16
20000-29999Ephemeral Events16
30000-39999Parameterized Replaceable Events33
30008Profile Badges58
30009Badge Definition58

NIPs

Er bestaat een Nostr-implementatiemogelijkheid, of kortweg NIP, om te documenteren wat MOET, wat MOET en wat MAG worden geïmplementeerd door Nostr-compatibele relay- en clientsoftware. NIP’s zijn de documenten die beschrijven hoe het Nostr-protocol werkt.

Waarom zou ik om NIP’s geven?
Nostr is gedecentraliseerd en niet eigendom van een gecentraliseerde dienst (zoals Twitter). Dit betekent dat de richting van het protocol aan ons allemaal is! We kunnen wijzigingen voorstellen en bepleiten en feedback geven op ideeën die door anderen zijn voorgesteld.

Door actief deel uit te maken van de gemeenschap heb je inspraak in de richting van het netwerk. NIP’s die in de hoofdrepository zijn gepubliceerd, zijn al goedgekeurd. Het toevoegen van nieuwe ideeën gebeurt via Pull Request op die repo.

Nostr NIP repo

Categorieën: Codebase

0 reacties

Geef een antwoord

Avatar plaatshouder

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *