Giter Club home page Giter Club logo

council's Introduction

Council

Build Status Coverage Status License

Council is a decentralized governance system that allows a community to manage a DAO. The governance system is designed to enable flexibility, improvements, and experimentation while successfully maintaining the security and robustness of the governed protocol.

Council is inspired by and extends several forerunners in the DAO governance space including MakerDAO's governance model and the Compound Governor contracts. Like these systems, it is a fully on-chain voting architecture that coordinates the process of making permissioned smart contract calls from privileged addresses.

Council contains several architectural choices which make it a distinct new primitive in the decentralized governance space:

  • Council does not have a single security threshold to make a call, instead, various actions can be given different security threshold requirements.
  • Council abstracts the vote allocation process for assigning voting power away from the actual voting process meaning that multiple complex vote allocation systems can run in parallel in the contracts.
  • By default, Council ships with a Governance Steering Council (GSC) enabled which can be assigned different powers than the core voting system. Together, these features allow a wide range of voting processes and security procedures can be seamlessly integrated into one governance system.

Bug Reporting

For both non-security-critical bugs and security-related critical bugs please follow the rules and instructions highlighted in the Element Finance Bug Bounty program on the Immunefi platform.

Contributing to Council

Council is a community-driven governance protocol and there are many ways to contribute to it. We encourage you to jump in and improve and use this code whether that be contributing to Council directly, forking the governance framework for your own use, or just taking bits and pieces from it. We want everyone to build with us!

If you have a suggestion for a new feature, extension, or cool use case and want to help the community, drop by the #developers channel in our discord to discuss and you will have a warm welcome!

When contributing, please be sure to follow our contribution guidelines when proposing any new code. Lastly, because Council is a community-driven governance protocol, any new code contributions are more likely to be accepted into future deployments of the protocol if they have been openly discussed within the community first.

For a technical overview of Council's smart contracts, please read our documentation here.

Architecture Overview Diagram

image

Build and Testing

1. Getting Started (Prerequisites)

2. Setup

git clone [email protected]:element-fi/council.git
cd council
npm install

3. Build

npm run build

4. Test

npm run test

Contributing

Council is a community-driven protocol and there are many ways to contribute to it. We encourage anyone to use this as their protocol or DAOs governance system. If you are interested in building on top of it, improving the code, please do!

Support

If you have any questions, feedback, ideas for improvement, or even further experiments to test out with Council, come join our #governance discord channel to talk more about this!

Proposals

To submit the proposals you'll need to do the following steps:

Setup Repository

  1. Follow steps 1-3 to setup and buid this repo.

Setup Environment

  1. Next, you'll need make a new file .env and copy the contents of .env.sample to .env
  2. Add the private key for the wallet you'd like the create a proposal with.
  3. Add the Alchemy key to connect to the provider.

Deploying the proposals on-chain

There are two scripts to create proposals egp-22 and egp-23. There are located at:

  scripts/egp22/createProposal.sh
  scripts/egp23/createProposal.sh

They are currently set to run on a local hardhat as a safeguard. In each file, change

  # this
  NETWORK=hardhat
  # to this
  NETWORK=mainnet

Then, simple run the bash script:

  ./scripts/epg22/createProposal.sh

council's People

Contributors

sentilesdal avatar aleph-v avatar nicholasdotsol avatar cpstl avatar jrhea avatar smmackey avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.