(my attempt to explain, might be wrong)

SatsAndSports

npub1zthq85gksjsjthv8h6rec2qeqs2mu0emrm9xknkhgw7hfl7csrnq6wxm56

hex

56ad647dcc219dca1d6f03aeaf408891c70c0e012e0d346d9efb1c1340bb0e9a

nevent

nevent1qqs9dtty0hxzr8w2r4hs8t40gzyfr3cvpcqjurf5dk00k8qngzasaxsprpmhxue69uhhyetvv9ujuem4d36kwatvw5hx6mm9qgsp9msr6ytgfgf9mkrmapuu9qvsg9d78ua3ajntfmt580t5llvgpessr34zn

Kind-1 (TextNote)

2026-04-03T09:03:53Z

↳ Reply to Event not found

3f8b5d6e6d5e6f1b702f7b2dd6f222b46a0bcab21352d281d43a79e77827d5b6...

(my attempt to explain, might be wrong)

A decentralised mesh, that should scale to very many users, where a packet can be routed from A to B. Each packet is forwarded to one neighbour, without source routing

A "spanning tree" over all nodes is formed. The purpose of this tree is that, for any edge on the spanning tree, the edge divides the entire network logically into two sections ("split-horizon"). There is then a bloom filter on each side of that edge which records the set of nodes that are reachable in that one of the two sections

The Bloom filters gradually fill, as they learn which nodes are where. A naive Bloom filter system would eventually result in every node being recorded in every Bloom filter and would therefore be useless. The spanning tree provides (arbitrary) two-section splits to ensure that doesn't happen. For any given edge of the spanning tree, each npub should be in just one of them. (For me, this was the main idea that hooked me on FIPS)

The Bloom filters are the main thing used for routing, although of course various network statistics are used to bias routing towards the best performing peer

There's lots more to say. Every direct link between two direct peers is encrypted and authenticated, as is the multi-hop session that forms between two nodes that are communicating

So that gives us an encrypted and authenticated datagram service between two nodes (nodes are identified by npubs). FIPS doesn't care how the peers directly communicate with each other (Bluetooth, WiFi, UDP, Tor, carrier pigeon)

But it's unreliable. Hence it's quite like IP (as opposed to TCP). Therefore, in order that all our IP software can be used as-is, there is a localhost-only IPv6 adaptor (and associated local DNS resolver, that maps each npub to a deterministically-derived ipv6 address) which allows us to treat any FIPS node as an IPv6 address. You can then run your legacy stack (using TCP for reliability) on top of that. When I connect my web browser to a cashu mint, the web browser thinks it's connecting to IPv6, but my machine immediately intercepts it and it goes through the FIPS system and it pops out inside the mint's machine as an ipv6 packet

Raw JSON

{
  "kind": 1,
  "id": "56ad647dcc219dca1d6f03aeaf408891c70c0e012e0d346d9efb1c1340bb0e9a",
  "pubkey": "12ee03d11684a125dd87be879c28190415be3f3b1eca6b4ed743bd74ffd880e6",
  "created_at": 1775207033,
  "tags": [
    [
      "alt",
      "A short note: (my attempt to explain, might be wrong)\n\nA decentr..."
    ],
    [
      "e",
      "7d09e11300034485cb55a7a717ec8a782eba8ee2ee23b33c384ed004ad4d91db",
      "wss://relay.primal.net/",
      "root",
      "2bbace553efebf58dd55912169f92c1123eb6121d7ba092f6c50104afc31acef"
    ],
    [
      "e",
      "3f8b5d6e6d5e6f1b702f7b2dd6f222b46a0bcab21352d281d43a79e77827d5b6",
      "wss://nos.lol/",
      "reply",
      "50d94fc2d8580c682b071a542f8b1e31a200b0508bab95a33bef0855df281d63"
    ],
    [
      "p",
      "23d12ef8751e5ee267fb6341d7c41b9434a1b99869e0212eb34d56abb6b12e8a",
      "wss://relay.damus.io/"
    ],
    [
      "p",
      "2bbace553efebf58dd55912169f92c1123eb6121d7ba092f6c50104afc31acef",
      "wss://bevo.nostr1.com/"
    ],
    [
      "p",
      "50d94fc2d8580c682b071a542f8b1e31a200b0508bab95a33bef0855df281d63",
      "wss://eden.nostr.land/"
    ]
  ],
  "content": "(my attempt to explain, might be wrong)\n\nA decentralised mesh, that should scale to very many users, where a packet can be routed from A to B. Each packet is forwarded to one neighbour, without source routing\n\nA \"spanning tree\" over all nodes is formed. The purpose of this tree is that, for any edge on the spanning tree, the edge divides the entire network logically into two sections (\"split-horizon\"). There is then a bloom filter on each side of that edge which records the set of nodes that are reachable *in that one of the two sections*\n\nThe Bloom filters gradually fill, as they learn which nodes are where. A naive Bloom filter system would eventually result in every node being recorded in every Bloom filter and would therefore be useless. The spanning tree provides (arbitrary) two-section splits to ensure that doesn't happen. For any given edge of the spanning tree, each npub should be in just one of them. (For me, this was the main idea that hooked me on FIPS)\n\nThe Bloom filters are the main thing used for routing, although of course various network statistics are used to bias routing towards the best performing peer\n\nThere's lots more to say. Every direct link between two direct peers is encrypted and authenticated, as is the multi-hop session that forms between two nodes that are communicating\n\nSo that gives us an encrypted and authenticated datagram service between two nodes (nodes are identified by npubs). FIPS doesn't care how the peers directly communicate with each other (Bluetooth, WiFi, UDP, Tor, carrier pigeon)\n\nBut it's unreliable. Hence it's quite like IP (as opposed to TCP). Therefore, in order that all our IP software can be used as-is, there is a localhost-only IPv6 adaptor (and associated local DNS resolver, that maps each npub to a deterministically-derived ipv6 address) which allows us to treat any FIPS node as an IPv6 address. You can then run your legacy stack (using TCP for reliability) on top of that. When I connect my web browser to a cashu mint, the web browser thinks it's connecting to IPv6, but my machine immediately intercepts it and it goes through the FIPS system and it pops out inside the mint's machine as an ipv6 packet",
  "sig": "fa7349bc2e0b44984b090b6fdc9dc58e3030aae3780bc982ee89d0769f78d43d76cd61bea06ce9ea372b282c17e950cc173a0060025d2f9d3f3d53a6f4db588c"
}