-
Notifications
You must be signed in to change notification settings - Fork 166
docs: Expand EIP-7702 #428
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
Hi @pbkompasz,
ℹ️ How to fix this error:
ℹ️ Checking for typos locally
for f in **/*.md ; do echo $f ; aspell --lang=en_US --mode=markdown --home-dir=. --personal=wordlist.txt --ignore-case=true --camel-case --add-sgml-skip nospellcheck list < $f | sort | uniq -c ; done |
|
Hi @pbkompasz,
ℹ️ How to fix this error:
ℹ️ Checking for typos locally
for f in **/*.md ; do echo $f ; aspell --lang=en_US --mode=markdown --home-dir=. --personal=wordlist.txt --ignore-case=true --camel-case --add-sgml-skip nospellcheck list < $f | sort | uniq -c ; done |
|
Hi @pbkompasz,
ℹ️ How to fix this error:
ℹ️ Checking for typos locally
for f in **/*.md ; do echo $f ; aspell --lang=en_US --mode=markdown --home-dir=. --personal=wordlist.txt --ignore-case=true --camel-case --add-sgml-skip nospellcheck list < $f | sort | uniq -c ; done |
|
Hey @pbkompasz since pectra went live, this is no longer a research topic. You could add it to EL specs. |
| Each authorization tuple incurs a gas cost of 25,000 gas, calculated using the following formula: | ||
| ```21000 + 16 * non-zero calldata bytes + 4 * zero calldata bytes + 1900 * access list storage key count + 2400 * access list address count``` | ||
| This approach charges the maximum gas amount upfront. A partial refund of 12,500 gas is issued if the contract already exists, which happens through the global refund mechanism. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could be nice to tie together all the info above with a simple example, i.e.
Step 1: user submits tsx with authorization_list pointing to a SC with e.g. session key logic capabilities
Step 2:***
| 5. Verify that `nonce` is equal to nonce of `authority` if the `authority` exists in the trie otherwise `nonce` has to equal `0`. | ||
| 6. If `authority` exists in the trie the refund amount of `PER_EMPTY_ACCOUNT_COST - PER_AUTH_BASE_COST` is added to the global refund mechanism. | ||
| 7. In case of a non-zero `address` the code of the authority is set to `0xef0100 || address` (where `||` denotes concatenation), otherwise the EOA's code is cleared and the code hash is set to the hash of a null address (`0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470`). This serves as a revocation mechanism. | ||
| 8. The nonce of `authority` is incremented by one. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
after this, it would be nice to know what happens if any of the steps above fail. from the EIP, "If any step above fails, immediately stop processing the tuple and continue to the next tuple in the list. When multiple tuples from the same authority are present, set the code using the address in the last valid occurrence. Note, if transaction execution results in failure (e.g. any exceptional condition or code reverting), the processed delegation indicators is not rolled back"
| <iframe width="560" height="315" src="https://www.youtube.com/embed/_k5fKlKBWV4?si=Y4DehqLu5fpT7-a3" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> | ||
|
|
||
| other resources: | ||
| Although ERC-4337 introduces account abstraction, EIP-7702 serves a different purpose by providing externally owned accounts (EOAs) with temporary programmability. The benefits of introducing programmability to externally owned accounts (EOAs) include transaction batching, transaction sponsorship, privilege de-escalation and session keys, and social recovery. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems a bit misleading to say, "EIP-7702 serves a different purpose by providing externally owned accounts (EOAs) with temporary programmability." since the account's code property can stay pointed to a delegation indicator indefinitely. Ofcourse, you can update it by sending another type-4 tsx.
perhaps update to something like this, "Although ERC-4337 introduces account abstraction through a smart account framework, EIP-7702 takes a complementary approach by allowing externally owned accounts (EOAs) to delegate their execution logic to a smart contract. That contract can be ERC-4337-compatible, meaning 7702 lets you plug directly into the 4337 ecosystem using your existing wallet."
EIP-7702
Expanded EIP-7702 article with new transaction type, transaction execution details, etc.