project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

Plurality

A web3 onboarding protocol that enables the social media users and content creators to migrate to blockchain based web3 social networks by linking, verifying and aggregating their existing social reputation and interests while preserving privacy using zk-proofs.

Plurality

Created At

ETHOnline 2023

Project Description

We are living in a world where we make decisions based on someone/something's online presence on web2 platforms. For example, if you want to hire someone, you will view their LinkedIn. If you want to get some plumbing done in your home, you will call whoever has 5 stars on Google. In such a world where your online socials impacts your lives so deeply, it is now more important than ever to guard your social capital and keep it under your own control. Web3 social provides the perfect opportunity to do so. On web3 social media platforms, users can truly own their content, earn based on the quality they offer, and remain free from any external manipulation. However, the adoption remains extremely low. Lens, which is one of the famous web3 social platforms, has only 125k active profiles as of yet. Which is peanuts compared to the 4.8 billion users who use web2 social media platforms.

One of the reasons for low adoption is the lack of community in web3 overall. Time and again, we have seen that users on web3 grow when they are engaged. e.g. Cryptokitties in 2018 and on-chain summer stories in 2023. Therefore, we need to bring people on web3 and keep them engaged. Only with community and engagement can we enable the next billion use cases on web3. And we want plurality to play a part in it.

tl:dr; We need people with personalities not just addresses on chain.

If we need to increase the adoption of blockchain overall, we need to increase the adoption of web3 socials. Plurality’s team figured out 3 problems that are currently hindering users from moving to web3 socials.

  1. Complicated onboarding: The average user doesn’t want to download multiple wallets to interact with web3, therefore, our solution aims to reduce the existence of wallets.

  2. Lack of personalization: The Web3 experience is bland and not as rich as the alternate web2 platforms. We all have spent years curating our interests on web2 providers which web3 doesn’t have. We intend to reuse the reputation and interests information from web2 and use them in web3, all while preserving the privacy of the user.

  3. No network on web3: You want to be where your network is, therefore, we intend to create an incentivization mechanism to bring your users with you to the fascinating world of web3.

If we can solve these 3 problems, we have a chance at improving web3 socials adoption. We believe that Plurality could ease the onboarding process and allow users to have an engaged community and interesting content on web3 from day 0 of onboarding, greatly increasing the user experience and retention on web3 platforms. Our incentivized mechanism to retain communities will allow us to reduce the cold start problem of web3 dApps. Moreover, linking information from web2 to web3 will open doors for many interesting use cases e.g. self-sovereign advertisements, interest-based recommendations, etc.

How it's Made

USER WORKFLOW

  1. On the plurality portal, the user logs into their web2 profiles and creates zk proof of ownership. The secrets corresponding to zk proof are stored locally in the user’s MetaMask. This is done by using a metamask snap.

  2. The user then allows to fetch its reputation and interests from its web2 profiles. The user sees what interests are picked, and the user can add, remove, or delete the interests.

  3. The selected user reputation and interests are then linked on the web3 social platforms in a privacy-preserving way using ZK proofs. We did integrations with Lens and Orbis platforms.

  4. Finally, the user is incentivized to invite their network to join them on web3 platforms.

TECHNOLOGIES USED

To convert our vision into code, we used the following tech stack.

  1. OAuth: For proving that the user is actually the owner of the web2 account. We currently support Twitter and Facebook profiles.

  2. Web2 APIs: Graph API is used to fetch interests.

  3. Semaphore by Ethereum Privacy Scaling Explorations team: For Zk-membership proofs

  4. Metamask Snap: For storing zk secrets. We use MetaMask to reduce friction because it already has a huge user base and we don't want users to download an extra wallet.

  5. Web3 social integration: For connecting interests and reputation from web2 socials to web3 socials. We currently support Lens and Orbis web3 social platforms.

  6. Subgraph by The Graph Protocol: To keep the anonymized reputation and interest data of users available, we created a subgraph.

  7. React/Typescript: For frontend and backend.

  8. Solidity: for smart contract

THINGS WE ARE PROUD OF

  1. Balancing privacy and UX: We wanted to link web2 socials with web3 socials while preserving user privacy because otherwise, it can lead to a lot of potential attack vectors. We also wanted all of this to happen in a transparent way so that even non-technical users could use our solution. We wanted to balance privacy and usability and this was one of our biggest challenges to solve. We decided the best way to do this would be to use Ethereum Semaphore for creating zero-knowledge proofs with metamask snap creation for a low-wallet solution. Currently, every time a user authenticates with a web2 social profile, we create an identity commitment on a chain that corresponds to this web2 profile. The secrets required to prove the ownership are stored locally in the user's metamask using a snap module that we created. This means that user can prove to anyone that they completed the authentication and create a zk-proof at any time using their MetaMask.

  2. Fetching user interests from web2: Other than simply authenticating with web2 profiles, we wanted to bring interest data from web2 that could be used to personalize the web3 experience. This was another challenge because every platform is different and gives different kinds of interests. Moreover, some platforms (hint: Twitter/X) go to extra lengths to disallow people from getting any information even if the user is authenticated. TikTok straight away rejected our app to be registered on their platform because "they want nothing to do with web3". This was a funny experience. However, with a few tips and tricks (keyword pattern matching and Graph API by Facebook), we were able to fetch some interest data.

  3. Demoing that plurality is more than just onboarding: We wanted to demonstrate that plurality is more than just an onboarding protocol. To show this, we created a small demo PoC for self-sovereign web3 advertisements that uses anonymized user interest data to generate ad campaigns.

  4. Partner technologies: The Graph Protocol Creating a subgraph that links web2 data with web3 using arweave as the storage layer. This is a very new feature in the subgraph with very little documentation available, but our team was able to do it by coding straight for 24 hours 2 days before the deadline. It was so close to the deadline but we made it and it helped us achieve our advertisements demo.

background image mobile

Join the mailing list

Get the latest news and updates