Building a Web3 Social Media DApp: JoinSpace – Like Reddit but on Web3

Introduction

Web3 and Blockchain Technologies have recently been gaining wider adoption, in the form of Decentralised Apps (DApp).

These Decentralised Apps are starting to disrupt traditional markets; ranging from DeFi with the likes of Curve Finance (where users can earn interest on their assets), to the world of interactive gaming – and more.

This led to the question: Could we build a Web3 Decentralized Social Media that runs entirely on the Blockchain?

A Social media platform where the users are the owners:

  1. Where creators can Earn, Tokens based on upvotes
  2. Handle native payment within the Platform
  3. Own the content/memes they’ve posted
  4. Create their own communities
  5. Ideally – Taking all the great features of Reddit and recreating it on web3.
  6. (Even more ambitiously) – The Smart contract incentivizes as the community governs itself (bottom-up approach).

The following is Project I’ve developed. Possibly one of the earliest decentralized social media platforms running on Ethereum’s Blockchain, running on Layer 1. This means no centralized database or server hosting the backend. The whole backend logic runs from a Smart Contract deployed on-chain.

What is a Decentralized Application?

Context: A Decentralized Application (also known as a DApp) is an application that runs on the Blockchain.

In Summary, this means that the backend logic is deployed as a smart contract rather than the conventional use of centralized databases and servers – which are regularly used in today’s websites.

Spoiler: The Social Media DApp is called JoinSpace, a Decentralised Social Media Application with the goal of being the alternative to Reddit on Web3. With the fitting URL extension of JoinSpace.xyz. (Live now)

In this article, we’ll be exploring the following:

  1. Building a decentralized app that runs entirely of Smart Contracts
  2. How this social media DApp is built, and the possible benefits of a Social networks on Web3
  3. Does a social media DApp scale on the Ethereum Network?
  4. And more importantly, how safe/ is it a good idea to build a web3 social media?

Social Media in Web2.0

Note: The terms Social Media and Social Network Site would be used interchangeably during this article.

What is Social Media?

Web 3 Social Media Dapp - Social Media Icons

A Social Media / Social Network can be seen as a form of technology (whether being a Website or an App) that allows people to communicate, create and share information over the Web.

With the rise and fall of various Social Media’s over the past 2 decades, one thing in common is each platform provided a new feature that was “novel”.

Whether being Snapchat’s stories, Twitter’s initial 140-character limit, Vine’s 7-second video, or even Reddit’s use of a series of forums known as Subreddits.

Reddit is known as the “Front Page of the Internet” a site filled with various online forums known as “subreddits”, where you could dive into anything topics ranging from your personal interest, passions to even learning a new skill or trade.

Reddit’s ability to provide value Is evident with over 430 million active users from over 200 countries. – As of October 2021

However, as Interesting and valuable as Reddit is to deliver content and information it does have a few issues:

  • Recycled Post and Content
  • The creator does not have an option to earn off their content
  • Moderators censoring posts from a top down approach (acting as a the gate keeper of information)

What we’re solving

The goal of this Reddit-based Social Media DApp is to answer the following question:

The Hypothesis: Can a user benefit from a Web3 Platform that has the same characteristics as a web2.0 site like Reddit but with the additional benefits native to a decentralized application running the blockchain? – In order to solve the above issues.

JoinSpace.xyz – Like Reddit but on Web3.0

web3 dapp social media joinspace
JoinSpace Social Media – Video Meme

After playing around with the Ethereum Development Stack and finding a reasonably memorable domain name, here is the project.

Introducing JoinSpace
JoinSpace is a Decentralised Social Media Application (dApp) running on the Ethereum Network. Creators can earn tokens, and can be tipped ETH for creating quality content, (whether memes, images, or posts) and contributing to the larger space ecosystem.

Like Reddit, JoinSpace is a network of communities where people can dive into their interests, hobbies, and passions. JoinSpace is broken into many communities known as “subspace” – each of which covers a different topic.

How JoinSpace works:

Like Reddit, JoinSpace retains the main functionalities native to Reddit. Such as upvotes, creating community awards and comments.

How JoinSpace Works?

joinsapce - upvote awards
Web3 Social Media Dapp – Award Rating

By default, each content posted has a net vote of 1. (Net votes being the difference between Upvote and Downvotes).

1. User Upvotes Creator’s Content: Net vote increases by 1- Users Credibility increases.

2. User Downvotes Creator’s Content: Net vote increase by 1 – User Credibility decreases

Note: If a posted content net votes drop below -2 (known as Swamp Zone). The content posted is no longer visible via DApp UI (only visible on-chain via etherscan.io). The Poster’s Credit Rating subsequently drops to reflect the negative performance of their content creation.

This helps prevent bad actors from posting “offensive” content and filter low-effort posters/ recycled content. This is one of many in-built regulators within the JoinSpace, with the goal being community regulates itself. Thus all power is democratized amongst the user, through a simple voting system logged on-chain.

Advantages of Web3 Social Media DApp

Web 3 Social Media Dapp - Tip Eth JoinSpace
JoinSpace – Tip ETH as Payment to Content Creators

Below are the additional features which leverage the Blockchain and Smart Contracts to manage these rules.

Native In-Built Payments

With the added benefit of the inbuilt native payment system, users can earn/tip/donate ETH. As a result, users can award creators for the content they find useful.

Create a Community

Reddit represents a specific online community by a subreddit. Where the posts are dedicated to the particular subject. e.g. r/gaming is about gaming or r/finance.

Similar to “r/” subreddits prefix. A sub-space “s/” is a community where users can post and discuss a topic based on a particular subject.

Example:

The prefix of space begins with an “s/”. For example, “s/investing” is a subreddit where (degenerates/non-degenerate alike) investors can meet and talk about all investing, or users can join and search for a job while being paid all within the subspace within s/web3jobs ecosystem.

Users can gain the ability to create their own community/space, where a creator would own a digital space on the blockchain. As a result, curating a community where other users can join the creator’s space. (E.g., A creator creates s/MemeEconomy).

Earn Tokens

Similar to Karma points in Reddit – which is what users earn when a user upvotes their post/comment. The Karma equivalent for JoinSpace is a native ERC20 Token called (SPACE).

Based on the number of upvotes provided by the community. A certain proportion of Tokens would be awarded to the content creator. In effect, a tokenized version of Karma. Meaning you earn tokens and build a reputation based on what others in the community find useful.

Ownership of Digital Assets / NFT
JoinSpace provides the ability for users to own their own content with a transaction associated with their tokenURI stored in IPFS.

JoinSpace Architecture – Web3.0 Social Media vs Web 2.0

web3 social media dapp architecture
Web3 Architecture (Simplified)

The biggest difference is between a web3.0 Social Media Dapp and a traditional web2.0 Social Media is in its decentralized architecture.

Unlike the traditional social media sites which their backend and data are stored on a centralized server whereby the company holds owns your data, which can be sold.

JoinSpace DApp interacts directly with Smart contracts, where data is stored on the Ethereum Blockchain without any tampering and retains proof of creatorship. As opposed to web2.0 centralized databases which can be manipulated.

Taking JoinSpace as an example, All the backend code and logic are programmed within the smart contract including the number of posts, upvotes, and even the ability to tip ETH to another user. (However, we’ll talk about the scalability/limitation of this approach shortly).

JoinSpace Architecture – Development Stack

web3 architecture diagram generic ipfs store data on blockchain
JoinSpace Web3 DApp Architecture

JoinSpace Architecture can be broken apart into 3 Major components.

JoinSpace Consists of:

  • UI – User Interface – Web 3.0 Website (dApp)
  • Smart Contract(s) – Solidity based Smart Contract
  • ERC20 Tokens – SPACE Tokens

JoinSpace Ethereum Development Stack:

  1. Front End: ReactJS + Etherjs – Visual UI and Interacting with Smart Contract
  2. Backend: Solidity – Smart Contract Logic deployed on Chain
  3. Ethereum Development Environment – Hardhat for Testing, Scripting & Deploying

Trust and Reputation

Web 3 Social Media Dapp - User Credit Rating
JoinSpace User Credit Rating System

Providing rewards of earning tokens and gaining awards from the community would inevitably attract Bad actors and low-effort posters to the DApp. A series of spam features have been implemented into the Smart Contract.

Note: Bad Actor’s preventative features are essential to maintaining a thriving ecosystem within JoinSpace. If you have any ideas and would like to contribute Join the Discord
.

Upvoted Score:

Upvoted Score (%) displays the current performance of the post relative to its overall run. The higher the price, the more tokens the creator/poster earns.

The Upvoted Score per Post can be calculated by:

Post Performance, % greater than 70%, is highlighted as Green.

Use Credit Rating (UCR)

joinsapce - upvoted formula equation
Upvoted Content Formula

The User Credit Rating allows the user to view the credibility of the overall user. Similar to Reddit’s “Karma”, this helps identify quality Creators’ and exposes bad actors trying to exploit the DApp.

Users Build a Good reputation (UCR) from an overall net upvote score. Whereby (Upvotes > Downvotes). Users risk a lower UCR if a number of previous posts end up in the Swamp Zone.

JoinSpace User Score Formula Web3
JoinSpace User Credit Rating/Score Formula

Below is an example of how you can lose value based on your post, leading to a lower credit rating.

1. Repost content (without any due accreditation of original creator)

2. Posting Offensive Content

3. Not Flagging the relative appropriate content “NSFW.

Where Sigma is the accumulation/sum of Post’s total votes per wallet.

JoinSpace User Credit Rating Tiers:

User Credit Rating (Types)User Credit RatingMeaning
Top Contributor4.20The highest form of Social Clout
Valuable Contributor0.69The User is a valuable trader
Average Contributor0.01All Users start here by default
Low-Value Contributions-0.03User posts are low quality
Spam Users-0.1Users Post would not show on dApp (only on Chain)
(User Credit Score Ratings)

Note: a net UCR of -0.1 would reduce the user rating to “Spam”. Spam Rated Users are not shown via dApp due to their previous activity of low post quality.

JoinSpace Verification (Optional)

Given that Interacting with Blockchain only requires you to have a wallet, Users by default are anonymous, (only identified by their wallet ID). To prevent the number of low-quality accounts. A user may wish to verify their JoinSpace account with their Twitter account.

A user would receive a verified blue check and may wish to share their post via their Twitter account to promote their own content.

JoinSpace has been deployed on the Ethereum Test Network, view Smart Contract. A full launch of JoinSpace would be deployed on either Ethereum or Matic Mainnet. The deciding factor would boil down to cheaper gas fees given the number of interactions required by the User for a better UI experience.

JoinSpace is an ongoing developing project, (view whitepaper) with the goal to be a leading social media DApp focused on user content creation on the Ethereum Network. The following features are to be implemented as part of JoinSpace’s Road map to realize this.

Current Limitations and Drawbacks

Web 3 Social Media Dapp - Comment Section
JoinSpace – Social Media Comment Section

The proposal of building a decentralized social platform provides an array of benefits, such as being decentralized, leveraging native cryptocurrency payments, ownership of data. However, a decentralized DApp does come at a cost – whereby certain users can take advantage doing the following:

Limitations – Bad Actors

  1. Stealing Content – Actors posting material with incorrect accreditation to the creator/incorrect source or misleadingly by flagging content as “OC” (original content)
  • Recycled Posts – reposting other users’ posts/memes (claiming to be their own) in order to “farm tokens.”
  • Posting Offensive Posts – Bad actors attempt to destabilize communities by posting offensive content to harm other users’ experiences.

Possible / Implemented Solutions Solutions

As a way to mitigate potential creators creating hateful communities a user requires to meet the following requirements:

  • Created at least 1 Post
  • Acheive the minimum amount of “SPACE” Tokens to Post.
  • Achieve Minimum amount of User Crefit Rating (Karma Equivalent)

A Potential Requirement: Deposit ETH as collateral in a smart contract to incentivize good behavior. Reports from other users would use the ETH Deposit to cover any gas fees made by the user.

High Gas Fees & Scalability

Web 3 Social Media Dapp - Eth Gas Fees
MetaMask High Gas Fees

Further, although JoinSpace is running entirely on-chain making it fully decentralized; this comes at a cost.
Each action, such as a post or upvote requires a transaction to the Blockchain. Meaning, each “Write” to the Smart Contract comes at Gas Fees. Given Ethereum Gas Fees are higher compared to other chains such as Polygon Matic, this leads to each upvote/ content upload and interaction becoming expensive over time and can lead to a small number of Posters who are able to afford the Gas Fees required to interact with the dApp.

As a result, JoinSpace would initially be launched on the Ropsten Testnet for early beta testing with an initial userbase. However, the use of Layer 2 solutions, such as Polygon or TheGraph can help reduce High Gas Fees.

Considerations – High Has Fees

In order to launch this Project on a Blockchain Mainnet. JoinSpace would most likely be deployed on a Cheepr Gas Fee Network, such as Polygon or Avalanche.

Next Steps:

In order to improve JoinSpace’s practicality, cheaper fees (none being optimal) would be required. Future developments of JoinSpace would explore the following (phase 2:):

  • Deploy to a cheaper gas fee Blockchain e.g. Polygon, Avalanche.
  • IPFS Indexing Protocol such as TheGraph to reduce writing to the Smart Contract.
  • Create your Own and Mint your own NFT
  • Cross Chain Solutions

Final Thoughts

web3 dapp architecture development stack
Web3 Architecture Development Stack

The ability to deploy a fully functional application as a Smart Contract is interesting. This could be revolutionary for future applications as users can transparently see how the contract works without the use of opaque/black-box algorithms (view JoinSpace Smart Contract) – Improving transparency.

JoinSpace goal is designed to be a Reddit alternative on Web3.  However, the limitation of Ethereum such as High Gas fees Transaction / Block size would be the biggest impediment to scaling a social media platform to provide a decentralized alternative on web3.

Conclusion

Lastly, the biggest issue to address would be moderation, although I have outlined and implemented the current prevention functionalities within the Smart Contract. There isn’t any protocol for banning a bad actor from using the Ethereum Blockchain. A bad actor can simply create a new wallet, and consequently could possibly be posting/using the platform to spread harm.

And this is an ongoing issue with large tech companies, that requires a large team and a heavyset of algorithms to detect and flag.


If you have any innovative ideas that can incentivize good behavior and penalize bad actors. Please leave a comment below, would like to know your ideas, or join the discord or the Livestream to brainstorm ideas.

Web3 is an interesting new paradigm with potentially revolutionary use cases. New projects are being built by the day. JoinSpace is still evolving, and this is Phase 1. Subscribe to my Youtube Channel for more updates.