Role-based governance for on-chain organisations
Solidity protocol ·
Proof of Concept (Arbiscan) ·
Proof of Concept (live Demo) ·
Documentation
Table of Contents
Powers restricts governance processes along access roles. It allows a single decision to travel along multiple stakeholders through modular, asynchronous and trustless governance paths before it is executed.
Powers enables three key governance patterns that solve common DAO challenges:
🔐 Grant Management: Create accountable grant programs where different roles can allocate different funds, and decisions are logged and can be challenged. All funds remain in the community treasury, and grant programs can be revoked if they don't achieve intended impact.
⚖️ Separated Powers: Distribute decision-making across multiple roles to prevent centralization. One role can propose actions, another can veto, and a third can execute - creating checks and balances similar to legislative, judicial, and executive branches.
🔄 DAO Upgrades: Upgrade existing DAOs gradually without abandoning established governance. Start with minimal assets in Powers, add new roles and tasks, and transition completely when confidence grows - all while maintaining the existing DAO as a role holder.
-
Install Foundry - Required for smart contract development
curl -L https://foundry.paradigm.xyz | bash foundryup
-
Install Node.js dependencies
yarn install cd frontend && yarn install
-
Clone and setup the repository
git clone https://github.com/7Cedars/powers.git cd powers
-
Start Anvil chain (local Ethereum development chain)
anvil
Note: For detailed Anvil configuration and usage, see the Foundry documentation
-
Deploy contracts and mocks
cd solidity make anvilDeployAll
This deploys all laws and mock contracts to your local Anvil chain.
-
Start the frontend application
cd frontend yarn dev
-
Access the application
- Open your browser and navigate to
http://localhost:3000
- Select "Anvil" from the chain dropdown
- Additional test organizations will be available for local development
- Open your browser and navigate to
For detailed information on creating your own laws and organizations, please refer to the GitBook documentation:
.
├── frontend/ # Next.js dApp workspace
│ ├── app/ # Next.js app router pages and components
│ ├── components/ # Reusable React components
│ ├── context/ # React context providers and contract ABIs
│ ├── hooks/ # Custom React hooks
│ ├── public/ # Static assets for the dApp
│ ├── utils/ # Utility functions
│ └── README.md # Frontend setup and development guide
│
├── solidity/ # Smart contract development
│ ├── src/ # Solidity contracts and interfaces
│ ├── test/ # Foundry test files
│ ├── script/ # Deployment scripts
│ ├── broadcast/ # Deployment artifacts
│ └── README.md # Solidity development guide
│
├── gitbook/ # Documentation
│ ├── for-developers/ # Developer documentation
│ ├── example-laws/ # Example law implementations
│ ├── deployed-laws/ # Deployed law documentation
│ ├── integrations/ # Integration guides
│ └── README.md # Documentation overview
│
├── public/ # Project images and assets
│
├── package.json # Root package configuration
└── README.md # This file
- Solidity 0.8.26
- Foundry 0.2.0
- OpenZeppelin 5.0.2
- React 18
- NextJS 14
- Tailwind css
- Wagmi / viem
- Privy.io
- Arnold Almeida
- James M
- Paulo Fonseca
- Andrei V
- Arbitrum DAO
- RnDAO
Distributed under the MIT License. See LICENSE.txt
for more information.
We welcome contributions from the community! Please see our Contributing Guidelines for details on how to:
- Report bugs
- Request features
- Submit pull requests
- Follow our coding standards
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes and add tests
- Commit your changes:
git commit -m 'feat: add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
For more detailed information, please read our Contributing Guidelines.
Seven Cedars - Github profile - cedars7@proton.me