Skip to content
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

[Prototype] AragonApp: signed calls and multi call execution (aka meta-txs support) #442

Closed
wants to merge 3 commits into from

Conversation

izqui
Copy link
Contributor

@izqui izqui commented Oct 18, 2018

Super early prototype of how we could add a way to execute signed calls in a contract inheriting AragonApp. Signed calls allow the entity performing an action doing so without ever having to own any ETH to pay for transaction fees, by having a relayer submit their signed calls on-chain. There seems to be some momentum around the EIP1077 standard, which could be interesting to support, as a standard interface could help create a ecosystem of relayer services.

By putting this in the AragonApp contract, any Aragon app would automatically benefit from this functionality. There is native support for ACL checks, but apps willing to use this for custom logic (e.g. Voting) should use AragonApp.sender() instead of msg.sender.

It uses volatile storage, AragonApp will write to a storage slot who the actual sender of the call is before calling itself with that calldata. After the sub-call ends executing, that storage slot is emptied. This would be quite expensive to do right now, but the new net gas metering in Constantinople this is quite cheap to do.

Got down this rabbit-hole after having a discussing with @bingen about whether it would make sense to add multicall to the Staking app, and his proposal to add it directly to AragonApp.

The current implementation doesn't allow to perform multiple calls from sender as in multicall, but it could be implemented by accepting empty signatures as calls executed by their sender.

@coveralls
Copy link

Coverage Status

Coverage decreased (-3.8%) to 94.978% when pulling b98c382 on signed-exec into a684791 on dev.

@izqui izqui changed the title [Prototype] AragonApp: signed calls and multi call execution [Prototype] AragonApp: signed calls and multi call execution (aka meta-txs support) Nov 11, 2018
@izqui
Copy link
Contributor Author

izqui commented Mar 21, 2019

This could use the same signature validator as Agent uses: https://github.com/aragon/aragon-apps/blob/master/apps/agent/contracts/SignatureValidator.sol

@sohkai
Copy link
Contributor

sohkai commented Jul 12, 2020

Closing; this will be approached separately with baseline meta transactions support in aragonOS (e.g. #526).

@sohkai sohkai closed this Jul 12, 2020
@sohkai sohkai deleted the signed-exec branch July 12, 2020 16:59
@sohkai sohkai restored the signed-exec branch July 12, 2020 16:59
@sohkai sohkai deleted the signed-exec branch July 12, 2020 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants