🤠 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
dao=<DAO_ADDRESS>
Create deployer environment variable
me=<DEPLOYER_ADDRESS>


2. Token

Create token

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

Create token environment variable
token=<TOKEN_ADDRESS>

Create token manager

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

Create Token Manager environment variable
tm=<TOKEN_MANAGER_ADDRESS>

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
voting=<VOTING_ADDRESS>


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
vault=<VAULT_ADDRESS>

Install Finance

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

Set the address address environment variable
finance=<FINANCE_ADDRESS>


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

address_book=<ADDRESS_BOOK_ADDRESS>

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

dot_voting=<DOT_VOTING_ADDRESS>

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

allocations=<ALLOCATIONS>

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

admin1=<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

acl=<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