I believe that EIP-8141 frame transactions as specced right now:
- Will not be adopted widely
- Will have a larger ongoing cost than I think we expect
- Will hamper future protocol evolution
A simplified tempo style transaction should not suffer these same problems.
This is post one of three, discussing adoption problems, and I’ll discuss costs and simplified tempo style transaction in the later two posts.
I just pulled data from 10,000 blocks in the middle of Ethereum’s busy time of day. (Blocks 24598000 to 24598999). Here is a pie chart of non ERC-7702 transactions vs ERC-7702 transactions.
Out of 288,508 transactions in these blocks, 814 were EIP-7702, or 0.28%.
[A previous version of this post said there were 14 transactions to an address with EIP-7702 code. This is the number of direct EIP-7702 transactions, and did not account for calls to EIP-7702 via entrypoint contracts]
With the current transactions types, people can use any combination of wallets, software or hardware to control a given account that has assets attached to it. However, EIP-7702, EIP-4337, and EIP-8141 all try to change users to own smart contracts which own the user’s assets and identities.
On paper this sounds like the same thing, but I’m convinced that this is the core adoption killer. Users have voted hard against EIP-7702.
Smart contracts as the asset owner means:
- In practice, most wallets do not implement this feature, because it’s expensive and dangerous.
- Because each wallet is using its own smart contract codebase, each user account is now locked into a particular wallet vendor, at least in practice. Interoperability is gone, even on the same chain.
- Using it requires extra setup steps from the user.
To these problems EIP-8141 adds the further barrier that to upgrade what a user smart contract account can do, or to fix bugs, or add QR auth methods, the user will have to identify and move all assets to another smart contract account. (The alternative, using upgradable proxies is probably even worse)
Needs for changes over time in authentication smart contracts aren’t theoretical. How many EIP-4337 entrypoint contract upgrades have there been? We’re up to v0.9.0, between bug fixes and new features.
Using smart contracts as the core of a users identity is too costly on wallets to even be given as choice to a users, and not selected by users even when given the choice. Not only does this obviously make adoption low, but it ensures that negative network effects continue pushing adoption down even further.
In the end the benefits of adding 7702 to ethereum and across the ecosystem has not been close to worth the cost.
We may disagree on the causes of 7702’s negligible adoption. But we absolutely must understand why such low adoption happened before rolling out a third attempt at moving away from keys to smart contracts.
I’m seeing the perception that EIP-8141 is a simple standard that provides an unlimited set of options for the future, and will massively reduce the amount of work on transactions in the future.
Instead, from my point of view, I see it pushing necessary complexity out from the core into clients, wallets, and mempools, requiring multiples of the amount of effort it would have taken to do it in the core. Not only does this result in more work, and more risk, but it kills interoperability.
What are the bytes that a wallet sends over a transaction to authorize moving 1 Eth from one address to another? EIP-8141 at this moment doesn’t define this. The authorizing address contract code could have any code under the sun, so we don’t know what the wallet should send.
How much gas can an authorization use? Spec doesn’t say. It’s up to people to figure out some day. If you are designing a smart contract to do auth, you don’t know.
Moving things that need to be standardized out of the EIP will result in this being much harder for teams to actually implement and will result in incompatible implementations. We’ll see the same thing we are seeing with EIP-7702.
To be fair, EIP-8141 is much better than 7702 in one aspect - the actions to be executed are now standardized, rather an unspecified something to be extracted out of calldata by various smart contracts. This is definitely an improvement, and we need to look for other opportunities like this.
Enshrining default code for EOAs to enable frame transactions to also operate in the traditional account centric way is a good thing for this spec. It adds batching capabilities to all current EOA accounts. It gives wallets a reason to implement the minimum required to be able to send an EOA based frame transaction.
However, as soon as we move beyond enhancing EOA functionality, we are right back into the same adoption killers discussed before. In the real world, I would expect that 99+% of frames transactions would be to ecrecover EOA’s.
And if that is the case, then instead of adding all the complexity and cost of frame transactions, we can achieve the same gain in capabilities for drastically less long term cost by just making a simple transaction type that does not deeply constrain the future.


