Updated 462 days ago

Permissionless Interchain DAOs

DAOs that aggregate Community pools to fund common public goods permissionlessly

  • Crypto / Web3
  • CosmosHub
  • Osmosis
  • DAO / Community
  • Crosschain Infrastructure
  • DeGov
  • App Chain
  • Neutron
  1. Demo video and presentation slides: https://drive.google.com/drive/folders/1ACEEaKIggVt1fGR1CNp1ItBE3mABq0FJ?usp=sharing
  2. Contracts source: https://github.com/kubiklabs/gov-aggregator-contracts
  3. Interface source: https://github.com/kubiklabs/gov-aggregator-interface
  4. Live Interface: https://gov-aggregator-interface.vercel.app/

Problem

This project aims to solve the problem of funding public goods in a multi-chain ecosystem. In Cosmos, there are multiple chains with their own independent treasury (Community pool) which can be used for public goods funding permissionlessly. However, this same cannot be done permissionlessly and fully on-chain if the grant requires a portion of fund from chainA, a portion from chainB and another from chainC.

As an example, if there is a team building a Comos-sdk module that is quite useful to a DEX chain, for example, Osmois, Kujira, Crescent can utilize this module in their chain, then the team can create a proposal on a DAO which makes CommunityPoolSpend proposal on each of these chains simultaneously and the team is funded by all 3 chains with the team just creating a single governance proposal with amount of all 3 assets (X OSMO, Y KUJI, Z CRE) and the DAO itself handles the creation of CommunityPool spend proposal, getting funds from that chain to the proposer team and even allowing the stakers of each of these 3 chains on the proposal by reusing the voting power from staked OSMO, KUJI and CRE.

Another example could be, a team building a CosmWasm tooling and all the chains having CosmWasm support (10+ within Cosmos) interested in this tooling would love to fund part of the amount. So, the team will propose on a DAO having Neutron, Juno, Osmosis, Archway community pools connected. The DAO upon creating a proposal by the team, will get funds from the respective community pools and will distribute to the team.

Solution overview

The DAO is implemented using CosmWasm smart contracts and consists of 5 parts:

  1. DAO Core: Stitches all parts of DAO together and tracks the % split of each chain in the DAO
  2. Proposal module: Helps create proposals with ICA messages embedded by default
  3. Voting module: Helps in voting for proposal using staked assets on remote chains
  4. ICA helper: Does the ICA transactions on remote chains and IBC transfers
  5. ICQ helper: Does interchain queries on remote chains for staked assets, balances and unstaking/staking events

Note: For in-depth project architecture and the flow of contracts, please refer to the contracts repository here at https://github.com/kubiklabs/gov-aggregator-contracts

Key features

In summary, the interchain DAO does following:

  1. Create CommunityPoolSpend proposals on any chain from Neutron using smart contracts and ICA over IBC
  2. Keep track of voting power of staked asset on any chain and report to Neutron, so that stakers of that chain can vote in this DAO withoout doing anything extra
  3. Transfer funds between DAO and remote chains over IBC

How we implemented

  1. The work uses DAO-DAO contracts as starting point
  2. Proposal module was modified to accomodate creating of ICA proposals
  3. Voting module was modified to accomodate tracking staked asset on remote chain as voting power
  4. DAO core module was modified to store split of multiple chains
  5. ICA helper was created, that does the CommunityPoolSpend proposal, IBC asset transfers
  6. ICQ helper was created, that does the interchain queries for voting power, asset balances and staking/unstaking events

Future work

  1. Allow funds to be vested and based upon deliverables
  2. Allow Community pools to opt-out of a specific proposal
  3. Chains to have Veto power in voting