Building on Web3
August 1st, 2022

I first heard of Bitcoin in 2013 when I was a freshman in college. For my first computer science class, I had to choose a computer-related topic and do a write-up. Decentralization was the key concept, but I still didn’t quite understand it at the time.

After graduating college, around the time of the 2017 bull run, I began to pay more attention to cryptocurrencies. Armed with a better understanding of computers, I dove deep into the technology more than the prices; I wanted to know what about the tech generated the hope that drove the hype. I learned the difference between blockchains and the endless possibilities of building on a Turing Complete platform like Ethereum; that’s when I first really “got it.”

Around the same time, I learned about Bitcoin Maximalism which somehow was adjacent to all-meat diets, bunkers, guns, and libertarianism. What I found interesting about Bitcoin Maximalism was that if you like Ethereum, you’re a centralized shill to them. But to me, technically, you just couldn’t build as much on Bitcoin as you could on Ethereum; it was about building useful and better things on a sufficiently decentralized platform, not just saying screw you to the man. As someone who strongly believes in freedom, I saw where they were coming from; however, it didn’t feel right to hold such a strong ideological belief in something technically less capable, so I chose to work on Ethereum.

My first job at a crypto company was at Dharma -- a mobile wallet powered by Ethereum (acquired by OpenSea). The team pioneered wallet infrastructure that maintained user funds in their control with recovery systems in case they lost their keys; it was a balance between user ownership and safety. I learned the challenges of creating products with a blockchain component and a good user experience there. We pivoted many, many times. One of the Dharma infrastructure components that allowed us to iterate quickly was the Upgrade Beacon design of the Dharma Smart Wallet. It allowed updating the code on all user wallets with a seven-day time-locked transaction. Three observations that this system crystallized for me:

  1. The Dharma team reserved the right to update the code on your wallet as they saw fit to support better the product they were trying to build.
  2. The Dharma team gave you a time window to move your funds out of your wallet if you did not like the updates to your wallet code.
  3. The Dharma team did not care if you disagreed with the update; they didn’t owe you anything. They were committed to building a good product through iteration to keep the business alive. If you didn’t like it, see #2.

As a builder in the crypto/web3 space, sometimes it feels like you’re building against the current because there are strong ideological components to what we build. But for purely financial crypto products, the above feels like a valid framework for building because the exit is simple, you just move your money out of the system.

Now that I’m at Mirror, I’m finding myself in similar situations where we need to make decisions that live on a decentralization spectrum. However, building in web3 doesn’t entirely fit the same framework as a purely financial crypto product because it's not as easy as moving your money out of the system. So we’re grappling with a different problem; we’re trying to build systems that include crypto tokens and relations between creators and audiences that rely on identity and credibility built on an inherently anonymous system. On top of that, we’re trying to create the right incentives to help spread your writing to as many eyes as possible while generating a self-sustainable economic system. This makes it much more difficult to have a simple “exit” button.

With all of that in mind, the focus should be less on how decentralized your system is and more on if you’re building a useful product with decentralized components where it makes sense. The people who focused too much on decentralization in web3 have started to resemble Bitcoin Maximalists, they want everything to be fully decentralized at the expense of providing a useful product. Although still lacking a full proof framework, here’s a list of things that have been useful for me while building on web3:

  • Primitives must be decentralized and open -- for Mirror, data lives on Arweave and Writing NFTs on Optimism. Your collectors are accessible through the open graph of wallets that bought your NFTs.
  • Iterating on UI rather than updating the entire protocol helps make faster iterations on products and test ideas.
  • The web2 vs. web3 framing is not as useful as you might think. Remember how great web1 vs. web2 was for big tech adoption? No, because no one ever said that.
  • Forget maximalism and build with an eye toward the future. The Mirror team should’ve introduced email notifications long ago, but some of us were still too ideologically opposed. Wallet-centric subscriptions with email notification notifications are very innovative, but we wouldn’t have gotten there if we didn’t want to use email.
  • Compromises on decentralization might be fine as long as they are made for security reasons and you still provide somewhat of a credible exit.
  • We’re still trying to figure this out, so be kind to yourself and others.

In such a nascent space, we must find a delicate balance between decentralization, user experience, and building sustainable businesses; that is not an easy task, so forget the maxis and build something useful.

Subscribe to indreams.eth
Receive new entries directly to your inbox.
View collectors
This entry has been permanently stored on-chain and signed by its creator.