aragon / aragon.js

(Aragon 1) A monorepo of JavaScript libraries for interacting with Aragon
https://aragon.org
GNU Affero General Public License v3.0
82 stars 58 forks source link

Proposal: Intent queues for each app #192

Open sohkai opened 6 years ago

sohkai commented 6 years ago

With apps, and their interactions, becoming more complicated, it's become clear certain actions may require "pre-actions". A good example of this is token approvals, where an app may only be able to act on a user's behalf or enable a particular action if the user first approves the app.

In general, there may be cases where an app requires a user to send many transactions in a row using their own account (so it wouldn't be possible to use a transaction bundler, like CallScripts). Again, the first thing that comes to mind is an app requiring multiple tokens / contracts, that all need approvals (think the 5-10 transactions required to enable interactions with DAI).

At the moment, all transactions are streamed through a single observable irrespective of app. This makes it hard for a client to both detect where an intent is coming from, as well as buffering these transactions so that they can show the user one action at a time without losing information (which is really, really important).

mikec commented 5 years ago

@sohkai what do you think about allowing apps to send a batch of transactions in a single message, and having the aragon client manage these as a step by step UI (i.e. showing users what step they're at in the transaction signing queue, and how many they have to go)? This might be a separate discussion, but it might be helpful if apps could specify descriptions of transactions to be displayed in the SignerPanel. I think this is done now via the manifest.json data, but maybe could be done via the client API.

sohkai commented 5 years ago

@mikec This would be really nice, I've added an issue in aragon/aragon to discuss it: https://github.com/aragon/aragon/issues/609