Building DAOs with Aragon

This is a two-part series. In this first part, we will introduce you to Aragon and what it does. We will talk about its architecture and different parts of its stack. In the next article, we will create a really simple DAO using Aragon!

Building DAOs with Aragon

A framework to create decentralized autonomous organizations

This is a two-part series. In this first part, we will introduce you to Aragon and what it does. We will talk about its architecture and different parts of its stack. In the next article, we will create a really simple DAO using Aragon!

What is a DAO?

A DAO (Decentralized Autonomous Organization) is a Smart Contract-controlled organizational system. Currently, every organization has some sort of hierarchy, with typical top-down decision making. In the future, we can have democratic organizations where rules are created and changes are based on voting. Every function (such as payroll and fund management) can be controlled by Smart Contracts. These types of organizations will be called DAOs: where no single authority will be in control and organizational decisions are powered by Smart Contracts. These types of organizations will be unstoppable.

Organizations that can be spun up instantly, that can’t be shut down by governments, that are resistant to internet censorship, and that allows small groups of people to collaborate effectively.

What is Aragon?

Aragon fulfills this dream and provides tools to build a DAO on top of Ethereum (a Smart Contract blockchain). Aragon provides a full end-to-end framework to build DAOs. Let's understand Aragon’s architecture and different parts of its framework.

Before understanding how Aragon architecture works together, let’s understand its different parts.

aragonCLI: a tool for creating, testing and publishing Aragon applications through the command line.

aragonOS: manages different parts of the Aragon stack; it’s a Smart Contract framework that enables flexible and upgradeable governance mechanisms by creating and assigning permissions to multiple entities. It mainly provides 3 functionalities:

  1. Upgradability
  2. Permission Control
  3. Forwarding

aragonPM: a decentralized package manager build on top of aragonOS that handles upgradeability of Smart Contracts and arbitrary data blobs, such as web apps. aragonPM allows multiple aragonPM registries with different governance models for package creation and publishing new versions. There is an official Aragon curated instance, aragonpm.eth, curated by Aragon and an open registry (open.aragonpm.eth) for the community.

aragonPM Repository: a Smart Contract deployed inside aragonPM that keeps track of the versions for a package.

aragonPM architecture

The aragonPM registry includes a number of installed apps, including an APMRegistry app and an ENSSubdomainRegistrar app, alongside many Repo instances. Each new created Repo is to be assigned its own subdomain. This gives users the ability to find repos with human-readable names, such as voting.aragonpm.eth.

aragonAPI: a standard set of APIs and specifications used to interact with aragonOS-powered contracts by handling transaction pathing, upgradeability, and contract state. An implementation is available in JavaScript currently.

aragonUI: a Aragon-native toolkit of UI components for decentralized apps (dApps). It is a collection of UI components built by Aragon for the community. Using aragonUI is not mandatory to build a DAO.

Aragon Apps: apps which use aragonOS, aragonAPI, and integrate inside the Aragon client.

Aragon Client: a full dApp which can create and manage decentralized organizations by running Aragon apps inside of it.

DAO Template: Smart Contracts which can be used as templates for creating pre-configured DAOs in just one transaction.

Access Control List (ACL): a mapping of who has permission to execute an action in an Aragon app and who can re-grant or revoke that permission.

Understanding Aragon Architecture

In simple terms, Aragon contains multiple components to build a DAO. Aragon is an end-to-end solution, so on front-end side it has aragonUI and aragonClient (which interacts with aragonOS using aragonAPIs). Aragon clients also integrate with aragonApps (voting, payroll).

aragonOS has 4 main components:

  • Kernel
  • ACL
  • aragonApps
  • Forwarder and EVMScripts

These components are responsible for contract upgradeability, permission management, and providing new functionality. In the above diagram, you can see how an action gets performed by an ANT (Aragon Network Token) holder on Aragon’s own DAO.

Here, the token holder is trying to vote using the Voting app (provided by the Aragon DAO). First, it gets the address of the configured version of the Voting app using Aragon kernel, then it checks if the action can be performed using ACL (through the kernel).

Wrapping Up

We will stop here today, however you can read more about Aragon’s components and architecture here.

Further Reading Material:

In the next article, we will learn how to create a simple DAO using Aragon — don’t miss it and subscribe below!

Need help with your project or have questions? Contact us via this form, on Twitter @QuickNode, or ping us on Discord!

About QuickNode

QuickNode is building infrastructure to support the future of Web3. Since 2017, we’ve worked with hundreds of developers and companies, helping scale dApps and providing high-performance access to 16+ blockchains. Subscribe to our newsletter for more content like this and stay in the loop with what’s happening in Web3! 😃