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

Samvad

The next front page of the internet

Samvad

Created At

ETHIndia 2023

Winner of

Chainlink - Best use of Chainlink CCIP

Project Description

Samvad gives you a strong financial incentive to post quality content. You earn when people reply either to you, or someone who replied to you. With this specific geometrically decreasing incentive, the upside of posting quality content is high. You stop earning if you cross a specific number of downvotes, which prevents spam and overly controversial discussions who want to game the system.

Samvad is also deployed cross-chain! Infact this reply itself is being sent from Avalanche Fuji to Ethereum Sepolia using Cross Chain Transfer Protocol.

It also has a great user experience. Samvad shows real-time data on how many people are reading a particular post, which would enable participants to choose the highest audience. Notifications are also delivered whenever someone interacts with content. Once you start using samvad, it's hard to go back to the social media where you contribute and they earn.

Links

How it's Made

Intro

We ran into several issues while using some of the tech but we dived deep into their tech and figured it out.

ChainLink

Starting with ChainLink, we were particularly oriented towards them because we wanted such a platform to be accessible from multiple chains. The CCIP send was showing a gas estimation failure error on Remix, and when we forced the transaction it kept failing. When we ran the sample functions given in the docs, it worked fine. Our use case was a bit more complicated. For 3 of the 4 CCIP functions, used a one way token/data transfer. The other however included a transfer from source to destination chain which triggered another send from destination to source. We realized having the CCIPReceiver and a fallback function for the contract to accept token was necessary to prevent the failures.

Push Protocol

With Push Protocol, we faced version conflicts. We were using ethers 6.x.x while Push Protocol supported only 5.x.x, so we chose to downgrade it for the sake of the UX improvement their notifications offer. That lead to a cascading issue with several other dependencies like hardhat and axios. Eventually we resolved the conflicts by modifying some functionalities.

Waku

While integrating Waku we were unsure of where to place the LightNode object, due to which often the node was bootstrapping repeatedlyand was leading to null errors where a request was made to the node the moment it reinitialized. We got over it by moving the object further up the ladder. We were reluctant at first since we were using Waku to show live audience reading a particular post on our platform, a metric we call liveliness. But eventually we figured out we could use ephemeral push to trigger soft reloads instead of relying on the total state of the liveliness.

Overall, we faced several other issues like minor solidity version conflicts and some snags with The Graph and Metamask here and there, but I only mentioned the issues we had to spend considerable time on.

background image mobile

Join the mailing list

Get the latest news and updates