All Projects → decentraland → governance

decentraland / governance

Licence: other
🏢 Frontend for governance of the Decentraland DAO

Programming Languages

typescript
32286 projects
CSS
56736 projects

Projects that are alternatives of or similar to governance

dao
Documentation for Liker Land and LikeCoin.
Stars: ✭ 20 (-33.33%)
Mutual labels:  dao
unity-renderer
Unity implementation of Decentraland Client
Stars: ✭ 104 (+246.67%)
Mutual labels:  decentraland
daoos
A group of tools for anyone to be able to create their own decentralised organisation on Bitcoin. 🟩
Stars: ✭ 28 (-6.67%)
Mutual labels:  dao
homebase-app
Homebase is a web application that enables users to create and manage/use DAOs on the Tezos blockchain.
Stars: ✭ 42 (+40%)
Mutual labels:  dao
fastquery
FastQuery(Method of fast database query) 基于Java语言. 他的使命是:简化Java操作数据层.做为一个开发者,仅仅只需要设计编写DAO接口即可,在项目初始化阶段采用ASM生成好实现类. 因此,开发代码不得不简洁而优雅.从而,大幅度提升开发效率.
Stars: ✭ 63 (+110%)
Mutual labels:  dao
Credits
Credits(CRDS) - An Evolving Currency For An Evolving Society
Stars: ✭ 14 (-53.33%)
Mutual labels:  dao
Smart-Net-Data-Accessor
2-way/outside SQL build-time data accessor generator library.
Stars: ✭ 22 (-26.67%)
Mutual labels:  dao
crypto-books
Best of Crypto Books - A collection of books, white papers & more about crypto and blockchains.
Stars: ✭ 40 (+33.33%)
Mutual labels:  dao
defi-dapps-solidity-smart-contracts
This is a Web 3 Smart Contract learning and teaching repo which will be used to teach students all across Pakistan.
Stars: ✭ 241 (+703.33%)
Mutual labels:  dao
jdbcTemplatePlus
基于SpringJdbcTemplate的ORM框架,比Mybatis更方便,更简单,仅需定义Model就可支持各种SQL查询和动态SQL,不再用拼写XML文件和SQL语句,可以通过各种注解式插件扩展,目前主要支持Mysql数据库
Stars: ✭ 25 (-16.67%)
Mutual labels:  dao
sprest
Sprest is a collection of libaries to make building REST services simpler using Spray.
Stars: ✭ 47 (+56.67%)
Mutual labels:  dao
web3together
🗣 Public open-ended discussions about Blockchain, Web3, NFTs, DeFi, ...
Stars: ✭ 58 (+93.33%)
Mutual labels:  dao
QuickDAO
Simple Data Access Object library with LinQ and multiengine support for (Windows,Linux,OSX/IOS/Android) and freepascal (Windows/Linux)
Stars: ✭ 49 (+63.33%)
Mutual labels:  dao
metaverse-development
Certified Web3 and Metaverse Developer Syllabus and Details by Panaverse
Stars: ✭ 195 (+550%)
Mutual labels:  decentraland
doctrine-active-record
Object-oriented CRUD (create, read, update, delete) for Doctrine DBAL
Stars: ✭ 25 (-16.67%)
Mutual labels:  dao
crypto-against-humanity
Crypto Against Humanity - The never ending global game of shame.
Stars: ✭ 23 (-23.33%)
Mutual labels:  decentraland
aragraph
Visualize your Aragon DAO Templates
Stars: ✭ 29 (-3.33%)
Mutual labels:  dao
SmartDev-Scaffold
应用开发脚手架,可基于智能合约文件,一键生成区块链应用的代码
Stars: ✭ 22 (-26.67%)
Mutual labels:  dao
sputnik-dao-contract
Smart contracts for https://app.astrodao.com
Stars: ✭ 81 (+170%)
Mutual labels:  dao
Block-Farm
A farming game built upon Ethereum platform.
Stars: ✭ 60 (+100%)
Mutual labels:  dao

Decentraland

Decentralized Autonomous Organization

The governance hub for Decentraland. Create and vote on proposals that help shape the future of the metaverse.

Screenshot of the governance hub for Decentraland homepage

Setup

Before you start make sure you have installed:

Node version

use node >= 16

If you are starting from scratch and you don't have Node installed in your computer, we recommend using a Node version manager like nvm to install Node.js and npm instead of the Node installer.

nvm install node will install the latest version of node and npm.

NOTE

If you are using WSL (Windows Subsystem for Linux) as your development environment, clone the repository into the WSL filesystem. If you clone it inside the Windows filesystem, the project will not work.

environment setup

create a copy of .env.example and name it as .env.development

  cp .env.example .env.development

to know more about this file see the documentation

if you are running this project locally you only need to check the following environment variables:

  • CONNECTION_STRING: make sure it is point to a valid database
  • COMMITTEE_ADDRESSES: list of eth addresses separated by , that will be able to enact finished proposals
  • GATSBY_SNAPSHOT_SPACE: a snapshot space where the proposal will be published
  • SNAPSHOT_PRIVATE_KEY, GATSBY_SNAPSHOT_ADDRESS: a pair address/key with permissions to publish at that snapshot space
  • DISCOURSE_API_KEY: the api key use to publish the proposals on the forum
  • ALCHEMY_API_KEY: an alchemy api key to check the voting power

setup the required voting power to pass

The minimum amount of voting power require to pass a proposal of each type it's defined in these variables, if they are not defined or are not numbers 0 will be used instead

  GATSBY_VOTING_POWER_TO_PASS_LINKED_WEARABLES=0
  GATSBY_VOTING_POWER_TO_PASS_GRANT=0
  GATSBY_VOTING_POWER_TO_PASS_CATALYST=0
  GATSBY_VOTING_POWER_TO_PASS_BAN_NAME=0
  GATSBY_VOTING_POWER_TO_PASS_POI=0
  GATSBY_VOTING_POWER_TO_PASS_POLL=0

database setup

check if you have postgres installed

brew list

if you don't, install it (don't forget to brew update)

brew install postgres

start postgresql

brew services start postgresql

you can run this to check if everything is ok

createdb `whoami` 

inside psql run create database snapshot

use your user:pwd for the connection string, it should look like this:

postgres://usr:pwd@localhost:5432/snapshot

If you installed postgres using brew, you might need to create a role for npm to run the migrations To do so, run this in psql

CREATE USER postgres SUPERUSER;

once you have a CONNECTION_STRING you can setup you database tables using the following command

npm run migrate up

if migrations are not running, or get stuck, please check that you are using node v12

Run Tests

to run the tests you can do

npm test

or create a run configuration in your IDE with jest --no-cache --no-watchman --runInBand

Also, you can try adding the --verbose option.

The --runInBand parameter runs the tests in a single thread, which is usually faster, but you can try without it and see what works best for you.

Run

once you setup this project you can start it using the following command

  npm start

Note 1: this project run over https, if it is your first time you might need to run it with sudo

Note 2: you can disabled https removing the --https flag in the develop script of your package.json

the app should be running at https://localhost:8000/

Clear

To clear cache and update localization and internationalization renders, run

rm -r .cache

Project's structure

You can find a full documentation about the project's structure in the decentraland-gatsby repository

back and front ends

this project runs gatsby as front-end and a nodejs server as back-end both connected through a proxy

routes

front-end routes are defined using gatsby routes + gatsby-plugin-intl, you can find each page in the src/pages directory

back-end routes are defined using express you can find each route in src/entities/{Entity}/routes.ts and those are imported ar src/server.ts

Types and Utils

Types and Utils contain functions and types that will be accessible to both the backend and the frontend.

Be careful with what goes in here, because when webpack tries to compile everything for the frontend it won't have all the backend dependencies, which could result in an error (e.g. ERROR #98123 WEBPACK)

About proposals statuses

  • Proposals are created in pending, and automatically passed to active
  • After a voting period of 1 week, they are automatically marked as finished, passed, or rejected, depending on the kind of proposal and of the voting results.
  • If proposal is in finished status, a committee user can pass/reject it, with a comment.
  • Once passed, a proposal can be enacted by a committee user, with a comment.

About voting results

  • Voting results are calculated in two different ways, for different purposes:
    • Votes/utils.ts calculates the results in a user-friendly way, so they can be displayed in the frontend. These results are rounded up for clarity.
    • Proposal/jobs.ts has a more exact calculation, and is used to evaluate the real result of the voting

Copyright & License

This repository is protected with a standard Apache 2 license. See the terms and conditions in the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].