IPFS is not what you think it is

Isabel Scroggin
The Blueprint by Bluzelle
4 min readJun 12, 2018

At Bluzelle, we are often asked how our decentralized database provides an advantage over IPFS, or why one would want to use our service over theirs. Though we can (and will) give answers to those specific questions, I argue that the implied comparison is not really the right way to think about the Bluzelle and about IPFS. Though in principle they provide the same semantics (storing arbitrary data), it would be a mistake to use them to solve the same problems because they are intended for very different settings.

IPFS is as much about efficiently transmitting data as it is about storing it. In their technical writings, they make many comparisons to bittorrent and HTTP — transport protocols that don’t even care where data is resident. IPFS does build upon this, backing the transport with a distributed hash table for long term storage of data, but the storage is nonetheless only one concern.

IPFS lacks a strong economic model, and because of this it cannot by itself provide a large scale database-as-a-service model. It depends on the idea that at least most of its nodes are altruistic, in that they voluntarily want to support the IPFS as a cause. The expectation is that all participants are interested in offering resources and using them i.e. they want to look up data on IPFS and they’re willing to share resources to support IPFS at the same time. The simple economic model that IPFS does support is basically a “bit market”- you can’t keep downloading forever without also uploading some. If everyone wants to be on both sides of the market, this works well.

That assumption holds in a voluntary-collaboration setting (such as p2p networks or academic research), or in the optimistic future in which IPFS replaces HTTP as the protocol that is synonymous with “the Internet” to most of the world. However, it falls flat in the database-as-a-service case: the public cannot be expected to devote lots of storage and bandwidth to hosting huge volumes of business’s private data for free, and IPFS alone gives those businesses no way to pay them for it.

Indeed, IPFS is not really optimized for private data at all. Though of course there’s no reason your can’t store encrypted data on it, doing so bypasses many of the benefits that IPFS seeks to achieve in the first place. Properly encrypted data can’t be de-duplicated and it can’t be intelligently cached, because only its owner knows what it is. The result is that accessing encrypted data on IPFS is not much more efficient than HTTP with some simple caching.

The simple economic model also inhibits the reliability that IPFS can offer. Though durability of data is a first-class goal of IPFS, it lacks strong guarantees on the subject against a powerful adversary. There is no repercussion for nodes that are supposed to store data not doing so, other than not being able to offer it for upload. Indeed, if a powerful adversary knows the details of some application using IPFS, then there doesn’t appear to be a way to prevent that adversary from becoming the nodes responsible for hosting some or all of that application’s data, and then “forgetting” a few carefully chosen pieces of it to sabotage the application.

By comparison, Bluzelle provides strong mathematical guarantees on the durability of data and the faithful performance of the database, in part due to its model. These guarantees hold even against the case where a constant fraction of the network is controlled by an intelligent adversary, and we seek not only to prevent this adversary from corrupting data, but also to prevent them from stopping particular reads and writes against the data. The details are beyond the scope of this post, but the curious reader is invited to read our whitepaper or contact me.

Speaking of comparisons, IPFS also does not offer the richness of a proper database that Bluzelle does. It has no notion of columns, range queries, and so on. This is not a lack of features on the part of IPFS, but because (this is a recurring feature in these comparisons) it is a filesystem, not a database, and it is therefore optimized for storing files, not structured data.

Ultimately, IPFS is an important piece of the distributed internet, and it is promising with respect to the problems it aims to solve. The reason that Bluzelle still has a market is not that we do it better than IPFS does, but because we serve different needs than IPFS does: IPFS is a shared public filesystem, and Bluzelle is a decentralized secure database.

To Get Started with Bluzelle

Get-Started Guide|Website| Whitepaper(English)

Never Miss An Update By Following Bluzelle’s Channels

| Newsletter | Telegram | Twitter | Reddit | Github | Developer Slack |

--

--

Isabel Scroggin
The Blueprint by Bluzelle

I'm working at Bluzelle to build a trustless and scalable decentralized database. I also enjoy hiking, reading, and petting dogs.