Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
docs/EIP7702.md, which documents how an EOA becomes a Sequence wallet through EIP-7702 and what the trust model actually is once it does. The part that needed writing down: for a 7702 account a plain transaction the EOA sends to its own address hasmsg.sender == address(this), so the authority key satisfiesonlySelfdirectly. That reachesupdateImageHash,setStaticSignature,addHook,removeHookandselfExecutewith no Sequence signature, no nonce, no checkpointer and no reentrancy guard, and neither a configuration update nor aRecoverytakeover revokes it. The key can also re-delegate with a type-4 transaction, which no contract can prevent. Stage1 and Stage2 wallets can recover from a compromised initial key by rotating the configuration, a 7702 wallet cannot, and the only remedy is moving the funds. Any product surface that presents rotation or recovery as revocation is wrong for these accounts.The doc also covers two related 7702 details that had no home. First, the counterfactual 1-of-1 configuration that
Stage7702Auth.imageHash()returns until the firstupdateImageHash, including the liveness dependency onDEFAULT_CHECKPOINTERwhen it is non-zero: every fresh wallet's first signature has to name it,snapshotForis called on it, and a reverting or misbehaving checkpointer blocks fresh wallets. It can block, it can never forge. Second, re-delegation does not clear storage, so an account delegated elsewhere before can arrive with a planted image hash, hooks, static signatures or a stuck reentrancy flag. The namespaced slots prevent accidental collisions, not deliberate ones. Section 7 lists what onboarding should read before trusting an account.There is no contract-level fix for any of this, so the only code change is natspec:
onlySelfinSelfAuth.solnow says that under EIP-7702 it gates on the wallet or its authority key, and points at the doc.forge buildpasses on a full recompile. No tests were added or changed, since nothing behavioral changed.