The ANS DAO is a Decentralized Autonomous Organization on the Algorand network that governs the Algorand Name Service treasury and name policy.
The smart contracts in this repo have been forked from Algobuilder's DAO template.
Voting power is TBD and is currently defined by ASA holding (1 ASA = 1 voting power): each token holder is a DAO member and can participate equally in the governance.
-
deposit
— 200k $ANS — deposit amount in$ANS
required to make a proposal -
min_support
— 20k $ANS — a minimum number ofyes
power votes (other votes likeabstain
andno
are not counted) to validate the proposal -
min_duration
— 7 days — minimum voting time (in number of seconds) for a new proposal -
max_duration
— 10 days — maximum voting time (in number of seconds) for a new proposal -
url
— ANS Governance Docs — a link with more information about the DAO
- Only 1 proposal of any type can be active at once
- Cooldown period is applied equaling half the duration of previous vote
-
Social:
This type of proposal calls for an action off-chain that can be executed by the team of directors. This type of proposal does not mobilize any funds from treasury nor does it make a change to the registry smart contract.The social proposal requires the following basic parameters common to all proposals:
- duration (in number of blocks): to determine the duration of the vote
- url (of the proposal): discourse or GitHub url to the proposal
Upon completion of vote, the
social
proposal does not perform any action. The vote results are recorded for posterity and the staked tokens are returned to the owner. -
Funding:
This type of proposal mobilizes funds from the treasury.The following additional input parameters are required:
- recipient_address (Algorand account in string): Valid Algorand address of recipient
- amount_algos (number of $ALGO requested): Amount requested in ALGOs
- amount_ans (number of $ANS requested): Amount requested in ANS tokens
The following conditions apply:
- Only 20% of registry treasury ($ALGO) can be requested at once
- Only 20% of ANS token treasury ($ANS) can be requested at once
This proposal will perform the following additional actions if it passes:
- Withdraw ALGOs from the registry treasury and deposit it into recipent's address
- Deposit ANS tokens from DAO treasury into the recipient's address
-
Update Registry:
This type of proposal calls for a change in the registry smart contract or for an action from the current directors. This proposal does not mobilize funds.The following additional parameters are required for the Update Registry proposal:
- registry_app_id (integer): Must be valid APP_ID of the name registry
- approval_program (bytecode): registry's updated approval program
- app_args (string list): the application arguments corresponding to the approval program and registry's update method
This proposal will prepare and execute InnerTransaction that calls the registry smart contract's update method.
Install required python packages
pip3 install -r requirements.txt
Run tests
cd tests
python3 ans_dao_helper.py