Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature]: protocol funds #18374

Closed
tac0turtle opened this issue Nov 6, 2023 · 7 comments · Fixed by #18471
Closed

[Feature]: protocol funds #18374

tac0turtle opened this issue Nov 6, 2023 · 7 comments · Fixed by #18471

Comments

@tac0turtle
Copy link
Member

Summary

In #18103, we added a way for governance to payout community spends via a on chain stream system. This is a good way to avoid funds being moved out of the pool to a multisig with less oversight.

Now we would like to offer a way for application developers to define funds. A fund is a pool of money that is continually added via inflation/fees prior to being included in the community pool.

This is a useful feature for things, like marketing funds, developer funds, etc..

Problem Definition

There is no way to define long lived funds for developers or other groups that will be topped up over time.

Proposed Feature

Add a way to define funds at genesis, and a way to add new funds dynamically through governance.

This would include a simple genesis transaction to add the initial fund and distribution split.

the split could be 90% community pool 10% dev fund, but always must equate to 100%.

@facundomedica
Copy link
Member

Feature suggestion:
x/protocolpool should be able to hold multiple accounts. We should keep track of them and maybe even add a label and description. This would be in case the chain wants to have in a separate account funds destined for a specific thing (like developer grants and such).
See how Stride creates multiple module accounts: https://github.com/Stride-Labs/stride/blob/main/x/stakeibc/types/host_zone.go#L25

@julienrbrt
Copy link
Member

The proposed above feature seem to assume those funds will be controlled by a module.
You maybe want to continuously fund a normal address / multisig, so having a module account may be not handy.

@facundomedica
Copy link
Member

facundomedica commented Nov 17, 2023

The proposed above feature seem to assume those funds will be controlled by a module. You maybe want to continuously fund a normal address / multisig, so having a module account may be not handy.

Not sure if we are on the same page. What I meant is that the x/protocolpool could have separate bags for different purposes, so it doesn't change funds streaming and such.

A practical example would be that the Hub passes a proposal to create a "Developers grant fund", basically setting money aside for future grants in setting up a different account also controlled by x/protocolpool. So when a developer wants to get funding a proposal would be made to get a fund stream from the "Developers grant fund".

At the same time a proposal to stream X amount of ATOM from the Community pool to the "developers grant fund" would also be possible. So basically the Hub could set a budget on how much they desire to spend on dev grants.

EDIT: creating a new account doesn't necessarily means it would be funded, it will start with a balance of 0 and funded separately

@tac0turtle
Copy link
Member Author

the main overhead with protocol pool creating and owning the account is now it needs to have a way for users to interact with that account. For funds we can do things like multisigs or normal accounts that are set to be the address in which funds are added to. Similar to streaming. With accounts module, we could do something where the protocol pool creates an account, but then the proposal needs to know who the owner will be or the address interacting with the account.

I like the idea, worried about the complexity in adding permission control into protocol pool though. I think the permission control is something that is handled off chain. If someone spends all the money each month from a fund, then the community may ask why and where is the money going. If they are not happy with the answer they could cancel the fund.

Thinking through a few different flows so i could be wrong or missing some context here.

@likhita-809
Copy link
Contributor

I like the idea too, it offers more transparent fund tracking and accountability, but I believe its more complex just like @tac0turtle mentioned, and balancing this with community interactions and off-chain oversight is important. Any decision making mistakes might compromise the integrity of fund management

@robert-zaremba
Copy link
Collaborator

Why this can't be done by creating a Gov proposal to update the budget "map" defined in the original issue? #17267

@robert-zaremba
Copy link
Collaborator

If you are looking for a "second layer" streamer, then look at this:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 🥳 Done
5 participants