The way around this is likely that wallet providers will not even allow you to AUTH to just any contract.
They would likely keep a list of allowed contracts that you can delegate to, and any contract outside this list is not shown to users.
(11/23)
A key part of the EIP-3074 delegation is that the delegation is not permanent.
"A single tx from the EOA will cause the nonce to increase, invalidating outstanding authorizations"
Essentially, after you make a transaction, the delegation is no longer valid!
(12/23)
We also don't really want to give more power to EOAs.
After all, the goal of these proposals is to move users from EOAs to smart contract accounts, so why are we adding features to EOAs?
This leads us nicely to our next proposal: EIP-5003.
(13/23)
EIP-5003 adds another opcode, "AUTHUSURP", that deploys code at an EIP-3074 authorized address.
- 3074 is a temporary delegation to a smart contract, which is revocable.
- 5003 is a permanent migration from EOA and "conversion" from EOA to a smart contract account.
(14/23)
A big issue with EIP-3074 + EIP-5003 is that it is not very compatible with the current account abstraction via ERC-4337.
Some of the Ethereum community is concerned that we would be "creating two separate code ecosystems" with both types of account abstraction.
(15/23)
That brings us to Vitalik's proposal today: EIP-7702.
His proposal modifies EIP-3074 to make it leaner and more compatible with ERC-4337; so that we don't end up with two separate AA ecosystems.
It also considers EIP-5003 as the next step for permanent migrations.
(16/23)
EIP-7702 proposes a new transaction type that accepts both a contract_code and signature field.
At the start of executing a transaction, it sets the contract code of the signer account to contract_code.
At the end of the transaction, it sets the code back to empty.
(17/23)
This achieves the same temporary delegation of an EOA to a smart contract that EIP-3074 does.
However, instead of adding new opcodes (which require a hard fork), it defines functions to be called instead.
AUTH -> a call to "verify"
AUTHCALL -> a call to "execute"
(18/23)
To break this down, it:
1. Checks if your account contract code is empty 2. If it is empty, sets it to the provided contract code 3. Executes the transaction based on how the provided smart contract handles transactions 4. Sets the account contract code back to empty
(19/23)
"Contract code" is exactly what it sounds like.
It's where the code of the smart contract lives.
Since EOAs are not contracts, this is typically empty... however, EIP-7702 temporarily populates it with some smart contract code for the lifetime of the transaction.
(20/23)
It's a way of providing new behaviour (in the form of code) for how this particular transaction should be executed from your EOA.
The next step to this would be to make this a permanent behaviour change, by simply opting to "not set the code back to empty at the end".
(21/23)
One of the best parts about this proposal is that it is super compatible with all the AA work that has been built out for ERC-4337 so far.
"The contract code that users would need to sign could literally be existing ERC-4337 wallet code".
(22/23)
Once this change goes through, your existing EOA will be able to execute any smart contract code.
With an additional EIP, EOAs will be able to permanently upgrade to run specific code!
Over time, this could completely change how all of us interact with web3 apps.
(23/23)
If you enjoyed this breakdown, the best way to support it is by engaging with the original tweet below to give it more visibility :)
Consider following if you want to see more in the future!
So, is restaking the future of Ethereum? Or just another overhyped narrative?
I spent the past few days reading through the EigenLayer whitepaper & founder Sreeram's interviews.
Here's everything I learned:
To understand EigenLayer and restaking, we first need to quickly re-cap Ethereum's consensus mechanism.
After Ethereum's "merge" event in September 2022, Ethereum swapped from Proof of Work to Proof of Stake.
Proof of stake is actually pretty simple:
- Your "stake" is money. In the form of ETH.
- Ethereum provides a way to earn more ETH by running a validator node and "staking" 32 ETH.
- If you run your validator properly, you earn more ETH. If you don't you have your ETH "slashed".
So, is it all hype? Or is innovating on the EVM something we'll continue to see throughout 2024?
Here's everything you need to know:
Typically, EVM-based blockchains have a bottleneck; block proposers and validators verify every transaction in sequential order.
One by one.
This is because transaction X may depend on transaction Y which may depend on transaction Z, etc. etc.
This sequential method is great for ensuring the chain works logically and transactions are executed the way you expect.
But, when an EVM chain is flooded with transactions like they were recently with inscriptions, things start to break down (like reaching ~$400 in gas fees).