Over the past few months, INT has released several details to their plans for data sharing and storage within the network. With data being the keystone to a successful network, paying close attention to the mechanics proposed will allow us a window into the inner workings of the future INT network.

At first they hinted at a system based on distributed hash tables (DHT) like what is used in BitTorrent, where nodes in the network would store pieces of the data decentralized so no node carried the full record. This is a great solution but one not best suited for fast retrieval applications as the user is tasked with finding the pieces and constructing the file themselves.

This week though, they mentioned their intentions on implementing the InterPlanetary File System (IPFS). IPFS is a peer-to-peer file system much like BitTorrent but where as BitTorrent gives you a list of locations for pieces of the file you are searching for (then requiring you to fetch them yourself), IPFS gives you the file intact after you, quite simply, ask for it by the file name or hash. It does this by finding the root hash (first data block) for the file you are looking for in the DHT that stores the location of all the nodes that can serve that file. Once it finds the node most appropriate for the user and gets the first data block for the file, it follows the Merkle branch of hashes for the given file through the network by following the hyperlinks between them in order to construct the file before passing it to the user. These Merkle branches create a directed acyclic graph (DAG) of all data blocks stored by all nodes. As the amount of files and requests grow, so do the nodes, as the user who just received the file can become a seeder of that file. This system, therefore, allows very high throughput with no single point of failure in a network that becomes more efficient as it grows.

When the user uploads a file to the network, IPFS breaks the file into hashed blocks (of 256kb each) and creates a Merkle tree of all the hashes of the data blocks while also documenting how they fit together. The nodes then begin trading these blocks with other nodes, thereby decentralizing the data. Since hashes change for a file even after the slightest change, this addressing of data by hash maintains immutability and enables the network to constantly error check the transmission of data blocks.

Because anyone who has the file’s hash can get a copy of it, data in it’s native, unprotected state is not safe from prying eyes. But because IPFS doesn’t care if it can understand the data it is storing (it only needs the files checksum hash, it’s size and the data itself), we can put it in whatever format we want before feeding it into the network. That means you can feed it encrypted data that no one but those that have the key can read, therefore using the network to distribute data privately. IPFS also inherently supports Self-Certified Filesystems (SFS) which facilitates the passing and verifying of keys securely through the network further enabling the transmission and cataloging of private data.

INT also mentions the communication of requirements for IPFS to a hardware manufacturer. This could mean that they are looking to integrate this technology into their hardware router as to enable seamless IPFS data storage.