Dockerized version of Polytope
Polytope is an experiment in decentralized data services with opportunistic data transfer. Our initial hypothesis is that we can achieve a balance between scale and performance by using the social structure of Secure Scuttlebutt (SSB) to inform the pinning strartegy of IPFS. In other words, every instance of SSB will also run an instance of IPFS, and automatically pin the IPFS data of other SSB members in your friend/follower network (up to the limit set in the friends.dunbar setting stored in the SSB config file as well as the 3-hop limit set in the ?).
We are also experimenting with using Tor hidden services for each SSB and IPFS instance on a given node. We think this might overcome the need to have boot/introduction nodes with public IP addresses, or even preconfigured nodes at all (assuming that a user can obtain an invite code from any Tor-accessible SSB pub). Using Tor to enhance device connectivity comes from the original goal of being able to run a Polytope node on an unrooted Android phone (via Termux).
The major software components to be included in this Docker image are:
- ssb-server
- IPFS
- Tor
We think the following logic components need to be written to start validating the hypothesis
- Logic to create a Tor hidden service for ssb-server
- Logic to create a Tor hidden service for IPFS
- Logic to modify the ssb-server configuration to use Tor for all incoming and outgoing connections. This includes ensuring that invite codes generated by the ssb-server include the .onion address of the hidden service that points to ssb-server
- Logic to actively connect the ssb-server instance to at least one Polytope node accessible over Tor
- Logic to make a public post with the .onion addresses of the ssb-server and IPFS instances running on the node
- Logic to "friend" or "follow" at least one of the Polytope nodes connected to in the previous step
- Logic to modify the IPFS configuration to use Tor for all incoming and outgoing connections. This includes ensuring that the IPFS node can be accessed via multiaddr via the .onion address of the hidden service that points to IPFS
- Logic to modify the IPFS configuration to support gossipsub
- Logic to modify the IPFS configuration to act as an IPFS proxy
- Logic to perform regular queries of the node's SSB friend network (out to three hops, by default) to build/update the list of the IPFS multiaddr of SSB friends
- Logic to perform regular attempts to connect directly (or through an IPFS proxy) to the IPFS instances of the node's SSB friend network
- Logic to automatically pin new (or previous) IPFS data of SSB friends
- Add qri.io in the mix
- Explore Ethereum/SSB identity correspondance (https://github.com/blockades/mmt_resources/blob/1dd052dc1bd39afa174caa17b13a72abaa1febbc/research/secp.md)
- Explore IPFS/NDN interop (https://named-data.net/gsoc-2019/)
- Explore IPFS/DTN (Delay Tolerant Networking) interop