Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

DAO-Analyzer

It is a tool to visualize DAO metrics. Currently, it shows DAO from DAOstack, DAOhaus, and Aragon. Web site: http://dao-analyzer.science/

Set-up & Running

You can either install it on your local machine, or if you prefer it, you can use the official docker image.

If you only want to retrieve the data used by our application, you can follow this guide instead

The easiest method by far to download and run the application is to use pip to install it

pip install dao-analyzer

Then, you can run the app using the command daoa-server

Download

Enter in your terminal (git must be installed) and write down:

git clone https://github.com/Grasia/dao-analyzer

After that, move to repository root directory with:

cd dao-analyzer

Environment variables

To be able to access all the features of dao-analyzer, you can specify the following environment variables:

# The CrytptoCompare API key to be used to get token prices
DAOA_CC_API_KEY = "your_api_key"

Installation

All code has been tested on Linux, but it should work on Windows and macOS, 'cause it just uses the python environment.

So, you must install the following dependencies to run the tool:

  • python3 (3.10 or later)
  • python3-pip

Now, install the Python dependencies:

pip3 install -r requirements.txt

If you don't want to share Python dependencies among other projects, you should use a virtual environment, such as virtualenv.

How to run it?

Before launching the app, you have to run the following script in order to enable the cache stored in datawarehouse:

python3 -m cache_scripts

After a few minutes, you can now run the app with:

python3 index.py

Now, visit http://127.0.0.1:8050 or the address given in the program output with your web browser.

Using Docker

If you use Docker, you can just use the images at grasia/dao-analyzer. The tags with the -cached suffix have a pre-populated data warehouse (this means the image uses more space, but takes less time to load). To use it, just run the command:

docker run --name dao-analyzer -it -p80:80 grasia/dao-analyzer:latest

or

docker run --name dao-analyzer -it -p80:80 grasia/dao-analyzer:latest-cached

dao-analyzer is the container name, you can put whatever you want, but remember to change it also on the following command

Now, you can update the datawarehouse using:

docker exec -it dao-analyzer python -m cache_scripts

You can even add it to your system as a cron job to update it daily, weekly, etc...

Technical details

Architecture

There is available a class diagram of the DAOstack app, the DAOhaus app, and the Aragon app.

Debugging

This app uses flask, so you can use the FLASK_ENV variable, which also enables debug mode (among other things) when set to development.

export FLASK_ENV=development

How to test it?

Run all tests with:

pytest

or

python3 -m pytest test/

Flags for hypothesis testing

Use this flag --hypothesis-show-statistics to show statistics.

Use the flag --hypothesis-seed=<int> to set a fixed seed, it's useful to reproduce a failure.

Deploy

In order to fully deploy the app, use the deploy.sh script, which installs all the Python dependencies, updates the datawarehouse, and runs the web-app with gunicorn, using the gunicorn_config.py file.

Matomo integration

To enable Matomo integration, you just have to pass the following environment variables like this:

DAOA_MATOMO_URL = "https://matomo.example.com"
DAOA_MATOMO_SITE_ID = 1

You can check if the integration is working visiting the page and then your dashboard. The integration uses Javascript, so if there are any errors, you should be able to see them using "Inspect view" in your browser.

Publications

  • Youssef Faqir-Rhazoui, Javier Arroyo and Samer Hassan (2021). "A comparative analysis of the platforms for decentralized autonomous organizations in the Ethereum blockchain." Journal of Internet Services and Applications volume 12, Article number: 9.

  • Youssef Faqir-Rhazoui, Miller Janny Ariza-Garzón, Javier Arroyo and Samer Hassan (2021). "Effect of the Gas Price Surges on User Activity in the DAOs of the Ethereum Blockchain." Extended Abstracts of the 2021 CHI Conference on Human Factors in Computing Systems, Article No.: 407, Pages 1–7.

  • Youssef Faqir-Rhazoui, Javier Arroyo, and Samer Hassan (2021). "A Scalable Voting System: Validation of Holographic Consensus in DAOstack." Proceedings of the 54th Hawaii International Conference on System Sciences, 5557-5566.

  • Youssef Faqir-Rhazoui, Javier Arroyo, and Samer Hassan. (2020). An overview of Decentralized Autonomous Organizations on the blockchain. Proceedings of the 16th International Symposium on Open Collaboration (Opensym 2020) 11:1-11:8. ACM.

Acknowledgements

This work is funded by the Spanish Ministry of Science and Innovation and the P2P Models project, which is funded by the European Research Council.

Metadata

Release files for dao-analyzer 0.8.3.dev139

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dao-analyzer 0.8.3.dev139
File Size Uploaded
dao-analyzer-0.8.3.dev139.tar.gz 1.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for dao-analyzer 0.8.3.dev139
File Interpreter ABI Platform
dao_analyzer-0.8.3.dev139-py3-none-any.whl Python 3 none any Details

Total release size: 1.8 MB

Release files / dao-analyzer-0.8.3.dev139.tar.gz

Download URL dao-analyzer-0.8.3.dev139.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
73d5a0c17112c5302872148e220071417499658a7e6ecdd55073d597d649aef1
BLAKE2b-256 checksum
How to use checksums
0b22e46ed499173e50f2505eeb55eccb3dd1504afd97ee5daef964cf01fa7e0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / dao_analyzer-0.8.3.dev139-py3-none-any.whl

Download URL dao_analyzer-0.8.3.dev139-py3-none-any.whl
Size 440.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
213ae2a1f5b68ff8ceb9b6374b7de482ed2ec340eb6edd30f7d9d6fdabb0207d
BLAKE2b-256 checksum
How to use checksums
e7b138abe8558f062f25940164143027d7674f5167f231abdcc572b663c00de3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release history Release notifications | RSS feed

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

This release

0.8.3.dev139 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page