On the Absurdity of Blockchain Development
There is so much bullshit information about Web3/Blockchain development right now it's very difficult to see through the noise. Every would-be charlatan has hopped on the hype train. The Mark Cubans and Gary Vaynerchuks of the world continue to promise that blockchain technology will solve all of the world's problems. My curiosity has nonetheless been piqued so I set out to learn more about blockchain development by building my own application. Along the way, I learned that blockchain development is interesting but it is a solution in search of a problem and I doubt it will be useful to mainstream consumers any time soon, if ever.
Post Whatever You Want
In my personal life as a software developer, I'm drawn to chaotic ideas. I enjoy working on projects that are disruptive to polite society and laws if possible. When brainstorming DApp ideas I reflected on the inherent strengths of decentralization as realized on the Ethereum blockchain:
- Anonymnity - only identifiable by your public address
- Cash-linked - money is built into the platform, transactions are "easy"
- Multichain - if the user has the MetaMask plugin, it's easy to switch between ETH Mainnet, Sidechains, and other derivative blockchains
The app idea I came up with as a result of these strengths was a message board app. The rules would be as such:
- A user posts whatever they want, as text, up to 999 characters
- Their post has their public address displayed - by clicking this other users can send them ETH if they like what was posted
- Once reply #100 is posted - the board erases itself and post 100 becomes post 1 of the next iteration
I'll write a future post that will get more into the technical details. In the mean time you can view the app at https://www.ephemeralboard.com/ and the source code on my GitHub. You can interact with the app with imaginary money by switching your MetaMask network to the Kovan test net.
Another possible future post will be a deep-dive on my design decisions for the app.
Technical Hurdles for User Onboarding
I have a litmus test for predicting whether a technology is ready for mainstream adoption. I ask myself a simple question - "Could my wife use this technology on her smartphone." My wife is slightly more technologically literate than an average user but she's not passionate about technology so I estimate that her frustration limit for troubleshooting/setting up tech is about that of the average user. In contrast, if I really want to try an app that needs some setup I will spend an inordinate amount of time troubleshooting it to get it to work - this is a blind spot for me when determining market viability.
In order to run the very simple app I developed a user would have to install the MetaMask browser extension. They'd have to then figure out a way to buy Ethereum - MetaMask provides two services to do this that are linked from the browser plugin but as of the time of writing, both of them were broken 🤷♂️ I ended up having to purchase ETH on Coinbase (and pay a fee), then transfer the ETH to my wallet by QR code. If you were in that situation and didn't have a Coinbase, or another exchange account, you'd have to take a detour and set that up first - which could take days because of ID verification and bank account linking.
Even though the wife test is already failed after all of those steps - let's dive into its second condition "...on her smartphone." Possible, but not obvious. You won't be able to run the app on Safari or Chrome, you'll need the MetaMask mobile app which has a maimed, but functional built-in browser.
Provided anyone is interested in my mediocre app enough to go through all of the aforementioned steps, they'll have to pay to post.
Blockchain for the Rich (Important for Prospective Blockchain Devs)
The backend of decentralized applications largely or entirely consists of smart contracts. Smart contracts are programs that run on a blockchain. They can have functions and state (in lieu of a proper database).
Smart contracts cost gas fees to deploy. This is a one-time expense instead of a monthly bill like you might have with a traditional cloud services provider. What nobody told me was how much this transaction would cost in USD. When I went to deploy on the mainnet I discovered that it would cost about $400 in gas fees to deploy the contract. I tracked the gas price over a few days and was able to deploy for a steal at $248.41 🙄
At this point, I assumed my money woes would be over. My smart contract would now forever live on in the blockchain and users would pay a nominal fee to interact with it - after all, the functionality isn't that complex, the only state contained in the contract is an array of text strings. Sadly this would prove to be incorrect. Here is a photo of what gas would currently cost to make a post on Ephemeral Board on the mainnet:
I am now billing Ephemeral Board as The internet's most anonymous and most expensive conversation.
Seeking help, I made a post on an Ethereum developer message board. After creating a post there that cost me no money to submit, I received replies telling me to look into deploying the smart contract on the Polygon or Avalance network. Both of these networks are known as layer 2 networks - they somehow run off of the Ethereum blockchain and allow for significantly lower fees when interacting with smart contracts - pennies - which is what I expected with Ethereum. Before deploying smart contracts on either of these blockchains, I needed some coins.
You can bridge tokens from Ethereum to Polygon. I'm unclear on what "bridging" means and why that word is used instead of "transferring". I assume it's just an extension of the obsessive rebranding of existing concepts occurring everwhere else in the blockchain world. I played along and used Polygon's official bridge app to bridge my coins. At this point I had $47.27 in my Ethereum wallet. After submitting my bridge request (the submit button on their app says "transfer" btw) I discovered that in order to complete the transaction I'd be charged $45.52 in gas fees - no thank you.
AFAIK there is no way to directly purchase Polygon and transfer it to MetaMask without going through Ethereum (which will cost gas fees).
Avalanche has at least 3 chains (P, C, and X) with different purposes. The X chain is for eXchanges. I purchased $5 of AVAX on the exchange (Coinbase) and went to send it through the app in the same way I did with Ethereum. Turns out there's a minimum transfer amount to do this - at the time of writing, you must send a minimum of about $300 - no thank you.
Conclusion: A Cult Following
The most harrowing part of this whole experience was interacting with the cryptocurrency community. In my journey through posting on forums, reading tutorials, and watching talks, I seldom encountered anyone I wouldn't label as a zealot. I encountered two main types of responses when I asked about the pricing of creating and using smart contracts:
It's Already Being Solved With [name] Coin!
This is a talking point I heard regurgitates so often during my research and interactions with Web 3 devs that it's almost a meme. Bitcoin didn't set out to do what it was going to do, neither did Ethereum, why would it be probable that the latest shitcoin is going to "change everything"?
Stop Being Poor
This one hit harder. I make a decent living as a (non-blockchain) developer. $250 isn't a small amount of money for me but I can also pay it if I'm stubborn enough to want to put my work on the blockchain. I can even see the financial argument that by paying that money up front I won't be paying AWS costs over the life of the software. What I can't stomach is the cost for users. I got excited in the early days of Bitcoin because I, among many others, saw it as a liberating and equalizing force. It was money that could move between parties without paying fees to fat cat bankers. It also existed (at that time) as currency outside of the loving watchful gaze of the government.
In a little over a decade - we've gone from a utopian vision of new currency to a get rich quick scheme propped up by shrewd highwaymen. I was hopeful that Web 3 would bring back Web 1.0 expressiveness and individuality, but it's clear that the control matrix established in Web 2.0 persists in Web 3 - it just has a different name and lives behind an additional layer of abstraction.