Building The Best Damn Crypto Experience We Could: A Short Story About Engaging Your Users
For the last couple of months, I’ve been hammering my nugget trying to devise and implement what I want “using crypto” — especially dapps — to feel like. You’re reading this post because with this, my third bite of the apple, I reckon I’ve nailed it. Anyone attending this year’s Web3 Summit will see what I mean when they use conference’s app — assuming, of course, it doesn’t fall over in production and I wind up with egg on my face.
Before we begin, there is one hole in this work: onboarding from fiat. It seems to require expensive lawyers to do properly, so instead I’ve focused entirely on the “crypto-native” experience
Sidenote: If you’re at Web3 Summit 2019, I’ll be speaking with Blocknative’s Matt Cutler on day 3, so if you want to hear us prattle on about driving dapp engagement some more, look out for that.
What’s Wrong With the Current Experience?
This is a tricky one to answer, and it’s because one of Ethereum’s main strengths for developers also works very much against them.
Composability, from the perspective of both a power user and a developer, is an exceptional trait. As a user, I can wiggle my way through the blockchain universe knowing I control all my assets and, as long as I’m careful, can utilise them to leverage benefits from one of many different protocols.
As a developer, I know I can build protocols and experiences that leverage benefits of pre-existing software, without anyone’s permission.
This composability is, and will continue to be, one of Ethereum’s greatest assets.
It comes at a cost, though. As builders of these protocols and experiences, we’re often tempted to ensure that our users have as much control as possible at all times. I stress this last part because I think it’s the crux of our collective challenge. Tools like Web3.js, MetaMask, and other dapp browsers have taught us to think in a specific way and have imparted UX patterns which leave much to be desired.
There are times when asking the user to forgo omnipotence whilst they use your app might actually be the best of both worlds. You as the dev get complete control over the user’s experience, and you as the user get to skip all those familiar confirm dialogs that I bet you don’t really parse most of the time anyway.
If a user’s willing to trust that you’ve built the app such that it crafts their transactions in the correct way already, then there’s a decent argument to be made that suggests they might be willing to — purely metaphorically, of course — “hand over the keys” for a bit and let you drive. Developers rejoice.
Red Hot Web Three
Inspired by the OG burner wallet, I think there’s little-to-no reason that a dapp or app would be worse if it incorporated a wallet directly. Using an SDK like Abridged (which we’ll talk more about in a bit), decentralised wallet backup and recovery is possible as well, without ever straying too far from the Web 2.0 norms.
With my app developer hat on, I want as much control as possible over the user experience. I want to build something people enjoy using. I’m not coy about the fact that I want users to spend their money when they use my apps, but I want them to feel like I deserve it. When I cede control of the usage flow of my dapp to a tool like MetaMask, it introduces a hole in my metrics and my abilities to help the user, particularly with their transaction experience. This is the precise point at which my Dapp captures value for me and my users; if anything, this is where you as an app dev should want the most control. By the way, if you’re looking for a tool to help increase transactions and provide detailed Web3 analytics, give some love to Blocknative’s Assist.js (which, in the spirit in full disclosure, we @flexdapps helped develop).
I think MetaMask is incredible and I don’t want it to go anywhere, but I can’t help but think it might not last as the primary method of dapp interaction. If you look at metrics from Celer, it could come sooner than many might think. This is because it arguably takes too much power away from the developer. Ethereum’s greatest strength is the developer. When their control over the experience is eroded, we’re depleting the main source of value the Ethereum community holds.
The Abridged SDK is a gamechanger in the dapp ecosystem. It incorporates layer 2 tech like payment and state channels, as well as possibility-unlockers like counterfactually-deployed account contracts and social recovery.It has virtually everything you need as a developer to make a secure, accessible wallet that has all the bells and whistles built in. WhileAbridged have generously funded some of our work in the past, I am not being paid to say this.
Using the Abridged SDK, with a single transaction that friend of yours who holds their ETH on Coinbase can send their funds to an app (and I stress the lack of ‘d’ here), that they can now engage with in exactly the same way as a Web 2.0 app. Except with added payments. And potentially the ability to redeem their funds at any time (if the dev is a kind person).
From Dapp to App
With the tech of Abridged and Blocknative in my arsenal, I’ve been furiously pounding my Magic Keyboard attempting to summon some software for this year’s Web3 Summit. We were lucky enough to be asked to deploy a “burner wallet” at the event. When you get an opportunity like that, it is not often you will need to be asked twice. Even if you only get a couple of months’ lead time, and you redesign everything with three weeks to go. Y🙃L🙃.
We pitched the Web3 Foundation on the following three core features for the application, devised purposefully to give people a reason to use the app:
- A schedule for the conference
- An in-app merchandise store (crypto and fiat enabled)
- A conference-wide, DAO vs DAO chess game (thanks for the idea Vitalik)
Notably, there’s no mention of a “wallet” anywhere in that list (though it is eluded to). Instead, the wallet features took a backseat this time around. If you check out some of the designs I’ve done for event-specific wallets in the past, you can see that the Web3 Summit wallet designs shift up the focus of the app from “the wallet” to the supporting feature set. Critically, more than 50% of the app’s feature set is available to users even if they don’t touch the wallet capability of the software.
As a result of toning down the focus on the currency management portion of the app, it begins to take on a new shape. Instead of being analogous to a wallet, it now takes on a life of its own as a bespoke set of experiences, with some of those experiences locked behind a paywall. It’s beginning to look a lot more like a Web 2.0 app.
What About Big De-centralisation Energy?
Taking a step back from this specific implementation, I’d like to address the elephant in the room. By taking the D out of Dapp, aren’t we removing decentralisation? The answer is, like all good answers, not black and white. Decentralisation is a tool, and when leveraged correctly it can open doors. When leveraged incorrectly, it can close them; you can’t plane wood with a tenon saw.
Since all the funds deposited into the wallets at the Web3 Summit will be instantly usable within Abridged payment channels, the door is wide open for micropayments. Critically, these payments can be verified by a server (I know, I said the “s” word, but stay with me) instantaneously. Our backend infrastructure for the Web3 Summit Wallet is quite simple, it consists of some websockets to give everyone updates on things like the chess game and merchandise stock, and some traditional HTTP endpoints to handle the submission of payments.
Micropayment rails are a giant hurdle in Web 2.0. Most apps require you to purchase quantities of “gems” or “coins” with fiat, which you then spend in smaller subsets. One of the main reasons for this pattern is payment processing fees, it’s not economical to charge a user’s credit card for a cent (and you probably wouldn’t get away with pricing an extra life in Candy King 8 at USD $4.50). That barrier is completely removed by payment channels. To illustrate the point, we’ve put a $0.01c paywall on the app’s (gorgeous) “dark mode.” This should serve a double purpose: get people to “try out” the app’s wallet features with their own funds, as well as illustrate that crypto micropayments are well and truly here.
Show Me The Technology
Getting to deploy software at Web3 Summit is a pretty big deal for us. After bootstrapping Flex Dapps (a services business) in February 2018 as two humans trying not to break the law by working for cash, Alex and I have grown the company to 8 exceptionally clever employees and plenty of satisfied clients. Showcasing our work at the Web3 Summit is a chance to show 1,000 of the smartest nerds in web3 what we think a world class crypto experience looks like — and hopefully begin to shift the global conversation around building out the future of this tech’s usage.
I pulled out all the stops, grabbed the latest and greatest of all the tools I could find, and set about weaving my basket of goodies for this year’s attendees: it had to have engaging utility, instant finality, and not one mention of gas (I failed that one, on a technicality).
In no particular order, I would like to draw your retinas to three technologies which made this app possible:
- Svelte 3
- The Abridged SDK (a pre-release, sorry friends)
- Blocknative
Svelte 3
I won’t dwell on the first one, because it’s yet-another-frontend-framework and this is a crypto post, but suffice to say I’ve never had as much fun building reactive web apps as I have with Svelte. If you want to check it out (and I highly encourage it), this talk by its creator Rich Harris is the best primer. Fedora tip to the Intellectual Genius for this one.
Abridged SDK
I’ve already given a decent amount of service to this one, but it’s worth reiterating that I feel like this is the best toolbox out there. Abridged is a ground-up wallet management SDK, built by some of the best. Sign up for early access here. Not only is the tech exceptional, but the team have worked tirelessly building new features to accommodate our uncompromising approach to this app’s UX.
Blocknative
Through Assist.js, Blocknative have built out some very powerful mempool monitoring infrastructure, which gives you granular insight into the transaction lifecycle. With Assist.js, your users get automatic notifications about all their transactions, even detecting the nuanced cases of cancels and speedups. In the Web3 Summit Wallet, I use this data to show users when I’ve picked up a deposit and it’s on the way to their wallet, which is not something you can do in a lightweight manner on your own.
Now What?
We @ Flex think that crypto has an engagement problem. Our take is that enriching the transaction experience through more delightful wallets like this one is a great way to ensure that your users keep coming back and keep making transactions.
Obviously it’s not sustainable product-wise to rebuild a wallet for every conference going (have you seen the Ethereum event calendar lately?), but there’s certainly a platform business model in this one. The only reason we didn’t allow people to onboard with fiat this time around is the potential for them to win ETH in the chess game, which if they withdrew would make us a money transmitter (which the law says is bad 🤷♀). It’s easy to see a scenario where that’s not an issue though, or you make your users perform KYC before withdrawing cryptocurrency, etc.
We reckon there’s a venture in the ideas which have manifested as this wallet, and we’re going to pursue a traditional capital raise to continue building the best crypto experiences we can.
If you’re going to be at the Web3 Summit this year, come find me and say hello. I never turn down a chinwag about web3 UX.