-
Notifications
You must be signed in to change notification settings - Fork 235
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
[ETHEREUM-CONTRACTS] Investigate multicall forwarder #1500
Comments
Investigation steps:
Other considerations
|
General architecture Implementation Details notes Other considerations
Basic contract to test assumptions
|
We might add this to host, but not now, we are just focusing on a forwarder. |
here is what the multicall forwarder would resemble without the fees: https://github.com/0xdavinchee/superfluid-multicall-forwarder/blob/main/src/SuperfluidMulticallForwarder.sol |
Why?
Background
This is how real account abstraction will be built. Trusted “invoker” contracts which abstract msg.sender.
It’s being EIP’d as we speak, but there’s no consensus yet. We’d be able to announce this with a very strong narrative if we jump the gun
A radical idea on batch calls
Implementation Details
a. Has identical ABI to multicall3 (to guarantee full compatibility)
b. Stores the msg.sender in a public batchMsgSender()(this would be the only extra function on the contract)
c. Makes a delegateCall to the multicall3 contract
d. Deletes the msg.sender at the end of the call
a. If we want users to be able to use the existing forwarder style to open streams, we’d need to rewrite the forwarder to accept this new forwarder’s msgSender
a. we rewrite transfer/approve/send on superTokens to check if caller is the approved multicall contract. If it is, then use the batchMsgSender() function we put on the multicall, which returns the msg.sender for the batch
b. This is the main change to current batch calls, which use “operationTransfer” etc, which isn’t great for understandability by end users, and requires developers to understand Superfluid specific things / use the SDK to abstract them)
The text was updated successfully, but these errors were encountered: