Back to blog
Offchain Points For Onchain Activities
It didn’t start with Rainbow, but it sure hit critical mass when Rainbow wallet airdropped Points to their users. Points, not crypto. Points in a database, not on a blockchain. There have been others who have used similar mechanisms. We’ve written about Farcaster a few times here, so we should mention Warpcast, the original and (likely) most popular Farcaster client. They also recently rolled out a Points system called Warps.
Offchain Rewards
What are Points and Warps and anything resembling them? In practice, they represent a loyalty program. Think about your grocer’s frequent shopper card or your favorite airline’s mileage program. Points are common, and we’ve seen them in crypto for years. However, Points and loyalty rewards up until recently have always taken the form of on-chain rewards – i.e. an airdrop.
An airdrop is when someone sends a token (or many tokens) to your wallet address without you taking any action. Airdrops have been a mainstay of crypto for years and have resulted in an entire class of web3 users commonly referred to as “airdrop farmers”. These users use a product in hopes of one day getting free tokens.
Points, on the other hand, are off-chain. They don’t represent anything outside of the ecosystem from which you earned them. Rainbow Wallet’s Points are useful for, well, nothing. At least right now. This will surely change and Rainbow may yet do an actual token airdrop. For now, though, the Points are a thank you to users and an opportunity for Rainbow to try to syphon off users from MetaMask. The fact that the Points are off-chain doesn’t mean they can’t be valuable now, though.
Warpcast’s Warps can be used today in their app. Warps are used for paying for on-chain activities. You can even mint NFTs directly from the Warpcast app using Warps. Warps can be purchased in addition to being dropped into users’ accounts for activity on the Farcaster protocol. The team behind Farcaster has often said they do not plan to launch a token, so Warps effectively represent their permanent rewards system, not a baby step towards an eventual airdrop.
None of this prevented memecoin madness from settling in. People launched ERC20 $POINTS tokens, they launched $WOWOW tokens, they launched… $FARTS… Memecoins represent an appetite, but not an implementation. Off-chain rewards that have real, tangible value are something users of many apps in the wider web3 ecosystem want, yet implementing off-chain Points can lead to nothing more than an airline miles-style product.
How can we leverage web3 tools to improve upon the old web2 rewards model and build something web3 native?
Points for IPFS
If your knee-jerk reaction was IPFS, then maybe you should be working at Pinata. But also, it’s probably right. Early in Ethereum’s evolution, it became clear that a large chunk of data tied to on-chain transactions would have to be stored off-chain, preferably on IPFS. The NFT bull run of 2021 and early 2022 rekindled this paradigm, with Vitalik Buterin even weighing in.
When NFTs began taking off, many of them pointed to assets stored on centralized storage systems like AWS and even Dropbox. Those file storage systems offer no portability guarantees. You cannot act as a steward of the data when it is locked in a closed system. People quickly realized that IPFS was a better solution for NFT media, and the market quickly adopted IPFS as the standard for metadata and media.
The same thing could and should happen with Points.
How would such a system work? You don’t need a token. You might need a smart contract though if you want to keep this fully public and decentralized. Imagine a registry contract for Points or Warps or Widgets or whatever. That contract could track either a mapping of all Points holders and their associated “metadata” file or it could be a single string attribute pointing to a massive JSON dump of all the data. The former is less to maintain in one file but more expensive to update. The latter is cheaper but managing the JSON file can get out of hand.
In either case, what would go in the JSON file and why couldn’t it be stored onchain entirely? Let’s answer the second part of that question first. Storing this type of data on-chain in its entirety is fine for small datasets, but for the same reason NFT metadata is stored on IPFS, the flexible format of any Points/rewards system means that trying to store it on-chain would be both onerous and costly. As for what goes into the JSON file(s), that depends on the purpose of Points, how users received them, etc. One model might look something like this:
{
"address": "0x...",
"activity": [ARRAY OF ACTIVITY THAT RESULTED IN POINTS],
"points": 3466
}
This is a simple representation, but imagine that the array of activity
is very large. You wouldn’t want to store that onchain. The IPFS-based JSON file acts as a cached record of the activity that generated the Points as well as the holder of the Points and the balance. However, this is just one (admittedly quickly ideated) proposal. There are many other structures and formats this can take, but the end outcome is the same.
Points and rewards are public, auditable, and useful outside of just the app issuing the Points. With a public record, other apps can use a person’s point balance to offer discounts, integrations, and other perks. That’s not possible when Points are stored in a closed database somewhere.
Conclusion
Points as a web3 trend may die off, but rewards never will. If the market shifts toward off-chain rewards instead of airdrops, we should still push for an open, immutable, and auditable solution for issuing and tracking these rewards. IPFS is the perfect fit for such a system.