🤠 CRDAO Deployment Guide

Roll your own CRDAO!

The CRDAO is an Aragon organization, currently deployed to Rinkeby. The following walk through describes the deployment process using the Aragon CLI

Note: Once the first cohort of CRDAO members are on-boarded, Admin1 will relinquish the mint role on the Token manager. the permissions table can be found here

1. Deploy new DAO

Create a new DAO

dao new --environment aragon:rinkeby --use-frame

Create DAO environment variable
Create deployer environment variable

2. Token

Create token

dao token new "Bird" "BIRD" --environment aragon:rinkeby --use-frame

Create token environment variable

Create token manager

dao install $dao token-manager --app-init none --environment aragon:rinkeby --use-frame

Create Token Manager environment variable

Set token manager as tokens controller
dao token change-controller $token $tm --environment aragon:rinkeby --use-frame

3. Voting

Install voting

50 percent support requirement
5 percent approval quorum
1 week vote duration

dao install $dao voting --app-init-args $token 500000000000000000 50000000000000000 604800 --environment aragon:rinkeby --use-frame

Set the voting address environment variable

4. Voting and Token Manager permissions

Create permission for deployer to create votes

dao acl create $dao $voting CREATE_VOTES_ROLE $me $voting --environment aragon:rinkeby --use-frame

Set the permissions such so that voting is required to Issue, Assign, and Burn tokens. And the deployer and voting can Mint tokens

dao acl create $dao $tm MINT_ROLE $me $voting --environment aragon:rinkeby --use-frame  
dao acl grant $dao $tm MINT_ROLE $voting --environment aragon:rinkeby --use-frame
dao acl create $dao $tm ISSUE_ROLE $voting $voting --environment aragon:rinkeby --use-frame
dao acl create $dao $tm ASSIGN_ROLE $voting $voting --environment aragon:rinkeby --use-frame
dao acl create $dao $tm BURN_ROLE $voting $voting --environment aragon:rinkeby --use-frame

initialize the token manager, setting the token to transferrable and havung unlimited balances

dao exec $dao $tm initialize $token true 0 --environment aragon:rinkeby --use-frame

In the web client mint 1 token to deployer

5. Install agent and finance

Install agent to use as a vault

dao install $dao agent --environment aragon:rinkeby --use-frame

Set the Agent address environment variable

Install Finance

dao install $dao finance --app-init-args $vault 2592000 --environment aragon:rinkeby --use-frame

Set the address address environment variable

6. Agent and Finance permissions

Grant permission for finance to transfer assets from the vault

dao acl create $dao $vault TRANSFER_ROLE $finance $voting --environment aragon:rinkeby --use-frame

Grant voting permissions Create, Execute and Manage payment on the Finance app

dao acl create $dao $finance CREATE_PAYMENTS_ROLE $voting $voting --environment aragon:rinkeby --use-frame
dao acl create $dao $finance EXECUTE_PAYMENTS_ROLE $voting $voting --environment aragon:rinkeby --use-frame
dao acl create $dao $finance MANAGE_PAYMENTS_ROLE $voting $voting --environment aragon:rinkeby --use-frame

7. Address book

Install address book

dao install $dao address-book.aragonpm.eth --environment aragon:rinkeby --use-frame

Set Address Book address environment variable


Grant voting permissions to Add, Remove and Update entries in the Address book

dao acl create $dao $address_book ADD_ENTRY_ROLE $voting $voting  --environment aragon:rinkeby --use-frame 
dao acl create $dao $address_book REMOVE_ENTRY_ROLE $voting $voting --environment aragon:rinkeby --use-frame 
dao acl create $dao $address_book UPDATE_ENTRY_ROLE $voting $voting --environment aragon:rinkeby --use-frame 

8. Dot Voting

Install Dot Voting

50 percent support requirement
0 percent approval quorum
1 week vote duration

dao install $dao dot-voting.aragonpm.eth --app-init-args $token 500000000000000000 0 604800  --environment aragon:rinkeby --use-frame 

Set Dot Voting address environment variable


Grant Token Manager permissions to create votes and add candidates to Dot Voting

dao acl create $dao $dot_voting ROLE_CREATE_VOTES $tm $voting --environment aragon:rinkeby --use-frame 
dao acl create $dao $dot_voting ROLE_ADD_CANDIDATES $tm $voting --environment aragon:rinkeby --use-frame 

9. Allocations

Install Allocations

dao install $dao allocations.aragonpm.eth --app-init-args $vault 604800 --environment aragon:rinkeby --use-frame

Set Allocations address environment variable


Grant Voting permissions to create accounts and change budgets on Allocations

dao acl create $dao $allocations CREATE_ACCOUNT_ROLE $voting $voting --environment aragon:rinkeby --use-frame 
dao acl create $dao $allocations CHANGE_BUDGETS_ROLE $voting $voting --environment aragon:rinkeby --use-frame 

Grant Dot Voting permissions to create a new allocation

dao acl create $dao $allocations CREATE_ALLOCATION_ROLE $dot_voting $voting --environment aragon:rinkeby --use-frame 

Grant the Token Manager permissions to execute an Allocation

dao acl create $dao $allocations EXECUTE_ALLOCATION_ROLE $tm $voting --environment aragon:rinkeby --use-frame 

Grant Allocations permissions to transfer funds from the vault

dao acl grant $dao $vault TRANSFER_ROLE $allocations --environment aragon:rinkeby --use-frame

10. Admin Permissions

set variable for admin address


add entry to the address book

dao acl grant $dao $address_book ADD_ENTRY_ROLE $admin1  --environment aragon:rinkeby --use-frame 

11. Clean up permissions

set variable for ACL address


add voting as app manager

dao acl grant $dao $dao APP_MANAGER_ROLE $voting --environment aragon:rinkeby --use-frame

remove deployer account as app manager

dao acl revoke $dao $dao APP_MANAGER_ROLE $me --environment aragon:rinkeby --use-frame

set voting as the permission manager

dao acl set-manager $dao $dao APP_MANAGER_ROLE $voting --environment aragon:rinkeby --use-frame

add voting as permissions manager

dao acl grant $dao $acl CREATE_PERMISSIONS_ROLE $voting --environment aragon:rinkeby --use-frame

remove deployer account as permissions manager

dao acl revoke $dao $acl CREATE_PERMISSIONS_ROLE $me --environment aragon:rinkeby --use-frame

set voting as the permission manager

dao acl set-manager $dao $acl CREATE_PERMISSIONS_ROLE $voting --environment aragon:rinkeby --use-frame

allow token manager to create votes

dao acl grant $dao $voting CREATE_VOTES_ROLE $tm --environment aragon:rinkeby --use-frame

remove deployer permission to create votes

dao acl remove $dao $voting CREATE_VOTES_ROLE $me --environment aragon:rinkeby --use-frame

1 Like