Networks with Intermittent Connections

Imagine you have a cluster of nodes that is isolated for periods of time from the larger internet. Perhaps it’s a remote village that gets visited by a bus every day with a WiFi device and hard drive. Or a Martian colony which doesn’t always have a connection to the Earth, and sometimes that connection has to bounce through multiple satellites, complete with delays along the way.

The idea is networks that can’t directly connect to the larger pool of peers and must instead go through layers of intermediaries.

How do such networks request hashes? How do they let the intermediate nodes (lets call them brokers) know that they’ll still be interested in those hashes in an hour, when the broker is no longer connected to the requestor, but is connected to the main network where those hashes live? A sort of shopping list of hashes for the trader to pick up when he goes to the big city.

Can IPFS handle such a use case today? Would such a use case be managed within the core IPFS infrastructure, or would this be an extra layer built on top of a basic IPFS node?

1 Like

hi aprian,

with pin and wantlist system a think it can be possible maybe a little layer needed to do that.


Unfortunately, we don’t handle this today. However, we do plan on handling it eventually.

Any guidance or documentation on how it would be implemented? How, for example, do you enable this for some nodes but not for others? How do you designate a broker and how do you identify the nodes for which it is willing to provide brokerage operations? Or is that sort of thing handled organically somehow?

This would likely be done with incentivization. That is, some nodes would download popular files because some incentive system has incentivized them to do so.

The original IPFS paper suggested using a bit-for-bit protocol. That’s why our data transfer protocol is called “bitswap”. Basically, user A would say “I want W” so user B would say “I want one of X, Y, Z” in exchange. User A would keep track of popular but scarce files, download them when available, and then offer them up as “payment” for files they want. Unfortunately:

  1. It’s a barter system and barter systems are notoriously inefficient.
  2. Retrieving files on behalf of other users has legal implications.

In practice, we’ll probably use some form of token, maybe even a bounty system, although we want to be careful not to break what we have (mixing money and altruism never ends well).