Skip to content

Flexible DAO governance smart contracts, developed by Element Finance.

License

Notifications You must be signed in to change notification settings

sentilesdal/council

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Flexible DAO governance smart contracts, developed by Element Finance.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 66.3%
  • Solidity 33.4%
  • Other 0.3%