Recently I’ve made a very basic proof-of-concept decentralized CMS with Ethereum blockchain and Swarm, and you can see the code + demo here. But before I go over some technical details, let’s take a look at Steem.
The Steem Solution
Decentralized social media platforms are not new. Steem has already set an example of what a decentralized blogging platform can be.
Despite its controversial launch, I still love Steemit. It’s almost my ideal platform. But the community is kind of niche, and STM isn’t listed on many exchanges. It also feels less transparent, and I’m certain it also has far less POW to back it up when compared to Ethereum or Bitcoin.
- You need to sign up on steemit.com
- Which requires a phone number to “prevent spam”
- Actually you don’t have to register on steemit.com, but it’s very difficult to do otherwise (because of the next point)
- Incomprehensive documentation
- Steem uses their own blockchain, but the docs are not good
- STM is not very liquid
- STM is only listed on a handful of exchanges
- Only text is stored on the blockchain
I wish such platform exists on the Ethereum blockchain. In fact, Status promised to build Moments, which is a censorship-resistent decentralized microblogging tool. But it’s still in alpha, and we have no idea what it is actually going to be like.
The Freepress solution
(The name Freepress is completely made up by me)
Freepress project aims to create a completely decentralized and autonomous publishing platform.
The blog contract
The contract is entirely owned by the author, if deployed by the author. (If deployed by a community it’ll be owned by the community. See below.) It’s a blogging space where the author has complete control on what to publish. Visitors can use a Freepress Reader to read the blog posts, make comments, or even support the blog author with Ether.
On the technical side of things:
- Post texts are stored on Swarm network, which is a P2P storage
- The blog smart contract keeps track of the Swarm (bzz) hashes of the posts published, along with some metadata
- The contract acts as a “post registry”, which a Freepress Reader can query to find all the posts
- Once the bzz hash of a post is known by the client, the client would be able to get the post from Swarm
The community / publisher contract
Additionally, although not entirely implemented at this stage, there is a community contract. A community keeps track of a collection of blogging spaces assigned to independent authors under the community. Anyone can deploy a community. Authors can choose a community they wish to put their blog on, and call
createBlog on the community contract. The blog would then be owned by the community, but the author has complete control of the content on his/her blog.
The community managers get to do a couple things, like recommending a blog post on the community level, requiring a fee for an author to create his/her blog, setting withdraw restrictions, charging fees on withdrawals, removing a blog from the community, giving authors bonus payouts, etc.
Game theory wise, it’s community managers’ best interest to attract the best authors.
Where does the autonomous part come into play?
At this point you might ask: Who controls a community? Well, I could employ some parts of the DAO model. Say I’m starting a community, call it TheDAP (The Decentralized Autonomous Publisher). Then we mint some DAP tokens, run an ICO, and whoever holds DAP tokens gets to propose and vote to perform community management tasks.
I haven’t considered a lot of the aspects where it might go wrong, or the implementation detail of this model. But then again, this is by no means a whitepaper.
Other similar projects
DNN, Decentralized News Network is rather interesting, and the way it identifies fake news is somewhat similar to Augur.