MVP Account Abstraction Proposal #490
Replies: 3 comments 4 replies
-
Firstly thanks, I support the idea to look for simplifications that will make AA easier to ship, but that are on the path to a more powerful version. I take issue with the phrasing that #388 disallows packing multiple messages from one actor in a block. It's allowed, just not advisable naively. I would prefer to say that the proposed always-read-only restriction gives an easy heuristic for validation results that are entirely static, and hence multiple messages are safe. We should think about how to make that restriction easy to relax in the future. E.g. we could make it an explicit property of actors rather than something the VM always does. I.e. an actor specifies a static "always readonly" property which the VM inspects (and for now refuses to call validate() if false). Then in the future when the VM will permit false, existing actors still behave the same way. If we make the restriction a property of the VM only, when we lift it in the future mempools won't be able to distinguish that some actors are still safe, and/or the environment assumptions in which the actor was developed will change. I note we could reach the same set of use cases with other heuristics about the account code being known to never alter its state nor be upgradeable, i.e. an allow-list, (assuming this is true of FEVM entry point actor), plus other cases could be supported but might expect to be limited to one message per epoch. The protocol itself would be simpler, but those heuristics would be added complexity for implementations. I would prefer a path to make this read-only property more dynamic, like a no-self-mutation bit for top level messages that you suggested here. This is a bit different to #487, since transitive calls from the actor could still mutate other actors (but those others can't be consulted during validation). |
Beta Was this translation helpful? Give feedback.
-
I completely agree.
|
Beta Was this translation helpful? Give feedback.
-
In the FIP-0054 draft there's a whole section I don't understand: "Inability to stably address some actors from EVM smart contracts" I think this section is relying on knowledge of some EVM actor implementation details that are not specified here. Does it also apply to EthAccount? If so, what's the logic in EthAccount that has this effect? Why can't an EVM contract send to an f2 address? Why can't an EthAccount send to and f2 address (if it can't)? What's this masked address thing? |
Beta Was this translation helpful? Give feedback.
-
The current account abstraction proposal (#388) is a large departure from how accounts currently work and therefore raises quite a few security and usability questions:
Instead of trying to come up with a complete solution up front, I'm proposing an MVP version that makes abstract accounts look almost identical to current accounts, except that they can chose how they validate messages. My goal is to enable FEVM (FVM M2.1) right now, while setting ourselves up for more generally abstract accounts in the future (FVM M2.2).
Specifically:
validate
endpoint to validate off-chain messages (with the modification I proposed in Account abstraction #388 (comment)).This is sufficient for:
But that's about it.
Beta Was this translation helpful? Give feedback.
All reactions