MolochDAO Interview with Matt Garnett of EIP-3074
Grantee Interview Series
ReallyBoringGuild: Could you provide an overview of EIP-3074?
Matt Garnett: EIP-3074 was originally written by one of my co-workers, Sam Wilson, and it was actually a competing EIP for something that I was working on, EIP-2733, that I had authored. I wanted to improve the user experience of native wallets on Ethereum. The EIP that I had was a very rigid protocol upgrade that would allow us to batch actions together. If you need to transfer some sort of NFT or token, you typically have to first send an approved transaction, then send a transfer transaction. To me, this is not a great user experience. I think most people agree this is pretty frustrating.
I felt like this is totally solvable, so I wrote EIP-2733 and then my coworker read it and he was like yo, I also agree that this is not the best, but I think that we could do this in a more flexible manner, so he started writing the original proposal for 3074. It’s changed a fair amount over the year and a half since he wrote it.
The rough idea of this EIP was that we’ll introduce a couple of new opcodes to the EVM and allow for developers to change who the message sender is. The message sender tends to be how all these contracts authenticate who owns a token. So if you can arbitrarily set that value, then you now have the ability to have really complex flows. Since these are opcodes, they can be integrated with any kind of smart contract that you develop. You’re now able to develop really arbitrary flows for authentication actions and it just takes a signature that anybody can produce with their EOA. You’ve basically created this mechanism that all users on Ethereum can start using some of the functionality that we’re kind of accustomed to being available to smart contract users.
RBG: In the description from your proposal, you were talking about invokers being a true definition of a public good. For somebody who’s not as native to this type of verbiage, could you explain what an invoker is?
MG: The EIP introduces two new opcodes. These are opcodes that are very special in the sense that they recover an address from a signature and then allow the contract to make any call as that user. Signing a message to the wrong contract is as bad as giving someone your seed phrase. Similarly, if you just sign any kind of transaction, that you don’t really know what it does, it’s possible that that transaction is malicious. We have a special word for the types of contracts that call these opcodes, that invoke them. We call this the invoker contract.
The reason that I say that this is a public good is because of how important the security of these contracts is and it’s very important that these are very well audited, maybe even formally verified to be sure that there are no dangerous states that the contract can get into.
These are public goods because it only takes one contract for anybody to be able to use them. If there was an ogre contract that was written and that supports transaction patching, or even in a simple case that approves transfer flow, then anybody could immediately begin to use it. There’s not really an advantage if you’re Uniswap, or if you’re some sort of layer two if you integrate EIP-3074 into your project. It doesn’t really give you the benefit because now other people can start utilizing it.
It is, in my point of view, truly, a public good, because it’s something that you’re not really earning income off of, or you really shouldn’t be earning income off of, but it does provide value to all users with an Ethereum wallet.
RBG: Is there anything from your background that inspired you to focus on the user side of Ethereum?
MG: When I came into the space, I originally was working on this project called Bounties Network, which was kind of like a sister project to Gitcoin.
Bounties Network really focused on bounties that weren’t development-focused, like UX bounties, or stickers for a conference. As a developer on that project, it felt like even if we do everything right on our end, we build a great website or really good user experience with what we had, there were still huge problems. We could never support the types of users that might come if we did it all right. The Ethereum network, at that time and maybe still today, could not support the type of traffic that a peer-to-peer bounty website might be able to attract.
It was frustrating that even if we do everything right, we could be limited by the network itself. Even if we do everything right, the UX that a user interacts with our website was still terrible.
After the reorganization of Consensus, we left that project and started working on more research stuff. We spent a long time on Ethereum, but as dapp developers, we always kept that sense that UX is really important and the UX that we have on Ethereum today is not where it could be. A lot of core developers might let it sort of fall through the cracks, because they are focused on security, which is the most important thing at the core protocol, of course. Also, increasing the bandwidth of the core protocol is super important, but the user experience is also really important. I think that that’s just something that we, asthe Quilt team, have tried to continue to push through and become advocates for improving that.
RBG: Do you feel that there has been an improvement in the UX for Ethereum, or are we still far away from where we need to be?
MG: The UX has improved, in the sense that every website I use doesn’t break, only most of them break. But what the protocol actually provides, there’s really been nothing that we’ve been given.
Pretty much the only thing that’s been given to us that might be able to improve the UX, I think, was that we got to to create the opcode in 2017. In terms of the protocol, I don’t use Ethereum on a daily basis, as some people do. I use it, maybe, once or twice a month.
I can’t believe that people use it on a daily basis, paying $40 to prove a token to spend $150 to do some simple action.
RBG: Do you want to talk about how EIP-3047 will improve the gas fees aspect?
MG: If you are familiar with how the gas fees of an Ethereum transaction are calculated, there is a fixed portion of the gas fee that is paid for every transaction, regardless of what it does. That’s at 21,000 intrinsic gas costs.
The idea behind EIP-3074 reducing gas fees is that if you just bash some of these actions over and over, then you kind of amortize that 21,000 gas over many actions, rather than having to pay for them individually. That can happen over a single user or multiple users. If I have many actions that I want to do, I can amortize my transactions over that. If we just collaborate a little bit and bundle a bunch of people to access together, we can further amortize the cost of that initial 21,000 gas.
RBG: Could you describe any progress on EIP-3074?
MG: We have not used any of the MolochDAO grant funds yet.
In Mid 2021, when we applied for this grant, there was a very real possibility that EIP-3074 could accelerate very quickly. A few weeks after we accepted the grant, we learned that it was not going to go into the London upgrade but maybe it would go into a fork in the fall. Nothing really happened in October and November, so we don’t want to spend the money until we have more confidence that something would happen with the protocol.
The Uniswap integration is something that can probably still be done today, at this point, even if there isn’t a super high chance of it going in, just because I think that there’s some value to show exactly what this would look like. But, I think we’ve done a fair bit of things on that side, like showing how much people are spending on approvals and how you could be saving that money if you did EIP-3074.
RBG: What resources can we point people to learn about EIP-3074?
MG: The discussion thread on the Ethereum Magicians forum is probably the best if you want access to the history and updates of the latest and greatest of EIP-3074.
RBG: How did you hear about MolochDAO and what interested you in submitting a grant proposal?
MG: I don’t really remember where I heard about MolochDAO, to be honest. It’s always kind of been on the radar. Several people from Consensys have been MolochDAO contributors, so that was mentioned.
I think it’s really good for teams to try and utilize these types of organizations that exist because it’s really like dogfooding. If we’re not even using the DAOs that we say are going to reorganize how people connect and build things, then I think we’re missing the point.
That was one of the reasons I said, if we want to build on Ethereum, we need to have some money to be able to pay people to do more things, so we should go to these places that are literally trying to give money to build out stuff exactly like this.