A massive wave of mainstream web3 users is about to hit the Ethereum network. The best part is, they won’t even know they are using the blockchain at first. And the heart of the trick dates back to cryptography from 30 years ago…
Effective decentralized applications will implement a platform where users can provide value and be rewarded with tokens or even ETH without any barrier to entry. Users should immediately interface with the application or game instead of wrestling with the blockchain. This means apps will need to pay for their users’ initial interactions using meta transactions signed by ephemeral accounts. In this article we’ll explore these techniques.
As users interact with an application, they will realize its underlying value and accrue tokens within the small ecosystem of the Dapp. At this point, their ephemeral account no longer is viable (or safe) and they are incentivized to be educated in better wallet practices.
Finally, an identity is established around the narrative the user chooses to create. This identity is their reputation within the space; they will want to protect it and represent it using something more approachable. They may want to put a name on an account. Instead of using a long public hash like 0x34aa3f359a9d614239015126635ce7732c18fdf3, it’s a lot easier to communicate my address with an ENS name like austingriffith.eth.
Ethereum accounts can be created instantly without any kind of centralized authority using cryptography from the early 80's. The only thing you truly have to trust is the math and the code in the smart contract.
When a user visits an app we generate an account automatically if they do not have MetaMask or another web3 provider injected. This temporary account can then be used to sign meta transactions to indirectly interact with the blockchain.
Ephemeral private keys are stored in cookies in the user’s browser. One problem with this is the cookies won’t work across multiple domains. This is why we created https://account.metatx.io to generate and serve private keys from a shared domain while still storing them client-side. The user can then use the same temporary identity across multiple apps as they onboard.
This is a bad idea. Passing private keys around or storing them in memory where they could be lost or stolen is just plain bad. But! When it comes to UX, it’s time to make some tradeoffs to drive adoption. Once they earn value they can sweep their temporary account’s ETH and tokens to a more secure wallet as we provide education behind this new paradigm.
Instead of crafting and signing typical Ethereum transactions, an etherless account can simply sign the intent to transact. Then, send this meta transaction to an off-chain network of service nodes that is incentivized to pay the gas and submit the transactions on behalf of the user.
Meta Transaction Relay Network
This is a fantastic area of study right now. As many organizations begin to roll out solutions that are powered by meta transactions, the need for a peer-to-peer relay network becomes more and more apparent. It also isn’t just about building the layer to work, but to be robust enough to defend against adversaries while cryptoeconomically incentivizing good actors. The game theory behind meta transactions is fascinating.
More Interesting Work
An obvious piece of the puzzle that is being overlooked in this article is what happens when millions of users will have instant access to Dapps. The Ethereum network in its current form would become very congested and gas prices would escalate to unmanageable highs.
Very intelligent people are working on this problem. Coming our way soon is Casper, Sharding, Plasma, and a handful of other things that are at times over my head. We lowly Dapp develops should do our best to use layer two solutions to scale, but we should also build assuming that the network will eventually be able to handle much more throughput.
I’m just one dude in a pile of developers and designers trying to drive mass adoption of Ethereum with meta transactions and seamless onboarding.
My personal portfolio: https://austingriffith.com
My Twitter: https://twitter.com/austingriffith
My github: https://github.com/austintgriffith
My hackathon portfolio: https://devpost.com/AustinThomasGriffith
I’ll be in San Francisco this weekend for ETHSanFrancisco
The next weekend all be presenting at the NonFungible Summit
Then I’ll be all over at Devcon4 in Prague! So excited!