project screenshot 1
project screenshot 2
project screenshot 3


A voting platform for democrotizing communication, vote on your tweet with Tweether!


Created At


Project Description

This project is a way to democratize communication, and especially tweets!

A user can fund the smart contract with LINK token, and they get TWE (tweether) token back. The TWE is used to both propose tweets and vote on tweets. When you vote on tweets, that TWE is locked up until you either swap it to another tweet, or the tweet is accepted. If you suggest a tweet, you actually burn a little TWE to suggest it. This tokenomics keeps the balance of LINK being send to node operators and TWE being in circulation in check.

For a tweet to be accepted, 20% of all TWE has to be locked in on a vote in order for that tweet to got through. There are plans in V2 to add profanity checkers and a network of chainlink tweet validators to make sure that tweets were sent correctly, if not, those oracles will get slashed!

In addition, if you are the last vote to send out the tweet, you are rewarded with an NFTwe. This is a unique NFT that has all the details of the winning tweet that went out, and a thank you for continuing to use the platform!

You can see all the tweets that are being proposed, and you can see that there are some interesting tokenomics to this. How does one deal with Whales? What happens with lost circulation? And yes, it's even a bit of an AMM since users can swap their TWE for LINK and vice versa anytime they want. Since you can swap the tokens, they will have very similar values at all times, but can fluxuate due to the LINK token being paid to the chainlink operators and TWE being burnt for tweet proposal.

How it's Made

The "back end" uses truffle & builder (now hardhat) in a nodejs environment. Tests with buidler and deployment with truffle. The chainlink node is a Linux box running in a docker container on the GCP with a psql database. The front end was express, nodejs, and react built with create-create-app (although, we swapped the state hooks for just regular class based state... I'll have to figure out state hooks later!)

A combination of web3.js and ethers.js was used. There were a lot of fun moving parts to build this!

background image mobile

Join the mailing list

Get the latest news and updates