Back to blog
Solving Consumer Crypto UX With Privy & IPFS
In 2017, I created my first web3 startup. Back then, we just called it blockchain with maybe a sprinkling of “Web 3.0” in there. The startup was an encrypted Google Docs alternative with authentication backed by the Bitcoin blockchain. As I tried to sell the software to those who most needed privacy, NGOs and lawyers and journalists, I realized the user experience of simply authenticating and managing an account was too big a hurdle.
In the years since, I have given talks, written about the user experience problem in web3, and even launched another startup with the goal of trying to solve the problems I was seeing. This all feels like a million years ago, well before I came to Pinata, and yet it was only 4 or 5 years. In those 4 or 5 years, the experience of using web3 products has improved exponentially. Embedded wallets with social authentication, paymasters that sponsor transaction fees, and account abstraction, the crypto ecosystem feels like it’s growing up.
This is never more apparent than when you build something designed to be accessible by anyone, not just those native to web3. In building Cosmic Cowboys, we chose to leverage Privy as our authentication solution because they make it easy to offer an incredible user experience. It’s the type of thing I wish I had when I was building my first blockchain startup.
Gaming and Consumer Applications
For all intents and purposes, gaming is a consumer application. You might think of consumer apps as things like X (Twitter) and TikTok and Instagram, but the problems those types of apps face are very similar to the problems game developers face. Games, like traditional consumer applications, cannot rely on top-down sales as enterprise software often does. This means games have to compete on the experience. Player experience can be the difference between a viral indie game and something you can hardly get your own family members to play.
Gaming and consumer apps share another similarity–the cold start problem. The cold start problem is one where you need a lot of people engaged and using the app or game for the product to be entertaining or useful, but you can’t get a lot of people engaged because a lot of people aren’t already using it. If it feels like the chicken and the egg problem, that’s because it is.
This is one area we wanted to focus on when we began building our game, Cosmic Cowboys. The game would center around NPCs (non-playable characters) instead of relegating those characters to the background. The game would also be multiplayer. Had we not focused on NPCs, we would have suffered from the same cold start problem all online multiplayer games suffer. Instead, we were able to create a rich and engaging world even if only one player ever joined the game.
We’ll dive a little more into how we solved the cold start problems with NPCs, but we couldn’t have even begun to solve that problem if we were stuck focusing on the experience of even onboarding to our game. This is a problem many apps and games in web3 still have today, but they don’t need to.
Between IPFS as a hot caching layer for data and assets and Privy for onboarding and wallet experiences that feel like web2, building great consumer experiences in web3 is possible. Let’s take a look at how we are proving this with Cosmic Cowboys.
Cosmic Cowboys
We’ve written a bit about what Cosmic Cowboys is and how it got started, but here’s the quick tl;dr for the game.
In the future, an asteroid made entirely of lithium crashed into our galaxy. An electric hungry Earth couldn’t wait to start mining the space rock, so a rag-tag group of space cowboys was rounded up and launched into space. These would-be miners were knocked off course and crash-landed on Jupiter’s moon Ganymede. Now, they are stranded and they must be rescued by an elite team of Planet Jumpers. Players interact with both miners and Planet Jumpers through a chat terminal interface. Every in-game character is an AI-powered NPC. They make their own decisions based on the game state and the rules of the game. However, players can influence every character in the game. Winning the game means launching Planet Jumpers and working to get those Jumpers to rescue Miners.
Quick side note: If this sounds interesting, the game is in closed alpha right now, but you can get on the list here.
The game is technologically impressive and forward-looking, but that’s no excuse to build something with a bad experience. Of course, we face plenty of challenges around user experience as we built the game. The game started as a hackathon project, but even in the rushed process of slapping something together we knew the experience of connecting a wallet and authenticating into the game needed to be smooth. Our first pass was not smooth.
We found a solution that I won’t name here because it’s unfair to the work that the team behind the product put into their solution. However, that solution only worked for about 40-50% of users of the game. This was a dealbreaker, so we started brainstorming what specifically we wanted to solve for. This is the list we came up with:
- Social or email auth options
- Externally owned account auth option
- Blockchain transactions and message signing without pop-ups
- Portability
The entry point to the game could not be the blocker. We needed a solution that allowed non-crypto native users to be able to access the game. Social auth or email auth was the obvious solution, but these authentication options needed to work, and work every time not just most of the time. That said, Pinata is a mainstain of the web3 space, so we were obviously going to attract crypto-native users. So, we needed an option to allow for external wallets to be used.
Since the game is on-chain, there are blockchain transactions that will happen (though we have obfuscated a lot of this and run as much as we can server-side), and there are messages that need to be signed. Those who are comfortable with external wallets will likely have no issue with pop-ups for signatures and transactions. However, our hypothesis was that users who went with the social auth or email auth route and received an embedded wallet would not tolerate such pop-ups.
Finally, we had to make sure that we didn’t control these wallets and users could exit or migrate anytime they wanted. Exiting is a major part of the ethos we believe web3 is built around. The right to exit means that you do not have to be stuck with a single vendor. Take the social media world and look at X (Twitter). When there was a mass exodus from the platform to alternatives like Mastodon, users on X did not have the right to exit, meaning their social graph and all their posts remained locked in X’s platform. Returning to web3, IPFS is the ultimate proof of this right to exit ethos. Any data stored on IPFS with a pinning service can be moved to another pinning service or your own personal node without permission.
Because of past experience with hackathons and through talking to our own customers, we were already familiar with Privy. It looked like Privy would fit the bill.
Now, in addition to the onboarding and wallet experience problems, blockchains present another problem–speed. Even with Layer 2 solutions, the speed of on-chain transactions can derail the in-game experience. Since our game was almost entirely on-chain, we knew we had to come up with a solution to improve the speed. This is where IPFS comes into play.
All media is hosted on IPFS, and through Pinata’s Dedicated IPFS Gateways, media loads incredibly fast. But, we wanted to push data down the stack as much as possible, not just media. Game state and even chat conversations were stored on IPFS. This allowed us to accelerate the delivery of updates and improve the experience.
Let’s explore both of these user experience solutions in more detail.
Privy
If you’re not familiar with Privy, it’s a powerful library that allows developers to onboard any user to their onchian app. While many of us who have worked in web3 for years are used to browser extension (and more recently mobile app) wallet solutions, Privy offers a solution for the remaining 99.9% of the world. Taking patterns people are already used to when interacting online, Privy has created an experience that is nearly indistinguishable from the traditional web without sacrificing many of the features that make web3 unique.
Integrating Privy into a project is a breeze. For Cosmic Cowboys, we leveraged Privy’s JavaScript SDK. We were able to customize the authentication modal, set specific rules, and track usage. One of the most powerful parts of the Privy integration is the customization. As mentioned before, we wanted a solution that would not force pop-ups on every user interaction. Privy made this simple with a one-line setting in the code. Privy’s developer experience allowed us to integrate and then move on, which is exactly what you want as a developer. You don’t want to spend time solving authentication problems.
Today, crypto products are graded on a curve. Our work at Privy seeks to help devs ensure that a great crypto product is just a great product: users should be able to enjoy the benefits of online ownership without becoming experts in cryptography. On-chain gaming is pushing UX forward and we're thrilled to partner with Cosmic Cowboys as they push our space forward.
Henri SternCo-founder and CEO of Privy
Privy’s solution revolves around embedded wallets. Unlike the wallets many of us are used to, these wallets do not require users to grapple with seed material or clunky browser extensions to get set up. That alone is a massive leap forward in user experience. But Privy didn’t stop there. They included the social authentication options I mentioned before and they included a simple backup system for easy account recovery across devices and the ability to export the wallet for users who prefer to transition to an external wallet experience as they experience more value on-chain.
Integrating Privy into Cosmic Cowboys was a no-brainer, and it took us less than 10 minutes. This allowed us to focus on the hard problems of creating a blockchain game that felt fast.
IPFS As A Caching Layer
Blockchains are not fast. At least, not usually. There are solutions that are built for speed, but if you’re building in the land of EVM, speed is not the norm. Layer 2s have drastically improved the experience and are relatively fast, but they are still slower than centralized databases. When building a real-time game, blockchain latency can destroy the player’s experience.
To solve for this, we not only turned to one of the best Layer 2s on the market–Base from Coinbase–but we also leaned heavily into our bread and butter–IPFS. IPFS is a performant peer-to-peer storage solution. Pinata has already been through multiple bull runs and not only managed the scale of massive usage but thrived under it, so we knew that IPFS would work well as a hot-cache layer for our game.
For any actions or state or any data really that we’d be writing on-chain, we considered how quickly we’d need to read it. If we needed that data to load quickly, we chose to also write to IPFS. In doing so, we could lean into the speed of IPFS Gateways. The benefit was a performant game that still did not lock anyone in. If anyone wanted to build their own version of the game, they didn’t need access to our IPFS data (though they could get it because IPFS is public!). Instead, they could get all the same data we could from the blockchain.
IPFS as an accelerant for game performance felt like a natural pairing. Combine that with the media assets all being stored on IPFS, and we were able to create a visually stunning game that loads fast and feels fast.
Conclusion
Whether you’re building a consumer app or a game in web3, the experience will make or break your project. We’ve experienced this first-hand, and while our game is still in closed alpha, we have seen the benefits of solving for experience up front already pay off.
Privy makes onboarding great and helps create seamless wallet experiences. IPFS makes data and media fast without sacrificing the open nature of web3. Whether you’re building games or consumer apps or something else, Privy and Pinata can help.