Home » Uncategorized » Blockchain for Distributed Social Media (PuffBall)

Blockchain for Distributed Social Media (PuffBall)

What happens when you take the blockchain used for digital currencies such as Bitcoin, and use it for text (or other media i.e. video, pictures, audio)? I came across an new opensource project called, PuffBall, which uses the blockchain for distributed publishing. If you’re semi-tech savvy, you know that with Facebook, Twitter or any social media web site, that all your posts and history is readable by those companies. Regardless of what you choose to share with your friends, the company that owns the web site/app can see everything you write as it’s all stored on their servers.

Blockchain goes Social

Puff BallBy using a blockchain that is encrypted on each client you get to liberate posts and tweets from being stored on any one single companies servers. Further, with encryption controlled by you the end user with a private key, only the people you grant access to can see your data. This is not good news for the Facebook’s of the world that mine users data for trends to sell advertising against and make additional recommendations based on what you write or like (or dislike). Although these types of recommendations may appear useful to new users, after a while you realize they are nowhere near as accurate as what you really want in the moment (at least with most current algorithms). I know recommendation algorithms are getting better with time, but that’s besides the point when it comes to your privacy and preventing strangers from seeing your history.

Anyway, back to the technology: PuffBall  is opensource code, based on the blockchain, that anyone can use to write a web site (aka web app) or mobile app to connect to the PuffBall blockchain; and host it on your own server or an instance of a cloud server such as Amazon’s AWS (or the piles of other cloud providers). You can write your app in what ever language or platform you want, so long as it can consume PuffBall’s JavaScript API.

The EveryBit app is an example forum client, you can download the opensource code and modify it to your liking. EveryBit currently uses ReactJS for it’s HTML templating, although there’s nothing stopping you from writing your own client to access the PuffBall API, with your favorite framework whether that’s Rails, AngularJS, MeteorJS, etc. There’s a good overview of PuffBall and EveryBit on the GitHub page README.

The Bitcoin block chain stores a history of transactions (called the Ledger), it doesn’t actually store the digital coins. Bitcoin’s stores ‘cash’ in a digital wallet, which can be located on your computer (or phone/tablet) or on a web site that stores wallets. With PuffBall the ‘cash’, i.e. the text and images for a post, is stored within the blockchain. There is no concept of a wallet with Puffball (at least not in it’s pre version 1.0 incarnation). In this sense, PuffBall is extending the blockchain to allow for storage of text and images (or any data).

Puff Ball has a modest road map, initially it will only support text or images. Although if the blockchain for distributed media takes off there’s no reason it can’t be extended to support larger media / files such as audio and video and possibly even executable applications.

A Few Challenges

A team of scientists measure a giant sequoia.

There are a few challenges that Puff Ball will need to work out, as with any new technology that is still going through transitions.

How could large files work in the blockchain? This will be a challenge for the hosting servers to be able to store all the data that could be uploaded by a system if it’s user base took off. Matt Asher the project lead said, “It might be worth making clear that each user will have their own blockchain (or “puffchain”, in this case).”

Another challenge is how public and private keys work; to be 100% secure that your data cannot be accessed by anyone except you and the friends or followers you specifically grant access to, the client app developer can never store a users private key. This works well for security, but puts the onus on the end user to remember their private key, as password resets will not work, no key is stored to reset. Although there are some interesting ways to get around this using multi-factor authentication. Or, like some of the more popular Bitcoin online wallets, the client can simply store private keys for users, with the usual email/password protection to access the site. Although this doesn’t stop the client app developers or rouge governments from accessing the private keys (and your data).

A distributed publishing network that can’t be taken down by any one government (or evil corporation)  still offers an advantage, even if they can snoop on your data, it makes it harder to block access from specific web sites the way Turkey and Iran block Twitter, or China blocked Google. Makes me wonder what else their blocking that doesn’t make the news!

Side Note – Encrypting Encrypted Data: If the server encrypts the private key and stores it encrypted on the server, you still need a way to un-encrypt the private key, and that is where it falls apart, as to recover a forgotten private key that is encrypted the server would need the key to access the key.  If you created a new key, like when passwords get reset, then the end user would loose access to all their previous content.

How will PuffBall content be distributed around the internet? Anyone that chooses to set up their own client app will need to host it on a server somewhere, this server can cache (store) the blockchain. When another person wants to set up a client app, their server will also have access to the blockchain stored on the 1st guys server, and so on. And technically if someone wanted to write a thick client, i.e. one that isn’t running in a web browser, then the client could now store part of the block chain as part of a peer-to-peer network – although with enough independent people hosting servers all around the planet, in many different countries, this would be a more likely scenario that is easier to implement for developers.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: