I was wondering if there was any ongoing work or plan in future releases to add the functionality to specify multiple recipients in a Community Pool Spend Proposal.
I think this would be a really useful addition, since currently Community Pool Spend Proposals must be targeted at one standalone wallet. Therefore, multiple Proposals need to be made per recipient account, which is a clunky and slow process and is not a good governance practice.
This could be utilised for competition winners for example. Say 5 Users win a specific chain competition or bug bounty then they could be paid from the Community Pool in one Proposal. Or alternatively, the Pool could be used to add incentives to multiple LPs in one Proposal. It would enable far more creativity in the way that the Pool is used, and would also increase relative decentralisation within projects, as funds being paid out by a governance vote is far better practice, than a core team managing community funds in this way.
Keen to hear your thoughts and if this is something already being discussed
That’s a neat idea! I have some thoughts on things that could be relevant.
The Cosmos Hub Roadmap articulates a high-level plan for the development of the Hub. The next software upgrade (scheduled for Q2 2022) is v8-Rho and includes the following:
Gov Module Improvements
- Execution of arbitraty [sic] transactions instead of just governance proposals.
- Enables much more expressive governance module.
Executing arbitrary transactions would let proposal makers have more flexibility instead of being constrained to following the format of Signaling || Community Spend || Parameter Change || etc. Because this development is still a ways out I don’t think we have access to definitive answers but I’d be curious if you’d be able to bundle a group of transactions into a single proposal so that you could ask for a governance vote to approve a group of transactions from the Community Pool to a set of recipients.
There is also an upcoming Signaling proposal to evaluate the community’s stance on whether CosmWasm should be included in the Rho upgrade. That proposal text and discussion is on the forum here. If the Hub were able to host governance-gated smart contracts using CosmWasm I wonder if it would be possible to execute a smart contract that receives tokens from the Community Pool and then automatically distributes them to a predefined set of recipients.
I am not a developer so I don’t have answers to these curiosities. I’d be really interested in hearing from a core developer on this topics though.
That’s exactly right @lexa ! the new gov module allows execution of messages instead of just proposals. It also allows these messages to be bundled so essentially a group of proposals can be voted on as a group and executed atomically. Instead of a spend proposal with multiple recipients, you’d have multiple bank send messages to various recipients that would be voted on as a group and send out individually.
Similarly you’re correct that a smart contract in WASM could be used to facilitate more complex logic if the new gov module isn’t able to capture what is being attempted.
Thanks @okwme, this sounds really good and certainly will cover my question! Will governance-gated CosmWasm also be able to create proposals that execute on a regular basis? For example, would one proposal be able to specify that a particular transaction is executed on a monthly rolling basis?
Yes and no. Transactions need gas so they can’t be entirely self-executing without the funds pay for chain resources. There is also no contract scheduling mechanism built in by default. Both of these can be added via a “keeper” pattern (essentially a timelock bounty for execution), or if one of these functions was valuable enough it could be added to the validator responsibilities by including it in the node software. The budget module which is on the table for inclusion in a future upgrade does something similar for payments.
Alternatively, the fee grant module already available in the current Cosmos Hub can be used to allow recipients the rights to withdraw a certain amount of funds per some interval.