Replies: 5 comments
-
I definitely vote for a signed list of transactions. Do you see downsides to having two separate entry points? Is it more complicated to build a signed list of transactions, than a single transaction? |
Beta Was this translation helpful? Give feedback.
-
I do prefer the signed list of transactions for the reasons you mentioned, especially atomicity, as order can still be guaranteed by signing the nonce, but atomicity can not. Given that, I think having two different entry points would be cleaner :) |
Beta Was this translation helpful? Give feedback.
-
I was thinking of having a single entry point that takes a list of transactions, whose length can also be 1. I think this is easier to: implement, reason about, and integrate with. I'm biased towards simplifying the contract's API and codebase as much as possible. |
Beta Was this translation helpful? Give feedback.
-
I prefer as well a signed list of transactions for the reasons mentioned above. It also makes more sense with the I also like the idea of having 1 generic entry point accepting an array of transactions. |
Beta Was this translation helpful? Give feedback.
-
Agree with the above. Also, note that breaking atomicity deviates from the Solidity implementation and behaves differently. |
Beta Was this translation helpful? Give feedback.
-
Signed list vs List of signatures
Should this function take a list of signed transactions (
[(Signature, Message)]
) or a signed list of transactions ((Signature, [Message])
)? Probably the former is easier to implement, but the latter guarantees order and atomicity. Otherwise, a sequencer or some man-in-the-middle could partially send a subset of the intended list of transactions. More over, it could reorder/sandwich some of those calls to exploit it somehow, e.g. for MEV extraction.Single
execute
function?Should we have two different functions for single and multiple calls or should we have a single
execute
function supporting them both? Haven't thought about this one yet.Reference implementation
Here's the reference Solidity implementation from Multicall.sol:
Beta Was this translation helpful? Give feedback.
All reactions