Following my post on personal DAOs, I wanted to sketch out a possible form they can take.
From now on, I will use the term smart accounts coined by Jeremy Macaluso on this post.
Your account is represented by an aragonOS app. This app forwards transactions on your behalf when a set of criteria is met.
Since the smart contract would be an
AragonApp , it would get upgradeability and interoperability with other Aragon apps for free.
The contract would store:
An array of addresses called
addresses, that are controlled by this account
An integer called
threshold, which defines how many signatures from those addresses are required for the Identity contract to forward a transaction
This identity contract would expose the following functions.
It implements a forwarder, which forwards any payload to another address. By this means, the identity can manifest its will.
This method would have to be provided with a
threshold amount of signatures from
addresses . This way, signatures could be created off-chain, and put together when the account needs to forward a message, thus reducing the number of on-chain transactions.
Methods for modifying
addresses . They could have different permission settings, but in this particular case, let’s say that just this smart account app can do it.
This method forwards a message overriding the signature checks that are present in
forward . This method would be under a permission that could be set so a group of friends or trusted parties can call it.
For example, a Voting app could have permission to call it, and a Token Manager app could have permission to open new votes. You could give Account recovery tokens to the parties that you trust for this process.
Its functionality could also be restricted to call the methods that modify
The account can have permissions to upgrade its own reference in the kernel, therefore enabling self-upgradeability.
We can set the smart account itself as its permission manager, therefore it could change its own permissions over time, and change how it works.
All checks can be overriden all by using
recover , which just enables the account to forward a message. Since the account has permissions over itself, recovering means just forwarding a message to itself.
Is this gas efficient? Would just need to check signatures to forward the transaction, so I’m guessing so
Can we implement a
forwardfunction that takes signatures as a parameter?
Isn’t this just an aragonOS-based multisig? It can seem so, although I’d argue that the most basic smart account is just a multisig with a smart and governable recovery mechanism