Date: July 31 2024, 14:00-15:00 UTC
Agenda: https://github.com/ethereum/pm/issues/1118
Recording: https://www.youtube.com/watch?v=Oct83bBp3Z8
Summary/Next steps:
Links:
(Notes+zoom chat)
Nicolas: Initiated the call.
Vitalik: In a state with couple of proposed changes
Ankit+1
Ansgar Dietrichs (Jul 31, 2024, 10:05 AM)
to push back on Vitalik a bit, to me it feels like there are simply still remaining open questions, I don’t have high confidence that we are in a good place to pick the final shape of the EIP yet
Ahmad Bitar (Jul 31, 2024, 10:07 AM)
I disagree, I feel like the EIP in its current shape is actually enough and covers most of the concerns.
It does feel that the remaining concerns can be mitigated by certain patterns or actions
Ansgar Dietrichs (Jul 31, 2024, 10:08 AM)
I think I said that on the last call, but CODERESET seems like the wrong direction to me. we decided early on in the process that 7702 was not supposed to ship with permanent upgrade capabilities, and this idea would introduce such permanent upgrades through the backdoor
Ansgar Dietrichs (Jul 31, 2024, 10:09 AM)
although I will admit that the additional capabilities look nice. but it should be its own separate EIP then, not piggybacking off of this one that has a very different focus
Ansgar:
Ankit+1: I agree, this is a deviation if the EIP isn't intended to acheive the goal.
Arik:
Vitalik:
Arik (Jul 31, 2024, 10:12 AM)
What if the CODERESET is added alone, just as a way to make a cheap/1-time delegation? Without making the change that disallows EOA transactions?
Julian Rachman (Jul 31, 2024, 10:14 AM)
You still have unlocked functionality even if the pk is the master key. I believe safe asked for more concrete reasonings from wallet providers
Sachin Tomar (Jul 31, 2024, 10:14 AM)
“the delegation designation can be revoked at anytime signing and sending a EIP-7702 authorization to a new target with the account's current nonce”
Can this new target be ZERO_ADDRESS to remove the code from an EOA?
Elias Tazartes (Jul 31, 2024, 10:16 AM)
we are designing an EIP that is scheduled for inclusion, it feels a bit bad no? how much sunk cost can we bear as a governance body
Arik (Jul 31, 2024, 10:17 AM)
Sorry Derek didn’t see you were earlier 🙏
Ivo Georgiev | Ambire (Jul 31, 2024, 10:17 AM)
There’s very little use case for one txn delegation, if not none.
Gas sponsorships are pointless because you need an eoa txn first, same goes for batching
So I can’t imagine any useful one transaction delegation use case
Darek (Wallet Connect)
Ahmad
Arik (Jul 31, 2024, 10:19 AM)
reduced risk = functionality
Ansgar Dietrichs (Jul 31, 2024, 10:20 AM)
which exact version does ephemeral storage refer to?
vub (Jul 31, 2024, 10:19 AM)
Do we need a new opcode for CODERESET, or is this a small tweak to the functionality of SELFDESTRUCT?
Julian Rachman (Jul 31, 2024, 10:20 AM)
a flag be added to the 7702 transaction’s authorization_list
that would designate it as ephemeral, clearing the code hash at the end of the execution
Nicolas:
David(Trust Wallet)
persistnace doesn't has to be in EOA's own storage
Ahmad Bitar (Jul 31, 2024, 10:22 AM)
7702 is not supposed to be the EIP to fix it all
Sachin Tomar (Jul 31, 2024, 10:14 AM)
“the delegation designation can be revoked at anytime signing and sending a EIP-7702 authorization to a new target with the account's current nonce”
Can this new target be ZERO_ADDRESS to remove the code from an EOA?
Ronny Panford (Jul 31, 2024, 10:23 AM)
I guess the concern is not allowing the signing key to ultimately reset the account at any time be it by pointing to ZERO_ADDRESS or null bytes. To help create credible smart accounts. Thats why CODERESET only in the contract code, is what I understand, but this opens new gate ways of concern todetermine malicious use of CODERESET. But I agree crafting this solution might be too late for 7702.
Ankit+1:
lightclient (Jul 31, 2024, 10:24 AM)
you were never supposed to get security of smart contract wallets
derek (Jul 31, 2024, 10:24 AM)
@Derek could you type out here again why some wallets you talked to felt that 7702 in its current form wouldn’t be widely adopted? I didn’t completely catch your point
Ahmad Bitar (Jul 31, 2024, 10:24 AM)
7702 was not aimed to fix this
Ahmad Bitar (Jul 31, 2024, 10:24 AM)
7702 was not aimed to fix this
lightclient (Jul 31, 2024, 10:24 AM)
where have you been the past year?
Julian Rachman (Jul 31, 2024, 10:24 AM)
Does that really create a new account though? It is just an eoa with smart functionality
Sudeep | Erigon (Jul 31, 2024, 10:24 AM)
I think the feedback from wallet teams was the opposite some time back — an account should be able to act as both EOA and SCA — so that the apps which EOA interact with continue working; and then SCA based functionalities/dapps can be optionally interacted with (and slowly transitioned to).
gajinder (Jul 31, 2024, 10:18 AM)
ephemeral storage takes away none of the functionality and reduces complexity
Ansgar Dietrichs (Jul 31, 2024, 10:25 AM)
ah. then I would just ban storage within 7702 accounts completely, instead of turning it ephemeral. but we discussed this a few months ago - the feeling was that it would be better to have decisions mirror the 4337 situation
Ansgar Dietrichs (Jul 31, 2024, 10:25 AM)
so rather keep storage enabled, because changing implementations is already a problem that the 4337 ecosystem has to solve. otherwise we end up with 2 separate tech stacks again
gajinder (Jul 31, 2024, 10:26 AM)
or this PR: https://github.com/ethereum/EIPs/pull/8762
Francisco (Jul 31, 2024, 10:26 AM)
7702 is not migration, education should start by avoiding that term
Ivo Georgiev | Ambire (Jul 31, 2024, 10:26 AM)
Also please let’s not forget the signature complications from the concept of converting EOAs to real smart accounts
ankitchiplunkar (Jul 31, 2024, 10:27 AM)
https://hackmd.io/-V7ywDDZRDKrXMRRkulOpQ?view
Matt:
Aniket+1
Jochem (EthJS) (Jul 31, 2024, 10:28 AM)
What is the ENS risk? Someone has a description of this problem?
Ahmad Bitar (Jul 31, 2024, 10:29 AM)
the idea is that, if the EOA key is leaked somehow, then the assets are still secure if the migration to sca is final
but looking at ENS token for example, you find this to be un true
lightclient (Jul 31, 2024, 10:29 AM)
ENS doesn’t support 1271 so a EOA pk can spend the funds even if EOA is migrated
Sudeep | Erigon (Jul 31, 2024, 10:24 AM)
I think the feedback from wallet teams was the opposite some time back — an account should be able to act as both EOA and SCA — so that the apps which EOA interact with continue working; and then SCA based functionalities/dapps can be optionally interacted with (and slowly transitioned to).
Ahmed Al-Balaghi (Jul 31, 2024, 10:29 AM)
“wallets don’t like eoa retaining root access” is def over exaggerated < why do you think so?
Aniket+1:
Matt
Julian Rachman (Jul 31, 2024, 10:31 AM)
That is a reallllly binary questioning
derek (Jul 31, 2024, 10:31 AM)
I don’t think anyone is disputing that by permanently migrating the EOA, the impact of leaking the key gets lower. But that’s not considering all the other factors
Ansgar Dietrichs (Jul 31, 2024, 10:31 AM)
my personal 7702 wish list:
make it fully ephemeral: store delegation target, but turned off by default. 7702 txs manually enable delegation for a list of addresses
change code read behavior to not return delegation target code
(maybe) add initcode behavior, running at the beginning of a 7702 tx with separate gas limit
Derek (Jul 31, 2024, 10:31 AM)
SCA based functionalities/dapps
what exactly is that? atomic batch transactions
and dapp sponsored
/ erc20 paid
transactions?
Ivo Georgiev | Ambire (Jul 31, 2024, 10:32 AM)
There’s more signature risk than just permits IMHO. Just taking any dapp login as an example that doesn’t support 1271
there are even dapps which support 1271 but verify ecrecover first or as a fallback 🤷♂️
Matt
Aniket+1:
Yoav
Darek
Pedro
lightclient (Jul 31, 2024, 10:40 AM)
we should move to the next topics, CODERESET isn’t going to be support by 7702 in pectra and there are other things ppl want to discuss
Derek (Jul 31, 2024, 10:31 AM)
SCA based functionalities/dapps
what exactly is that? atomic batch transactions
and dapp sponsored
/ erc20 paid
transactions?
Sudeep | Erigon (Jul 31, 2024, 10:40 AM)
yes
greg (Jul 31, 2024, 10:37 AM)
Does the current impl of 7702 have sstore
greg (Jul 31, 2024, 10:42 AM)
Unless we want collisions you technically need it
Yoav
Pedro
Ahmad Bitar (Jul 31, 2024, 10:43 AM)
it is a "delegation" and not "migration"
Agus (Jul 31, 2024, 10:43 AM)
I don't think it's such a UX problem. Smart contract wallets are mostly presented as multisigs, so it can always be displayed as if the wallet has "one more key" that is not revocable
Julian Rachman (Jul 31, 2024, 10:43 AM)
The vm and wallet interface lines are blurring…
greg (Jul 31, 2024, 10:37 AM)
Does the current impl of 7702 have sstore
Ansgar Dietrichs (Jul 31, 2024, 10:43 AM)
the same is true for changing smart account implementations today.
Pedro
Matt
Darekn (Wallet Connect)
Matt
pedrogomes (Jul 31, 2024, 10:46 AM)
I would disagree simply because we the current proposal is halfway-migration but we are just renaming it to delegation
Ansgar Dietrichs (Jul 31, 2024, 10:46 AM)
I am open to reopening the permanent upgrade conversation - but then we have to be okay with 7702 very possibly missing Pectra
Ahmad Bitar (Jul 31, 2024, 10:47 AM)
i am not. if we want to open the permanent upgrade conversation, it can be in a totally different EIP than this one
lightclient (Jul 31, 2024, 10:47 AM)
ephemeral setting doesn’t match with 4337
Darek
Vitalik:
Matt
Ahmad Bitar (Jul 31, 2024, 10:51 AM)
always depending on pay masters and bundlers to include my transactions is not something i want to do. I like the ability to use them without being forced to use them
derek (Jul 31, 2024, 10:48 AM)
Why don’t we tackle permanent EOA migration in a separate EIP? As long as we are aligned that 7702 in its current form is a big value add, and is NOT incompatible with future EOA migration proposals, why don’t we move ahead with it for Pectra and tackle EOA migration in a separate proposal?
As Ansgar said before, a permanent migration proposal completely changes the character of 7702 and should be considered a separate EIP
derek (Jul 31, 2024, 10:51 AM)
The very reason why no EOA migration proposal has gained any traction, while 7702 did, is because 7702 is not attempting to do EOA migration… so trying to add EOA migration back to 7702 seems like a backwards move to me
Stephane (Jul 31, 2024, 10:51 AM)
Is that the reason?
Agus
Aniket+1
I can only see power users wanting EOAs
Ansgar Dietrichs (Jul 31, 2024, 10:53 AM)
side note: I still like the idea of exploring modifying ecrecover to check if there is code in the account associated with the recovered address, and throw if so. not sure if good idea, but worth exploring for full migration
Ansgar Dietrichs (Jul 31, 2024, 10:55 AM)
for 3074, we even considered a variant where instead of throwing, ecrecover could call into the smart account to have it check the “signature” instead
Ahmad Bitar (Jul 31, 2024, 10:53 AM)
So, we want to force users to migrate to sca by making sure the EOA experience is bad. I hate this argument 👎
Greg
Agus (Jul 31, 2024, 10:56 AM)
we wouldn't be forcing users to migrate tho, we would be forcing dapp devs to account for smart contract wallets, the other way around
Ahmad Bitar (Jul 31, 2024, 10:57 AM)
They have to, because they will want to support delegated accounts
delegated accounts will have the exact same features that SCAs will have beside security
pedrogomes (Jul 31, 2024, 10:58 AM)
Delegated accounts is not a strong enough reason because they can still act as EOAs
gajinder (Jul 31, 2024, 10:57 AM)
+1 with greg, we should just push for completion of 7702 rather than radically change it
Eric
lightclient (Jul 31, 2024, 10:58 AM)
let’s take migration off the table once and for all
lightclient (Jul 31, 2024, 10:58 AM)
should be a separate proposal
Greg
Yoav
Ansgar
open questions from authors pov
frangio (Jul 31, 2024, 11:04 AM)
is limiting to one transaction in mempool a problem eg. for UX?
lightclient (Jul 31, 2024, 11:06 AM)
i don’t see why it would since the user would most likely be using a relayer if they’ve upgraded their account
but even if not, if they are self-relaying their account supports batching so no need for multiple txs pending
lightclient (Jul 31, 2024, 11:07 AM)
if you run the initcode first, how do you determine how much gas was used to charge that user via a paymaster?
Ahmad
Dror
gajinder (Jul 31, 2024, 11:09 AM)
can we also discuss : https://github.com/ethereum/EIPs/pull/8762 for storage colllision resolution
Ansgar Dietrichs (Jul 31, 2024, 11:09 AM)
might be some confusion on what I meant with “ephemeral”.
my question here was basically:
user sets delegation target in tx A.
in tx B, someone calls into their account. does the code run or not? (i.e. does it behave like an EOA or a smart account)
Ahmad Bitar (Jul 31, 2024, 11:10 AM)
smart account
unless A resets the delegation
Jochem (EthJS) (Jul 31, 2024, 11:10 AM)
Frontrun could be mitigated by adding ORIGIN to the authority lists: https://github.com/ethereum/EIPs/pull/8763 (but this depends upon the situation)
lightclient (Jul 31, 2024, 11:10 AM)
this isn’t needed, just use a sig from the account
Jochem (EthJS) (Jul 31, 2024, 11:11 AM)
So in that case you can ensure that a specific ORIGIN will send your tx and other EOAs cannot "steal" / frontrun your tx by either replacing another code, or setting code before your tx and performing arbitrary code execution (assuming that the delegated contract has no entry guards to check callers)
Ansgar Dietrichs (Jul 31, 2024, 11:12 AM)
the idea would be that all 4337 bundles would be 7702 txs in the future
Jochem (EthJS) (Jul 31, 2024, 11:10 AM)
Frontrun could be mitigated by adding ORIGIN to the authority lists: https://github.com/ethereum/EIPs/pull/8763 (but this depends upon the situation)
gajinder (Jul 31, 2024, 11:14 AM)
this is wallet side providing security post delegation, above Jochem's is user side, both are different
Ahmad Bitar (Jul 31, 2024, 11:14 AM)
Yeah, i was saying someone can copy the delegation from previous 7702 tx and include in a new one. if the nonce is still valid or the delegation had no nonce, then the problem is not solved. thus, i am not seeing how the ephemeral idea fixes this
lightclient (Jul 31, 2024, 11:15 AM)
to be clear it isn’t really initcode?
it’s calldata into the account they’re proposing?
Yoav
Matt: what is the flow
Yoav
Wallet developers agrees to keep it simple
Dror
Matt
Ansgar Dietrichs (Jul 31, 2024, 11:22 AM)
only a wallet could make the mistake of whitelisting a non-7702 contract
Ivo Georgiev | Ambire (Jul 31, 2024, 11:22 AM)
We’ve worked around the initialization issue and we don’t use a setup function so that’s what makes things easier for us
I could be misunderstanding this a bit but still two implementations is not a big sacrifice in our case
Arik (Jul 31, 2024, 11:22 AM)
It would be useful to be able to use the most proven smart contract wallet in the space…
frangio (Jul 31, 2024, 11:22 AM)
regarding gas metering for init calldata why wouldn't the user just specify an exact amount of gas and pay for that
Arik (Jul 31, 2024, 11:22 AM)
But feels like we need Safe on the call for this
lightclient (Jul 31, 2024, 11:23 AM)
i think ppl want to discuss storage
Gajinder
Matt
Ansgar Dietrichs (Jul 31, 2024, 11:24 AM)
I don’t love collision avoidance solutions that are specific to 7702, because the long-term future of smart accounts will not be 7702-based
Yoav (Jul 31, 2024, 11:25 AM)
I agree, we should have the same solution for both account types.
Gajinder
Ahmad
Matt:
Vitalik
Eric
We still dont have proper tests. clients forked a lot in devnet-1 because of 7702 transactions
Matthew Smith (Jul 31, 2024, 11:28 AM)
matt's proposal is extremely well thought out. just a few minor points to clear up. let's ship it
Ansgar Dietrichs (Jul 31, 2024, 11:29 AM)
I still feel very strongly about code reads. I think the current spec is a clear mistake there, and would really like to see changes
Ansgar Dietrichs (Jul 31, 2024, 11:30 AM)
all my other proposed changes are more preferences, where I am happy to stick with the current spec instead.
Ahmad Bitar (Jul 31, 2024, 11:30 AM)
Agree
Ahmad
Yoav
Ahmad
Yoav
Ahmad
Ansgar Dietrichs (Jul 31, 2024, 11:32 AM)
there are 4 options imo:
behave like an EOA
return the raw code, i.e. the delegation format
behave EOF-like, return “0xEF”
current spec, return delegation target code
andrei (Jul 31, 2024, 11:33 AM)
current spec + allow to delegate to EOF only
Ahmad Bitar (Jul 31, 2024, 11:34 AM)
I actually like that
lightclient (Jul 31, 2024, 11:34 AM)
i think we should let pectra get a bit farther down the line, but yeah in a few months would be down to also do this
dror (Jul 31, 2024, 11:34 AM)
re: initcode:
Without initcode, we're not allowed to use existing deployed contract code, and t should be mentioned in the EIP's security consideration
Specifically, we can't use a contract code that relies on storage initialization, since any "setup" function is not protected by the "authorizer" signature (unless it performs "require address(this)==ecrecover(something)"
E.g. In the current design, signing an "authority" to use Safe's masterCopy as your account makes this transaction front-runnable, and someone could frontrun with a different setup and take over the account.
The same goes for any existing contract code, including any ERC4337 modular framework.
Arik (Jul 31, 2024, 11:36 AM)
I do think it’s something that is unfortunate - there is a lot of value with using “lindy” smart contracts…
Ansgar Dietrichs (Jul 31, 2024, 11:36 AM)
I think most people already left, we should not discuss this now
(even though I tend to agree with dror on this)
Ansgar
Yoav
Ansgar
Yoav
Dror
Matt
Frangio
Nico
Date: June 26 2024, 14:00-15:00 UTC
Agenda: https://github.com/ethereum/pm/issues/1081
Recording: https://youtu.be/_S01TtA3lao
Next steps:
(Notes+zoom chat)
Nicolas
To discuss that last update to 7702
Kevin
Julian Rachman
Matt/Sam/Ansgar
Ansgar
couldn't look into proposed change
conceptually it is somewhat cleaner, and in principle I like it.
two different option to activate the delegration target
Sam
Richard Meissner
Julian Rachman
kevin
Richard
@Arik you advocated to allow multiple delegation targets, right?
Richard Meissner
basically on chain it is said which delegation target can be used, but it will only be used if you specify it in the transaction.
Ansgar
kvn
Matt
Arik
I think you can just add a small flag to decide if the delegation is single transaction or permanent and it should solve everyone’s issue…
Richard Meissner
should the single tx authorization be reusable?
Arik
No, if you used it and you want to authorize again you would need to do it on a new nonce… cause it increased
Ansgar Dietrichs
yes, I think in every variant of this, I would appreciate a one-time use flag, basically “don’t store this as delegation target at all, just use it for this tx”
Arik
Ansgar Dietrichs
yoav
Hoshiyari
I was wondering how the new version can mitigate this actor vector…
Sudeep | Erigon
Richard Meissner
Ansgar Dietrichs
Richard Meissner
Sam
Matt thinks
Arik thinks other wise
Sudeep | Erigon
Ansgar Dietrichs
Arik
Ansgar Dietrichs
so one problem with this is frontrunning the one-time use tx (e.g. for griefing the user), if you send it via a public mempool. because the sig doesn’t commit to being used within a specific tx
temporary delegation
longterm deleg
permanent deleg
Ansgar
Matt
Richard Meissner (safe)
Julian Rachman
Maybe current “permanent” is better said as “persistent” delegation and “temporary” is better said as “expiring” delegation
Ansgar Dietrichs
Julian Rachman
lightclient
lightclient
Ansgar Dietrichs
For context though, Pectra size is very very large, so full rollout of the fork will probably take quite some time still. Imo the worst timing risk here is that Pectra ends up split into two parts, and that 7702 won’t be ready for the first part, so will end up having to wait an additional 4 months or so.
Ahmad
Richard Meissner
@Ahmad Mazen Bitar how do we handle the DoS vector that @Ansgar Dietrichs outlined for this approach?
Richard Meissner
Ahmad
Arik
Ansgar
Richard Meissner
Ivo Georgiev | Ambire
You send one txn to set a delegation, so that you can then benefit from SCA features for one transaction
Sounds like something that will never be used in the wild
Richard Meissner
Ahmad
Ansgar
Ahmad
Antony Denyer
kvn
Ansgar
Ahmad
yoav
Ansgar Dietrichs
For context though, Pectra size is very very large, so full rollout of the fork will probably take quite some time still. Imo the worst timing risk here is that Pectra ends up split into two parts, and that 7702 won’t be ready for the first part, so will end up having to wait an additional 4 months or so.
Julian Rachman
i wish we could have pre-matt’s proposal version but have come around to be ok with matt’s proposal
Ivo Georgiev | Ambire
You send one txn to set a delegation, so that you can then benefit from SCA features for one transaction
Sounds like something that will never be used in the wild
Ivo Georgiev | Ambire
Richard Meissner
Arik
Ansgar Dietrichs
Ansgar Dietrichs
Richard Meissner
Matt
Richard Meissner
Yoav
Ansgar
Yoav
Sam
Richard Meissner
kvn
Sam
Yoav
Matt
Kevin
Ahmad Mazen Bitar
lightclient
Ansgar Dietrichs
Nicolas
Richard M
Ansgar
Ivo
Sam
Julian Rachman
BUT I bias towards matt 7702 because we would be WAY worse off having this fall out in the worst case (knock on wood). The ethos for what 7702 is trying to do is still there and we want the ethos to be something we push into Pectra.
Richard Meissner
Ansgar
Richard
Arik
But again - this is not the main point in this discussion
Sam
Ansgar
Nicolas
Matt
Date: June 05 2024, 14:00-15:00 UTC
Agenda: https://github.com/ethereum/pm/issues/1054
Recording: https://youtu.be/gsc_yTdHRig
Links shared:
(Full Notes in WIP)
Tim Beiko: Okay, I guess we probably get started. Had a few things on the agenda for today. basically some spec discussions. Then, following up on what is best practices and the proxy pattern and see how how things go.
Yeah, let's maybe kick this off with the revocability conversation. So Sudeep, I believe you are the one who posted on the Erigon’s behalf on the magicians.
Tim Beiko: Do you wanna take maybe a minute to like, walk through your views and concerns.
Sudeep | Erigon: Yeah. So we have been considering, the security handling and concerns, and saying that it's the same as a private key or a seed phrase. I disagree there, because once you delete the wallet from your browser, the seed phrase, or the private key is supposed to be gone, and no more with the wallet provider. But with the signatures, it's a different deal like once you make a 7702 transaction, the authorizations live on the chain. And so let's say, if I don't trust the wallet anymore, and I want to move to a different wallet. Then I should have an option to do something similar to, Sign out of all accounts, or sign out sign out of all devices. There has to be like a mechanism for that. otherwise, there's always a lingering question about Is it safe? There was an authorization that that was there, and it wasn't really revoked. So what what happens there?
Sudeep | Erigon: Second point is that the people who are opposed to revocability. I don't think they're opposed to revocability as such. But the constraints that it poses on the wallet providers. and I think the nonce solution, nonce revocability is definitely too constraining for the wallet providers to create a proper ux. So I think we should investigate like more solutions. Certainly, Max nonce is one such option. The nonce manager is one such options. I think we can like come together with come together with more solutions on top of this, which have revocability baked in, and also allow the wallet providers enough sort of breathing room to create the UX that they want.
Date: May 29 2024, 14:00-15:00 UTC
Agenda: https://github.com/ethereum/pm/issues/1053
Recording: https://youtu.be/0vHHhZgrJ58
Links shared in chat:
By next call we hope to
Tim: Since the last meeting, PR on EIP7702 and the Berlin talk are the two main things.
Hopefully, we can discuss and get next steps.
Matt: PR is based on different convo in Berlin and at different places.
In Berlin, we talked about some restrictions with wallet devs over there.
Ansgar:
In Berlin , different dimensions and open questions were discussed.
Ansgar Dietrichs
I really think this PR should be merged instead of being the perpetual catch-all for all changes to the EIP. I keep meeting ppl that only see the main EIP and are unaware of any of these changes.
Ankur Dubey
Just to confirm, for replay protection has it been decided that both nonce and chain_id will be optional, by setting it to 0?
Julian Rachman
And then nonce would be set to null
Daniel Lehrner (Besu)
Yes, just one correction: nonce must be null, not 0 to be optional. Because nonce 0 is a valid value.
Yoav:
@lightclient @Ansgar Dietrichs update re storage. I talked to the solidity team and they started looking into supporting storage layout remapping. Just got off a call with them and they're on it. If we agree on a standard for storage bases, it can be made safe without sstore restrictions.
Basically resolving this old issue:
https://github.com/ethereum/solidity/issues/597#issuecomment-1537533170
Felix:
Konrad
Richard Meissner
I tend to disagree @Konrad. I.e. with Safe the implementation effort is little, but migrating users is a huge effort. Also auditing this and performing formal verification with external storage increases complexity.
Ahmad
Felix
Richard Meissner
It is possible, but definitly way more effort than when we can directly use existing contracts. (Note: I do not see this as a blocker, just a comment on compexity)
Ansgar Dietrichs
I will say, if we think the “only one authorized implementation at a time, with changes requiring onchain actions” pattern is desirable, we should think about a more fundamental change to 7702 instead of just enshrining a specific proxy as target
Ahmad:
Richard Meissner
I tend to disagree @Konrad. I.e. with Safe the implementation effort is little, but migrating users is a huge effort. Also auditing this and performing formal verification with external storage increases complexity.
Richard Meissner
As said it is not a blocker, but we have to consider our existing users. Maintaining multiple contract versions is not really efficient over a longer time
Konrad
Could this be determined at runtime (ie having a flag that determines whether to use contract storage or external storage)? That way it’d only be one codebase
Ansgar Dietrichs
I agree with felix to some extent: there is some risk that given pectra might be relatively soon, that we don’t have enough time to fully figure out best practices. in an ideal world then wallets would wait before adopting 7702, but competitive pressures might make this infeasible
thogard
Could use a diamond storage pattern with address(this).codehash as the storage salt?
But I agree w/ yoav - sequential storage would be a nightmare
Ahmad:
Tim
Ahmad
Yoav
Richard Meissner
Agree with @Yoav I.e. for a normal Safe you could replay txs as the nonce is in storage that would be reset
Ansgar
Richard:
One point for the external storage pattern was, that keystore related pattern are going in a similar direction
Ankur
Dan Finlay
I thought part of the 7702 motivation was reusing existing code, so making a big difference in the behavior or implementation of these account extensions would seem like it compromises the benefits over 3074.
Dan Finlay
I’ll note 3074 avoided storage issues.
Richard Meissner
That is because 3074 acts like an external storage holder, right?
Dan Finlay
right
Richard Meissner
But agree that with allowing storage it would provide more benefits
Dan Finlay
the invoker initiates the message on behalf of the user
Ansgar Dietrichs
I think it is pretty binary: either there are no changes, or it requires rewrite anyway
elim
Using existing code as-is would be the dream. But if it requires minimal modifications, imo it's still better than an entirely different architecture as required by 3074. Since the 7702 modified wallets can still be used as-is for native aa.
Dror
Ansgar Dietrichs
I also strongly disagree with implicit tstore behavior. if behavior is not identical, making it explicit breaking instead of implicit unexpected behavior is much preferable
Ansgar Dietrichs
storage contract defined in tx would not be forward compatible with later permanent transitions, no? unless we would then store that storage contract location in the verkle node and have this difference of former-EOA contracts forever?
Ansgar Dietrichs
I don’t think we can make final decisions on storage today. more important to figure out how we can get to making decisions on this over the next month or so
thogard
One pattern would be to SSTORE / SLOADs point at keccak(actual slot, codehash) for EOAs, but that runs into the same nonce replay issue unless the nonces are stored externally.
Richard Meissner
the "disadnavtage" with this would be that we have to touch existing opcode behaviour
Yoav
I held the same opinion until solidity agreed to add namespaced storage
lightclient
allowing storage isn’t going to block migration
Yoav
With that, it becomes easier to have a standard that all accounts should use
Matt:
Even if we have store, we see migration
Tim: Let's move forward with Storage and keep discussing.
Matt
Sachin Tomar
If we allow storage in EOA, won’t this result in storage conflict when EOA uses different implementations in different txns?
Dan Finlay
And risks the bundler including the wrong 7702 account, changing the behavior of the op
Felix
This is why I suggested to only allow a specific proxy, because then you'd at least be able to perform explicit transitions between the implementations.
Dan Finlay
Yeah, “just allowing a specific proxy” may not solve storage conflict, but does solve this important issue.
https://gist.github.com/lightclient/7742e84fde4962f32928c6177eda7523
Matt
elim
Not necessarily the proxy code, but rather the implementation slot right?
Ansgar Dietrichs
I don’t dislike one proxy contract, but I would be very reluctant to enshrine it in the protocol. better to enforce via wallet whitelisting imo
Ansgar Dietrichs
also means that every tx is more expensive now, as it always has that additional delegatecall hop
Dan Finlay
I disagree; a user with srps in two wallets could get in hazardous situations easily here
Dan
SRP means Secret Recovery Phrase
Ansgar
Matt
Andrew
Gary Schulte
Agreed re:verkle, but presumably we don’t want to wait for Osaka for AA
Julian Rachman
So would this proxy be a built-in proxy?
Julian Rachman
Built into the protocol
vub
A few random ideas:
Let the code of ADDRESS + 1 represent an EOA's "backup code", and have 7702 just temporarily flip on the backup codes of the listed accounts
Add an EOF version for "this account's 7702-code is at address X"
Ansgar Dietrichs
can’t do this before eof in pectra is certain
Daniel Lehrner (Besu)
An enshrined proxy could cause problems with L2 compatibility. Not all L2s are on the same hard fork as main net
lightclient
the proxy would not use new ops
elim
Why does it need to be a proxy? We just need to record on-chain somehow who the account is delegating to. So this can just be an agreed upon storage slot. 7702 auth'ed implementations can just "promise" to verify this slot.
Can bypass the extra delegatecall
Matt
Vub - agrees
Andrew
Ivo @ Ambire
My 2c is that no storage restriction is amazing. Huge flexibility for wallet teams, no need to enshrine a contract,
And the storage conflicts are a separate issue that always existed. Yes, 7702 makes it easier for it to accidentally happen but this is up to wallet devs to prevent (make implementations that use unique slots)
Eilas
Vitalik
Matt agrees with Vitalik.
Ahmad
Tim
+1 on ERC proxy, if we could have a draft for next week’s call that’d be great