Hello @frangio, you are right, this thread should be the place to get updates.
Here is a short summary of the changes weâve made to the EIP-7701 recently and a short rationale for the change:
- Complete removal of any reliance on ABI encoding, for both inputs and outputs of all frames.
Previously, we suggested exposing the ABI encoding of transaction parameters directly as âcalldataâ, but this approach has some downsides. Most importantly, it makes the ABI encoding itself a part of the EVM specification, which was never the case.
- Introduction of the
TXPARAM*
opcodes
We still need to provide these transaction parameters to the validation frames, which we now suggest doing via TXPARAM*
opcodes, which behave similarly to CALLDATA*
opcodes. As we need to provide 23 parameters and we probably donât want to introduce 23 new opcodes, we chose to have TXPARAM*
opcodes accept the parameter index as an âimmediate argumentâ.
These opcodes are currently limited to the validation frames and are not available during the execution.
- Made the time range validity parameters part of the transaction payload
Previously, we had the validation frames return the validAfter
and validUntil
parameters. This was a pattern introduced in ERC-4337 intended to support the âsession keysâ use-case in AA contracts that have no access to the TIMESTAMP
opcode due to ERC-7562 rules.
For now, it seems like having these parameters be a part of the transaction payload is beneficial, and even that the use of the TIMESTAMP
opcode may be acceptable in validation frames in certain scenarios.
- Removed the explicit Paymaster âpostOp contextâ
As there is now an EIP-1153 transient storage, returning the âcontextâ from the paymaster validation frame is no longer necessary to access this data in the âpostOp frameâ.
Together, these two changes mean that it is enough for the validation frame to return without reverting to be considered valid.
- Added the Non-EOF Proxy Contract Support
Previously, the âlookupâ for the code section with a specified role happened directly for the contract at the address specified as Sender, Deployer, or Paymaster. Now, this role lookup can be satisfied by any contract that runs in its context via a (EXT)DELEGATECALL
opcode.
This change makes the concept of ârolesâ both backward- and forward-compatible for upgradeable contracts. This should also work out of the box with EIP-7702.
This list is not exhaustive, but I think it covers the biggest changes we have made. I appreciate any feedback and questions.
Of course, there is a need to make certain updates to the existing tooling around Account Abstraction. Specifically, the Solidity compiler will need to implement a couple of new features to support EIP-7701, as well as any tool that relies on transaction tracing in any way. But for regular users, as well as developers of Smart Accounts and Paymasters, changes that are required are supposed to be minimal.