The goal of the first milestone is to create a backend application connecting Aragon DAOs to a webhook connector. This will be available to all core Aragon apps built and maintained by Aragon One, listed here: https://github.com/aragon/aragon-apps.
Here are the results:
The application was created using the MESG SDK that we've developed internally. It enables the flow of data from and to services using processes.
+------------+ +-------------+ | | | | | Aragon DAO | | Webhook | | | | | +-----+------+ +------+------+ | ^ listen | | trigger v | +------------+ +-------------+ | | | | | Ethereum | | Webhook | | services | | service | | | | | +-----+------+ +------+------+ | ^ | | event call | +------------------+ | | | | | +------------>+ Process +-------------+ | | +------------------+
- Multiple MESG Ethereum services are running and actively listening for events from specific applications of an Aragon DAO.
- When an Ethereum event is detected, the service emits it to the MESG Engine.
- If the event matches a MESG Process, the process gets triggered.
- In this case, the process executes the task
callof the Webhook service.
- The Webhook service creates a HTTP request and executes it.
Check out the source code of this demo and see how you can install it on the Github repo here: https://github.com/mesg-foundation/aragon
The Ethereum service used has some limitations due to its design. It works only with one specific smart contract. As Aragon DAOs rely on one smart contract per application per DAO, the service has to be deployed multiple times with different configurations. For the next milestones, we will use a generic-purpose Ethereum service that only needs to be deployed once and works with any event of any smart contracts. The process will have to filter the exact events to match.
- The Ethereum service requires an external provider to connect to Ethereum. We will work on a version that directly integrates Geth configured as a light client.
- The webhook service could used a secret token or to sign the request in order to prove the origin and prevent abuse. We'd love to hear your feedback and suggestions on this one.
- Getting the ABI and smart contract address of the Aragon App is manual. Is there any way to programmatically get the ABI corresponding to the specific version used by a DAO? Can an Aragon application get the address and ABI of other applications within the same DAO?
We started to work on the second milestone: to create an Aragon app that manages the connection between the users’ DAO and the webhook.
While completing this milestone, we will start to run the MESG application on our testnet so we should be able to do a public and live demo.
We would love to hear your feedback and suggestions. Join the discussion.