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

Intent accumulator for forwarding multiple actions at once #363

Open
izqui opened this issue Sep 19, 2018 · 6 comments
Open

Intent accumulator for forwarding multiple actions at once #363

izqui opened this issue Sep 19, 2018 · 6 comments

Comments

@izqui
Copy link
Contributor

izqui commented Sep 19, 2018

Thanks to EVMScripts, forwarders support performing more than one action at the same time. Rather than creating two separate votes to perform two actions that require a vote passing, these two actions can be bundled into a single proposal that can be voted on. This also has the advantage that the bundled actions are performed atomically and one after the other, meaning that the side-effects of actions become effective at the same time.

My idea of how this would work is when we present the signing panel telling the user how the transaction can be executed, we would add a button to defer signing the transaction and add the intent to a transaction 'shopping cart' or accumulator. I'm unsure whether this accumulator would need a view of its own (maybe accessible from the header in the navbar to the right of the Aragon logo) or would be good enough to just interact with it from the signing panel. Actions from different apps could be accumulated.

When the user finishes selecting all the actions that they wish to perform at the same time through a forwarder, we should give the chance to change the order in which they will be executed or even remove some previously added intents. One the user decides to move forward, we would then try to find all the possible forwarders with permission to perform all the selected actions, and then prompt the user to sign.

Some immediate uses for this:

This will require adding support for multi-intent transaction pathing in aragon.js and making sure that the Voting app provides correct descriptions for votes executing multiple actions. Given the amount of complexity, it is unclear whether we would be able to have this before launch, but I think it would be beneficial to start designing and thinking about how the interaction will work.

Please let me know if the explanation is not clear enough and some mockups/wireframes would be appreciated.

@izqui
Copy link
Contributor Author

izqui commented Sep 19, 2018

Capturing @bpierre thoughts that a good place for the 'shopping cart' to live would be in the notifications/transaction queue view. The bundled pending transactions could show up with a different state there, and a button to execute them which would make the signer pop up.

@luisivan
Copy link
Contributor

I like this, but we need to be careful about its UX. @jounih can you give it some thought? What I want to avoid is having users asking themselves when to perform the transaction. Should I add two more items? Which actions can I add and which not? When should I bundle them? Users don't know any of the technicalities of atomicly executing transactions, so we need to be careful about that

@luisivan
Copy link
Contributor

luisivan commented Mar 6, 2019

Use cases right now: voting in the Voting app and upgrades in the App Center.

@lkngtn
Copy link

lkngtn commented Jun 13, 2019

Bumping an old but awesome issue!

Wondering if another use case for this would be for organizations which have non-transferrable assets handling minting a new token and burning an existing token to effectively switch balances between accounts atomically?

@stale stale bot added the abandoned label Dec 10, 2019
@aragon aragon deleted a comment from stale bot Dec 10, 2019
@stale stale bot removed the abandoned label Dec 10, 2019
@sembrestels
Copy link

Another use case yet! Installing apps and assigning permissions to them.

Do you know if EVMscripts can return parameters? That would be needed for getting the app address and pass it as parameter to the next function in the EVMscript.

@sohkai
Copy link
Contributor

sohkai commented Feb 14, 2020

Do you know if EVMscripts can return parameters? That would be needed for getting the app address and pass it as parameter to the next function in the EVMscript.

No; this is specifically the problem that has made this very hard for us to design app installation :).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants