project screenshot 1
project screenshot 2
project screenshot 3

Just Commit

Just Commit is a decentralized application that leverages close-relationship accountability and strong monetary incentive mechanisms to motivate users to build healthy habits.

Just Commit

Created At

ETHBogotá

Project Description

The most intuitive way to understand the details of the project is through an example:

If I want to workout but don’t feel like it, I’d send a commitment to a trusted friend that specifies that if I don’t do within the next 4 hours, I’d transfer them 20 USDC from my wallet to theirs.

Monetary incentives and social accountability are both at work to motivate the user to follow-through on their commitment.

But who verifies that I did in fact workout? My friend would. If my commitment is still within it’s valid period, I’d attach a (sweaty!) picture of me to the open commitment for my friend to validate. If they confirm, the funds go back to me. If on the other hand I don’t submit any picture or I do but it’s non-related to my commitment, my friend would receive the staked money.

It’s important to note the assumption that the receiver of your commitment is someone you trust, as the incentives for them would always be to deny your submitted proof picture.

However, they would never maliciously act in such way if the fear of breaking the friendship is greater than the monetary value of the staked amount.

The goal we envision for the user is for them to ultimately stop committing to the habit, as at some point they would start reaping the rewards of the habit in and of itself. The dApp’s built-in incentives would not even be a comparable motivator.

Then, you’d be ready to start committing to building another healthy habit… ad infinitum :)

How it's Made

The dApp is built using the Next.js React framework for the front-end and Solidity and the Ethereum Goerli test-net for the backend. It’s hosted on Vercel and pointed to the justcommit.xyz domain. We use the RainbowKit SDK for the “Connect Wallet” button and the wagmi library for interacting with the smart contract.

There’s an input form that the user fills out in order to capture all of the parameters required to create a commitment. Once the user hits the “Commit” button and the user approves the wallet transaction, the createCommit() smart contract function is called and the commitment now goes on-chain.

A CommitCard React component is then created with “Pending” status and rendered on the front-end, now waiting for the user to actually perform their committed activity irl.

Once that’s complete, the user will “Upload” the proof picture, using web3.storage, which propagates the content through the decentralized file system of IPFS, and commit the cid on-chain to be verified by his peers.

Once the peer has verified the commitment was carried through, the committer will be returned his stake and his success will be shown on his feed for positive reinforcement.

background image mobile

Join the mailing list

Get the latest news and updates