What is Aragon?
Aragon is a decentralised app on the Ethereum blockchain which allows anyone to create and manage decentralized organisations. It is an open-source project led by the Aragon Association. Aragon provides a platform for the creation of new, decentralised organisational forms that protect self-sovereignty, empower communities and facilitate collaboration across borders and jurisdictions.
AragonOS and AragonCLI
aragonOS is a smart contract framework for building decentralized organizations, dapps, and protocols.
aragonOS provides the following functionality:
- Upgreadability: standard for upgradeable smart contracts
- Permission control: flexible permission control system that lets us define permissions on runtime
- Forwarders: standard on how contracts interact with each other
aragonCLI is a wrapper around truffle to interact with an aragonOS app and that allows to manage permissions and contract versions. e.g. it provides a nice CLI interface to list and manage contract versions.
AragonOS and the CLI are very similar to what we are currently doing with kredits-contracts with similar ideas and solutions. Some of our work was also inspired by code and proposals from Aragaon.
Every aragon DAO consists for multiple apps that have different versions. Similar to our registry that points to the different contracts. An app would be for example the Contributors address book or the Contributions Management.
Through forwarders these apps can be loosely coupled and for example a static call from a fixed account could later be changed to require a voting through the voting app.
Init a new DAO
The CLI allows to create a new DAO and initialize some defaults through DAO-kits.
$ aragon dao new
The whole DAO can then be managed through the aragon dao command
Adding a new app
To use an app it first has to be "installed" for the DAO. Installing basically means creating a new upgradable proxy contract that uses the code from a specific contract at a specific address. Thus the contract can be upgraded to new versions independently of the proxy contract.
$ aragon dao install
AragonOS and aragonCLI provide a standard way to manage different version of the contracts/app. They basically also have a proxy contract and point to different implementations. The CLI provides:
aragon apm versions and aragon apm publish to manage new versions of contracts.
The contract that is used can be updated through aragon dao upgrade
So far Kredits has used hard-coded permission controls (e.g. a function can only be called from one specific contract address). The aragon permission ACL lists allow to define controls on runtime.
It is also possible to change permission through a voting contract.
or through the CLI: aragon dao acl
Aragon runs a grant program called Aragon Nest that supports relevant projects around the DAO, Aragon, Ethereum ecosystem. This might be interesting for Kredits but also there might be some inspiration among the current projects and proposals: