chainbook.bit - a decentralized social network

One of my projects for the 2015 Chaos Communication Camp has been chainbook.bit A decentralized address book, or let’s call it social network, using the namecoin blockchain and remotestorage.

The goal was to build an address book application that stores absolutely no user data and loads the contact information from a decentralized source managed by the contact itself.


 Namecoin is a decentralized open source information registration system. It is the first and imho the most interesting fork of Bitcoin. It is basically a key-value store and uses the bitcoin blockchain technology to make sure that each key can only be used once and updated only by the rightful owner - without any central authority!
One of the most discussed use cases is a decentralized domain registration system.  

Another use case is the storage of identity information - the blockchainID. It describes a standard schema for identity/profile information stored as JSON in the blockchain. 
chainbook.bit uses this information and renders a nice website. 

 Remotestorage is a great solution for web applications to allow the user to store application data independently from the application. The user can choose the storage provider or even run his own storage provider. The user owns his the data - not the application. chainbook.bit uses remotestorage to store the user’s contact connections. 

So, everybody manages their own profiles in namecoin and user specific connections are stored in remotestorage. No data is stored in the app, the contact has full control of the profile information which is securely stored in the namecoin blockchain. 

With these two great tools at hand we only need a simple single page HTML/JavaScript app that connects the two and the decentralized address book is done. The JS app has no dependencies and runs completely in the browser.

Have a look at the source code and the README on GitHub and try the app here deployed on 5apps and under chainbook.bit. - this is my profile u/bumi

The implementation currently is pretty rough (I used it to teach me some react.js) and the design is pretty much not existent (want to help out with that?) - but I hope you get the idea. 

architecture sketch: