🧪 An open-source SDK for building and experimenting with customizable governance mechanisms and capital allocation strategies. Built on Scaffold-ETH-2 and integrated with Allo Protocol v2.1, CiviKit makes it easier for developers to create, test, and deploy governance systems for DAOs and grant programs.
⚙️ Built using Scaffold-ETH-2, Allo Protocol, EAS (Ethereum Attestation Service), NextJS, RainbowKit, Hardhat, Wagmi, and Typescript.
[Mermaid diagram here - using the one we created]
-
🔄 Modular Governance Mechanisms: Mix and match different voting systems, reputation tracking, and capital allocation strategies
- Quadratic Voting & Tunable Quadratic Funding
- Conviction Voting
- Custom Allocation Strategies
- Token Gating
-
🏦 Capital Allocation Systems:
- Integration with Allo Protocol v2.1
- Cookie Jar mechanisms
- Direct funding systems
- Custom allocation strategies
-
📊 Reputation Systems:
- EAS integration for attestations
- Historical performance tracking
- Reputation-weighted governance
- Sybil resistance through Worldcoin
-
🔗 Integration Layer:
- Strategy Registry for mechanism discovery
- Mechanism Router for combining strategies
- DAO Factory for quick deployment
- Contract Hot Reload for rapid development
-
✅ Contract Hot Reload: Your frontend auto-adapts to your smart contract as you edit it.
-
🪝 Custom hooks: Collection of React hooks wrapper around wagmi to simplify interactions with smart contracts with typescript autocompletion.
-
🧱 Components: Collection of common web3 components to quickly build your frontend.
-
🔥 Burner Wallet & Local Faucet: Quickly test your application with a burner wallet and local faucet.
-
🔐 Integration with Wallet Providers: Connect to different wallet providers and interact with the Ethereum network.
Before you begin, you need to install the following tools:
- Node (>= v18.18)
- Yarn (v1 or v2+)
- Git
To get started with Scaffold-ETH 2, follow the steps below:
- Clone this repo & install dependencies
git clone https://github.com/scaffold-eth/scaffold-eth-2.git
cd scaffold-eth-2
yarn install
- Run a local network in the first terminal:
yarn chain
This command starts a local Ethereum network using Hardhat. The network runs on your local machine and can be used for testing and development. You can customize the network configuration in hardhat.config.ts
.
- On a second terminal, deploy the test contract:
yarn deploy
This command deploys a test smart contract to the local network. The contract is located in packages/hardhat/contracts
and can be modified to suit your needs. The yarn deploy
command uses the deploy script located in packages/hardhat/deploy
to deploy the contract to the network. You can also customize the deploy script.
- On a third terminal, start your NextJS app:
yarn start
Visit your app on: http://localhost:3000
. You can interact with your smart contract using the Debug Contracts
page. You can tweak the app config in packages/nextjs/scaffold.config.ts
.
What's next:
- Edit your smart contract
YourContract.sol
inpackages/hardhat/contracts
- Edit your frontend homepage at
packages/nextjs/app/page.tsx
. For guidance on routing and configuring pages/layouts checkout the Next.js documentation. - Edit your deployment scripts in
packages/hardhat/deploy
- Edit your smart contract test in:
packages/hardhat/test
. To run test useyarn hardhat:test
- You can add your Alchemy API Key in
scaffold.config.ts
if you want more reliability in your RPC requests.
Visit our docs to learn how to start building with Scaffold-ETH 2.
To know more about its features, check out our website.
We welcome contributions to Scaffold-ETH 2!
Please see CONTRIBUTING.MD for more information and guidelines for contributing to Scaffold-ETH 2.