We’ve spoken before about the unbundling of wallets— and figured now was as good a time as any to address the elephant in the room - Account Abstraction.
Note: This post is not meant to be an introduction to these concepts, rather a deeper look on the ground with the needs of developers in mind. If you want a primer, check out this MPC Intro and this Account Abstraction resource.
It seems like MPC vs AA is all anyone can talk about these days
And it’s confusing. A debate that’s in theory about accessibility for tomorrow’s crypto users is ironically one of the most technical and muddled conversations happening on crypto twitter.
While those of us directly building in this space may enjoy these conversations, it’s leaving app devs confused about the future they need to be building for. The conversation seems to be changing and evolving every day!
The reality is despite all the cross-yelling, dunking, and posting, this is a very exciting time to be building in crypto! But we think this topic requires more nuance. So let’s break it down.
Multi-Party Computation is a technique used to securely compute a function on private data owned by multiple parties without revealing this data to other parties. This is known as distributed key generation and signing. There’s lots of variance in MPC implementations within the space— we won’t get into this, instead we’ll focus on capabilities.
Account Abstraction is a new way of thinking about the interfaces between accounts, smart contracts, and transaction execution. Similar to MPC, there are loads of different implementations that fall under the category of AA: from EVM or L1 native-AA to initiatives like ERC-4337 that aim to specify a default standard for developers to build against or migrate to. Again, we won’t get into these differences, instead we’ll focus on what the current most popular proposals aim to enable from a capabilities perspective.
Both techniques enable programmable wallets, but the features they enable vary.
High Level Differences
Considerations when deciding between AA + MPC
- Multi Chain - Everyone everywhere is going multi-chain. Applications at default are built for the multi-chain future. Account Abstraction is an anticipated standard for smart contract wallets. However, each ecosystem is adopting AA with slight variations, which creates uncertainty around what the ultimate implementation of AA will be like for each chain and VM. If you’re an application developer, it’s worth considering the work you’ll need to do to achieve interoperability between chains if you’re considering AA.
- Bundling Transactions - Account Abstraction allows users to bundle multiple transactions together, enabling them to execute complex interactions with smart contracts more efficiently. AA allows for this out of the box, while MPC systems can plug into bundlers to achieve similar functionality or leverage meta transactions. AA is the way to go if you are looking to optimize for this and you don’t care as much about the other factors on this list.
- Cost - The cost of on-chain transactions is a significant prohibitive factor to any development for app devs. Even if we assume most transactions will occur on L2s and fees will be subsidized, the cost to deploy and upgrade at scale may be expensive. Upgrading wallets in particular, now requires upgrading the underlying smart contracts which can introduce new vulnerabilities and get very pricey.
- Key Management - MPC empowers developers with advanced key management mechanisms to manage keys by facilitating the division of keys into multiple shares, supporting distributed key generation, key refresh, and secure computation. Conversely, Account Abstraction presents a good way of reasoning about execution once a transaction is on-chain, but does not currently handle key management. If key management is essential to your application, AA might not be the ideal choice.
- Flexibility - MPC wallets can incorporate aspects of Account Abstraction, such as aggregating transactions via bundler or leveraging meta-transactions. However, incorporating MPC functionality into AA wallets is not seamless, as it requires modifications to the wallet's underlying keys (i.e. private and public keys will have to change).
- If you already leverage a smart contract wallet - If you currently use smart contract wallets, then it makes complete sense to port this over to an implementation of AA. AA in your smart contract wallet will enable a more standardized user experience when transacting than a current smart contract will. However, you may also want to explore MPC solutions if you experience any of the other challenges detailed above.
The most likely scenario is that AA and MPC will likely need to work together.
We believe that MPC and AA will need to collaborate and exist side by side as complementary technologies.
As the AA ecosystem continues to mature, it has the potential to enhance the user experience in tandem with MPC technology, which at that point would have been thoroughly battle-tested.
Making a decision today
Making a decision today is still incredibly difficult! How are you supposed to build systems that make sense for today, but also stand the test of tomorrow’s scale and challenges?
It’s critical for developers to consider the tradeoffs, requirements and specific use cases they are building for when picking between AA and MPC today. We personally find that MPC has a bit more flexibility and and has the capabilities to power all experiences, across those adopting AA and those not. We encourage you to go through this exercise as well!