Initial Thoughts - koder217/Myconet Wiki

Original URL: https://github.com/koder217/Myconet/wiki/Initial-Thoughts

Myconet (name inspired from Mycorrhizal network) is planned to be a purely ipv6 based p2p network without any leaders, where every device is both data source and a networking device.

There are no nodes on the network specifically to maintain list of peers on the network for tracking like BitTorrent trackers.

Every node on the network is believed to be unreliable/ephemeral in nature. Since all the devices in the network are expected to be a personal devices like laptop/desktop/smartphone or a VM on a cloud server, any of which can be turned off at anytime, no node on the network is expected to be reliable, which means the network itself is unreliable. This is in stark contrast to normal internet where servers and routers are expected to be highly reliable, always on devices. Unreliability is going to be an inherent property of Myconet. This will be worked around with redundancy/replication of both data and network or with some other methods.

Myconet is not built for anonymity like Tor network, even though both networks might have some similarities. No devices are on the network specifically for routing. If anonymity can be achieved natively, great! but it's not the primary reason for it. A top of the mind solution to anonymity can be spinning up a temporary VPS on a cloud like digital ocean, installing, using myconet on it and terminating the instance.

Myconet's main purpose is data resiliency and to battle censorship long into the future as more and more power structures, like governments and private companies seek to control data and data's accessibility. Any information on Myconet will be forever and cannot be deleted since there will never be a single node containing information and no single node responsible for routing that data. While "anything on internet is forever" already exists, having such information always available to everyone is still a problem. Durability and Availability are two different things. Data on internet might be durable, but it may not be available for consumption.

Having said that, A p2p network will not last long if it's infected with harmful, illegal content like copyright violations, child pornography etc. A content polling mechanism will be implemented where every logical piece of content will be voted on by a human being and the network will automatically moderate the content based on the poll. Myconet assumes there is more good in the world than bad and more people who are ethical and moral than malicious. A piece of controversial content like say a video of Tiananmen Square massacre might be "banned" my a country but the people might want to watch it. So, they will vote on the content to "keep" so the network will retain such content. If there is a video of harmful content like sexual abuse of someone, people will vote to "remove". The network will detect such flags and poll results and will choose to forward or not on the network.

Every piece of content on the network will have extensive metadata created at source and then enhanced by users on network. Such type of rich, standardised, wiki-fied content metadata and a metadata aware network is what differentiates Myconet to other p2p network.

Design goals:

  1. Pure ipv6 p2p network
  2. No leaders or "central" nodes (no quorum or leader election headaches)
  3. Data resiliency
  4. Network resiliency
  5. Fully Encrypted
  6. Performant
  7. API for developers to build apps for Myconet

Myconet can be used for any kind of data - documents, video streaming or even website snapshots. I envision a developer creating a website (Mycosite) which can be put out there for anyone to access. A node downloads the entire Mycosite package and browses the site, unlike a normal website where every click of a link makes a new http request to the server. Would be interesting to see if this can be achieved.

Myconet will require a discovery service, a search service which can scan the network and return results. This is going to be an extremely tricky problem to solve since no node on the network is expected to be a high performance device and the amount of network area to be scanned can be vast.

Myconet will push distributed computing to its limit.

Myconet must also be resilient to DoS attacks that can burden a network with excess traffic and virus attacks which can quickly spread.

Myconet should be self-healing and detect threats and resolve such threats without relying on a central, controlling server.

Myconet will require a routing technology without an overlay VXNET

A node on Myconet is expected to do the following things

  1. Host some data - As source for some data
  2. Route/forward some data - As peer in a network
  3. Query for some data - As a user of the network
  4. Receive some data - As a user of the network

User journey will be very simple:

  1. User downloads and installs Myconet software from Github.
  2. Dedicates some amount of the devices resources, network bandwidth, hard disk space, ram and cpu usage for the network.
  3. Adds a piece of content to the network by creating a content 'package' with metadata.
  4. Starts/Stops myconet service.
  5. Searches for data or views some data from a bookmarked Myconet resource identifier (MRI) a Myconet equivalent to URI.