Replies (12)

SatsAndSports's avatar
SatsAndSports 2 weeks ago
(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
PixelBob's avatar
PixelBob 2 weeks ago
Would it be possible to use LoRa , or more specifically something like meshcore as a transport? 184 bytes per packet enough?
In theory, yes. In practice, there would likely be some tradeoffs involved regarding the need for fragmentation, protocol timer adjustments, etc.
PixelBob's avatar
PixelBob 2 weeks ago
I ask because meshcore has a lot of people deploying hardware and investing time growing the network, if fips could be an additional overlay you might get a boost to adoption. But yeah, its a very slow transport, and any system spamming hundreds of packets to send a cat pic might upset some.
It would not just upset, it would completely break the network. Especially the country-wide ones.
Right. FIPS is a general purpose datagram service between npubs, designed and optimized for the traffic scale typical of Internet applications. So adding LoRa or other low bandwidth / low MTU / high latency transports would be possible, but would need specific engineering for rate limiting and traffic management to avoid overwhelming the network.
↑