How To Create A Fairly Decentralized Commenting System

Blog comments are a huge problem right now.

Thanks to that static blog thing, we’ve almost decentralized blogs.

IPFS is coming along to fix some of the issues with centralization of content.

But commenting is still woefully centralized and/or cumbersome!

Why IPFS (on its own) can’t fix comments

At the recent Decentralized Web Summit, the audience was rewarded with a stunning demo from ZeroNet.

We witnessed a blog served in a fully decentralized manner thanks to the power of DHTs and their content-addressable philosophy.

Moreover, we saw comments being loaded in a decentralized manner. There was a little counter showing the number of comments increasing as they were loaded from peers.

While this certainly is an impressive achievement, it’s still not the golden egg we’re looking for. Why?

  • Comments must be stored by peers who drop offline all the time. Would you be OK visiting a semi-obscure blog and not being able to see the comments because no peers are available? Only half the comments? An unknown percentage of the comments? Comments out of order? My guess is that for most users this would be unacceptable.

For comments to work, there must always be at least one peer online. That is kinda like a … server.

And even though “server” is a taboo word in many decentralization communities, it’s nevertheless a fundamental reality that someone must always be available to store the data you’re looking for.

How Do We Decentralize This “Without Servers”?

We can’t.

What we can do, however, is make the “server” part arbitrary and permissionless so that anyone can play this role.

What is needed is:

  1. Incentivizing seeders to store arbitrary data in a decentralized manner. This can be done today with blockchains like StorJ, Sia, and in the future, Filecoin. Or it can be done by simply being your own master-seeder and running a dedicated server. The difference between today and that last case is that it allows other peers (probably site visitors) to “help out” the dedicated server in serving the content.
  2. Incentivizing seeders to store arbitrary data in a decentralized manner by figuring out who pays them. In 99.99% of the cases, this will be the blog owner. Users don’t want to have to pay to view or post comments, but blog owners already pay web hosts for comments to be stored. This will be almost no different, except the comments can be stored redundantly in a bunch of places.
  3. Referencing the comments using content-addressing / eventually-consistent merkle-tree magic. See CRDTs, Dat, Patchwork, Orbit, OpenStreetMap P2P DB, etc. Your blog post will contain an IPNS-type hash representing where to look up the latest comments, along with some JavaScript to do the looking up.
  4. Fancy features like upvotes require blockchains like Ethereum. DHTs and IPFS are just not designed for this sort of “HTTP POST” like behavior, but Ethereum is.


Leave a Comment