Nostred

From Traxel Wiki
Jump to navigation Jump to search

Overview

Nostred is a topical threaded messaging system that treats centralized censorship as damage and routes around it. Decentralized censorship (aka: popularity, zeitgeist) is just a thing that happens. Governments, corporations, oligarchs, and madmen attempt to influence the direction of decentralized censorship.

Links

  • NIP-10, Threaded Discussions: https://github.com/nostr-protocol/nips/blob/master/10.md
  • NIP-72, Reddit Style Communities: https://github.com/nostr-protocol/nips/blob/master/72.md
    • Combining NIP-72 with an automod filter in Strfry should be very doable.
      • Is it a top level post?
        • Is the signer top-level whitelisted?
        • Is the signer top-level blacklisted?
        • Do I have history or other to trust signer for top level?
      • Is it a reply? Is the signer reply-approved?
        • Is the signer reply whitelisted?
        • Is the signer reply blacklisted?
        • Do I have history or other to trust signer for reply?

Examples

Community Description

{
  "id": "<32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>",
  "pubkey": "<32-bytes lowercase hex-encoded public key of the event creator>",
  "created_at": <Unix timestamp in seconds>,
  "kind": 34550,
  "tags": [
    ["d", "<Community name>"],
    ["description", "<Community description>"],
    ["image", "<Community image url>", "<Width>x<Height>"],

    //.. other tags relevant to defining the community

    // moderators
    ["p", "<32-bytes hex of a pubkey1>", "<optional recommended relay URL>", "moderator"],
    ["p", "<32-bytes hex of a pubkey2>", "<optional recommended relay URL>", "moderator"],
    ["p", "<32-bytes hex of a pubkey3>", "<optional recommended relay URL>", "moderator"],

    // relays used by the community (w/optional marker)
    ["relay", "<relay hosting author kind 0>", "author"],
    ["relay", "<relay where to send and receive requests>", "requests"],
    ["relay", "<relay where to send and receive approvals>", "approvals"],
    ["relay", "<relay where to post requests to and fetch approvals from>"]
  ]
}

New Post Request

Satisfies two NIPs:

{
  "id": "<32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>",
  "pubkey": "<32-bytes lowercase hex-encoded public key of the event creator>",
  "created_at": <Unix timestamp in seconds>,
  "kind": 1,
  "tags": [
    ["a", "34550:<Community event author pubkey>:<d-identifier of the community>", "<Optional relay url>"],
    ["e", "<event-id>", "<relay-url>", "root"], // required for all replies, identifies the root post
    ["e", "<event-id>", "<relay-url>", "reply"], // optional, if this is a reply to a reply
  ],
  "content": "<My content>"
}

Testing

$ python bob_test.py send -r ws://localhost:7777 --content "Nostred" --kind 1 --private-key nsec1dgg7d6e0g2484twl9ygntc24ueehm44frrc8rc93vcvun04gmp9qgufd4g --tags '[["a","34550:npub10jlc40w2mexjzmhce54n8w3z2euemqdwpghg3f7lvxrunr7dgvasm0nurp:Nostred","ws://localhost:7777"]]' 
5b8440d62761bab91c36708a6143aa51a725a1f1fd320a5d580ae818455d1906
nevent1qqs9hpzq6cnkrw4ersm8pznpgw49rfe958cl6vs2t4vq46qcg4w3jpspzdmhxw309akx7cmpd35x7um58gmnwdehzt4mtw
$ python bob_test.py get -r ws://localhost:7777 nevent1qqs9hpzq6cnkrw4ersm8pznpgw49rfe958cl6vs2t4vq46qcg4w3jpspzdmhxw309akx7cmpd35x7um58gmnwdehzt4mtw
{"id":"5b8440d62761bab91c36708a6143aa51a725a1f1fd320a5d580ae818455d1906","pubkey":"7cbf8abdcade4d216ef8cd2b33ba2256799d81ae0a2e88a7df6187c98fcd433b","created_at":1696902240,"kind":1,"tags":[["a","34550:npub10jlc40w2mexjzmhce54n8w3z2euemqdwpghg3f7lvxrunr7dgvasm0nurp:Nostred","ws://localhost:7777"]],"content":"Nostred","sig":"cbe2434cf9d8790df669afbe0bb8a435999bef4539fa6a1c725fb0bda9073e97b1531bdedbcca7523fa5a375e4f472671047cde51c4870041e7971c6d218aecd"}
5b8440d62761bab91c36708a6143aa51a725a1f1fd320a5d580ae818455d1906
nevent1qqs9hpzq6cnkrw4ersm8pznpgw49rfe958cl6vs2t4vq46qcg4w3jpspzdmhxw309akx7cmpd35x7um58gmnwdehzt4mtw
$ python bob_test.py send -r ws://localhost:7777 --content "Nostred" --kind 1 --private-key nsec1dgg7d6e0g2484twl9ygntc24ueehm44frrc8rc93vcvun04gmp9qgufd4g --tags '[["a","34550:npub10jlc40w2mexjzmhce54n8w3z2euemqdwpghg3f7lvxrunr7dgvasm0nurp:Nostred","ws://localhost:7777"],["e", "nevent1qqs9hpzq6cnkrw4ersm8pznpgw49rfe958cl6vs2t4vq46qcg4w3jpspzdmhxw309akx7cmpd35x7um58gmnwdehzt4mtw", "ws://localhost:7777", "root"]]' 
$ python bob_test.py send -r ws://localhost:7777 --content "Nostred" --kind 1 --private-key nsec1dgg7d6e0g2484twl9ygntc24ueehm44frrc8rc93vcvun04gmp9qgufd4g --tags '[["a","34550:npub10jlc40w2mexjzmhce54n8w3z2euemqdwpghg3f7lvxrunr7dgvasm0nurp:Nostred","ws://localhost:7777"],["e", "nevent1qqs9hpzq6cnkrw4ersm8pznpgw49rfe958cl6vs2t4vq46qcg4w3jpspzdmhxw309akx7cmpd35x7um58gmnwdehzt4mtw", "ws://localhost:7777", "root"],["e", "", "ws://localhost:7777", "reply"]]' 

Post Approval

Story

Using Cyberpunk 2077 as a rough framing device. Actors are not meant to be exact copies from the game, but to act as rough parallels.

Imagine a world in which amoral corporations and their oligarchic founders have extreme influence over government. People have become disenfranchised and some have begun to radicalize. Those people want to use Nostred for messaging to advance what they believe is in the best interests of society.

Nostred is a topical threaded messaging system that treats centralized censorship as damage and routes around it. Decentralized censorship (aka: popularity, zeitgeist) is just a thing that happens. Governments, corporations, oligarchs, and madmen attempt to influence the direction of decentralized censorship.

People

V

The object of everyone's machinations. V has no axe, a priori, to grind. Everyone else is trying to present, suppress, or influence information that V sees to get her to act as they see fit.

Punchin' Judy

Neutral good humanist. Wants everyone to be happy. Sees the best in people. Does not trust Arasaka (nor, by extension, Militech).

Johnny Silverhand

Chaotic good. Justice warrior with an emphasis on "warrior". Asymmetric urban warfare specialist.

Takahara

Lawful good. Believes the system would be good if it weren't for the few baddies in positions of power. Assassin.

Wakako

Chaotic neutral. Does for Wakako.

Orgs

Arasaka

Amoral corporation, only cares about money and power. Law is a constraint that must be worked around or manipulated - or in the worst possible case, followed.

Pacifica

Collective of counter-culture that is obsessed with money and power. Basically Arasaka, but Militech doesn't like them.

The Coyotes

Collective of counter-culture that is benevolent. Works against the big bads (Arasaka and, by extension, often Militech).

Militech

Abstract representation of government force. Often aligns with Arasaka, shot through with people of various conflicted interests; corrupt or idealistic, malevolent or benevolent, psychotic or rational, &c.

Fixers

Not truly an org, but a tag for the collection of indies who are just in it for the money.

Conflict

Arasaka Versus Society

Arasaka wants to control reality for Arasaka's interests. Uses law and influence to manipulate perception of reality.

Militech Versus Society

Militech wants to control society for good, with good defined in occasionally dystopian ways. Creates and enforces law for the benefit of those it (mis)perceives as lawful.

Stories

Silverhand Rabble Rousing

Johnny incites people to go to a flash-mob street performance that will turn into a riot against Arasaka. Messaging via Nostr.

Judy opposes because riots might get people hurt. Arasaka enlists Militech to suppress the messaging.

Arasaka Suppression

  • Arasaka starts by finding unlawful material carried by the relays, and asking Militech to shut them down.
  • Later, Arasaka plants copyrighted material, when the relays stop doing illegal things.
  • Arasaka gets speech that incites violence ruled illegal and just cause for relay takedown.

Are these things illegal? The story has to be credible. Find the actual legal status.

Takahara Assassination

Takahara wants to knock off a VP and his cronies. Crowd-sources the solution and enlists actors via Nostr.

Arasaka enlists Militech to detect, unmask, and arrest Takahara.