diff --git a/4337/README.md b/4337/README.md index da81d9518..6278c5c77 100644 --- a/4337/README.md +++ b/4337/README.md @@ -12,8 +12,9 @@ sequenceDiagram participant E as Entry Point participant P as Safe Proxy participant S as Safe Singleton - participant M as 4337 Module + participant M as Safe 4337 Module actor T as Target + B->>+E: Submit User Operations E->>+P: Validate User Operation P-->>S: Load Safe logic @@ -32,10 +33,21 @@ sequenceDiagram M-->>-P: Validation response P-->>-E: Validation response Note over P, M: Total gas overhead
Without fee payment ~4.900 gas
With fee payment ~7.200 gas - Note over B, T: This execution flow is similar
for native 4337 support
therefore there is no gas overhead - E->>+P: executeTransactionFromModule + + E->>+P: Execute User Operation P-->>S: Load Safe logic - P->>-T: Perform transaction + P->>+M: Forward execution + Note over P, M: Call to Safe Proxy ~100 gas
Call to fallback handler ~100 gas + M->>P: Execute From Module + P-->>S: Load Safe logic + Note over P, M: Call to Safe Proxy ~100 gas
Module check ~100 gas + P->>+T: Perform transaction + opt Bubble up return data + T-->>-P: Call Return Data + P-->>M: Call Return Data + M-->>-P: Call return data + P-->>-E: Call return data + end ``` The gas overhead is based on [EIP-2929](https://eips.ethereum.org/EIPS/eip-2929). It is possible to reduce the gas overhead by using [access lists](https://eips.ethereum.org/EIPS/eip-2930).