CPS: Exploring Solutions for Stable and Reliable Grant Payments

Hey guys! I have not been as active in the community / governance news and plans unfortunately, so I may have missed the discussion on this (I apologize in advance to the Iconists that probably already participated in it), but may I please confirm the reasoning behind the CPS Grants being calculated in ICX value, instead of USD value as the Foundation Grants were?

While I understand the easier implementation of an ICX based Grant system, I do believe that it has some major pitfalls that an USD (or stable coin) based ones would not have. I will try to voice a few of the ones that I can think of to the best of my abilities:

  1. We are expecting teams to have solid business plans and efficient resource and cost planning but in return we are providing unstable funding. In example if we had a project approved for $6k funding six months ago (1000$ per month), here is what they would have received:
  • month 1 = $683
  • month 2 = $550
  • month 3 = $750
  • month 4 = $766
  • month 5 = $1200
  • month 6 = $2333

If we are expecting professional teams to participate in the CPS, we cannot expect that they will agree to limit their spending to ‘wherever the ICX price goes’. We are expecting them to give us the exact costs that they will spend on hiring professionals and services, we cannot expect them to work with half their resources as that is an easier way to set our system

  1. I understand that there are options to request extra funding in case of price changes. Thats a an odd system in my opinion as there is almost a 0 chance that the price of ICX will be the same as it was a month ago - if anyone doubts this, look at the price movement for a random month on the charts.

That means that although the respective project’s funding was approved, there will be several possible situations:

  • the price goes down each month and the team has to reapply for approval of the same project in order to receive the funding that they were already approved for. In case that they dont get approved for a specific month due to not enough ICX in our ‘bank’ they will have to either cut their hired employees’ salaries or pause/quit the project.

Respectively that is a huge risk for any sponsor as if I personally know that the project’s funding for each month depends on the ICX price volatility, I would never sponsor a project, especially for a team that is unknown (as if they dont get funded properly for an already approved project for a certain month, they will probably not waste their time with us anymore as that is extremely unporfessional), no matter how great their potential project is

  • the price goes up and we are overfunding the projects. So in this case we have to either waste the preps’ time to vote on re-adjusting the funding for each project each month (when this can easily be automated in the smart contract) or waste the ICX value by overspending the inflation generated ICX just because its easier for us to set such system

  • as the project managers would not like to be stuck without funding, they will begin to overinflate the project costs to be on the safe side. Once again a waste of the inflation just because setting up such system is easier for us


Half of you guys have banking/finance backgrounds so Im sure that you know about all those issues (and probably a lot more). I do understand that an ICX based system is easier to manage, however if we would like to have solid projects (and not only ones that are done by veteran preps that are willing to take a risk with their funding), we have to re-adjust it in the way that a proper business would work

You probably could come up with much better solutions to this than me, but I would like to start off the conversation by offering one, instead of just listing issues. In my opinion this could work:

We set up an ICX based stable coin pinned to the USD value (e.g. ICX_USD) and use it to evaluate the pre-approved project’s monthly funding. The limit for CPS funding for any specific month is a fixed value in ICX_USD (e.g. 200 000 ICX_USD).

We set the monthly ICX_USD funding amount so it has no correlation with the past months (so if projects for 200 000 ICX_USD were approved jor January, for February you still have 200 000 ICX_USD to fund projects with). That value should be lower than what we have originally planned as total CPS funding as you will have the simultaneous funding of the past few months going on at the same time and as price volatility could cause the ICX spent to be more. It should also be re-adjustable via a prep vote

This should not be very hard to implement/change in the current system as well as after the ICX_USD coin is created, the ICX values in the CPS smart contract could be replaced with ICX_USD and we will need a monthly reset to the default monthly CPS funding

1 Like

Hey @nblaze thanks for sharing your concerns. The CPS is funded from block rewards. New ICX is minted then sent directly to the CPS by the network itself (tho right now ICON just sends their own block rewards to the CPS until ICON 2.0 is live).

As you know, block rewards are in ICX, so the base currency of the CPS is ICX which is why CPS grants are paid in ICX. I get you want to use a stablecoin as the funding for the CPS, but I don’t see how that would work or where you are proposing the stablecoins come from. I get the budget change request is not an ideal solution, but I do believe it will function as intended.

Good concerns from @nblaze

Could we use USD values to evaluate grant opportunities, but ICX as a funding and payment mechanism?

Then the platform or contract run quick calculations every month to distribute a different amount of ICX based on the ICX/USD value? Maybe using Bandchain oracle? A bit like how Foundation Grants’ payments are run and calculated, but more decentralized in the case of the CPS.

Taking the example above, with EOM close prices, somebody asking for $1,000 per month would then get:

  • month 1 = $1,000 – 2,326 ICX
  • month 2 = $1,000 – 3,125 ICX
  • month 3 = $1,000 – 2,439 ICX
  • month 4 = $1,000 – 2,128 ICX
  • month 5 = $1,000 – 1,316 ICX
  • month 6 = $1,000 – 649 ICX
1 Like

Hey @Benny_Options maybe I did not explain what I meant correctly. My suggestion was not to fund the CPS Grants with a stablecoin but to use an ICX based stable coin, that is fixed to the USD value in order to evaluate how much ICX should be minted and given to each team on a monthly basis (practically pegging the limit to the funding for each month to a specific USD value and have each month’s approved projects to be funded independently from the other months’ budget). The same effect could be achieved by introducing a variable or even with a direct USD link to BAND as @Edouard_Stakin suggested.

With my very limited coding experience I just thought that instead of changing the whole smart contract, it could be easier for us to set up a stablecoin, replace the ICX rewards with ICX_USD rewards in the smart contract and let it take care of the monthly budget fluctuations.

I understand that the main concern that you have is the monthly budget but I believe that we could easy set up the monthly limit to this stablecoin/variable/USD value and as it resets on a monthly basis, we will have a slightly fluctuating budget but I believe that it would be a much more stable system for the contributors to the system. We could still amend the size of the budget with an on-chain vote if needed

Imho the individual project budget change requests by themselves would not be a sole solution to the problems stated above as:

  • if we have 20 or 30 projects currently funded on the chain, that would mean that all registered preps will have to make a monthly on-chain votes for each of them to approve funding values that were already approved in the beginning of the project. That is a huge waste of time for a lot of people for something that could easily be automated
  • as the CPS budget’s limit is set on ICX basis, if the price of ICX drops by 50%, that would mean that half of the ongoing projects will not be funded. So that means that we either underfund by a huge amount all projects and risk losing them all (and the preps sponsoring them also lose money) or we subjectively choose which projects are better then the others and by vote completely remove the funding for half of them. In both cases thats a huge burden on the voting preps, sponsors and a major red flag for any team submitting a proposal (how can you make arrangements and hire people when you dont know whether your already approved project will not get defunded next month)
  • the project members will have to submit a funding request each month for something that was already approved. that would be an exteremely frustrating system to go through (even if we find a way to fund them all) and imho it would make us look a bit like we dont know what we are doing if we are counting on a workaround to make a simple funding system work
1 Like

@nblaze @Edouard_Stakin thanks for the suggestions and overall I’d like to make it clear that I agree we need a better solution than the budget adjustment request.

@nblaze I’m sorry but unfortunately I still don’t understand what you’re proposing, might be worth taking it to DM at this point as I think there’s some deeper misunderstandings you need to clear up before making a proposal that could reach implementation. I did understand one aspect of your proposal, which was to essentially print more ICX for the CPS to fund approved proposals if the price of ICX goes down, which is not something I’d support. That would be pushing our economics back toward a direction where we increase the supply of ICX as price goes down, which is dangerous economic design. As a rule of thumb, you’d never want to increase the supply of something as its value is going down.

@Edouard_Stakin this is a realistic solution that I considered, but am curious your thoughts on the following situation:

Right now, there’s 250k ICX in the CPS. Let’s say we approve the following proposals:

  • Proposal A: 2 months, 30k ICX total (15k ICX per month)
  • Proposal B: 4 months, 100k ICX total (25k ICX per month)
  • Proposal C: 6 months, 120k ICX total (20k ICX per month)

When the proposals are approved, 250k ICX are immediately removed from the CPS budget and sent to the CPF. This guarantees that the ICX will be available for the proposals, as once the proposal is approved, the entire ICX budget is set aside. If teams want to request a budget increase, the budget increases would be voted on individually.

Now if we used a price oracle in the same situation, if ICX price goes down, how would you suggest the CPS handle this situation? Given that all 250k ICX has been allocated, that means there is no more ICX to automatically increase budgets based on price oracle feeds. Thinking as I type, I have two ideas tho neither are ideal scenarios. Curious your thoughts, let me know. Below are two super high level ideas:

1.) Let the CPS sell ICX for bnUSD (balanced USD when it’s live) and give grants only in stablecoins. This would mean people need to be willing to buy ICX from the CPS using bnUSD in order for the CPS to have a workable budget, then the CPS would issue grants in stablecoins only.

2.) Only allocate, let’s say, 20% of the CPS maximum at any given time to work in a strong cushion for price fluctuations. This limits the capital efficiency of the CPS and also you still must account for extreme scenarios where the cushion isn’t enough to cover an extreme price swing. In that situation, I would recommend the CPS automatically pause all proposals and P-Reps would need to evaluate which ones to continue given the budget constraints.

Yeah no worries, a wall of text is not always easy to read. As the solution that I have suggested (it was just to start off the discussion btw, unfortunately I have quite a few things on my plate lately and I dont think that I would be able to actively pursue a solution and/or follow through with a proposal) is pretty close to what you are discussing with @Edouard_Stakin, I will just jump in with a few thoughts of mine, hopefully they would be of help

Yes, my suggestion was related to an actively changing budget that is originally set in ICX as a max budget in the system (like it currently is), the projects are approved in USD value and this is the value that is taken as basis for the monthly payments (maybe with the help of a stable coin or another suitable solution)

Lets take that as an example of what I imagine could work taking the proposals that you have listed above:

Current max ICX budget: 250k ICX
Current ICX/USD price: $5
Actual set CPS budget = 5*250 000 = 2 500 000 ICX_u (1 ICX_u=$1)

  • Proposal A: 2 months, 30k ICX total (15k ICX per month) = $150k total ($75k/month)
  • Proposal B: 4 months, 100k ICX total (25k ICX per month) = $500k total ($125k/month)
  • Proposal C: 6 months, 120k ICX total (20k ICX per month) = $600k total ($100k/month)

They get approved so they get allocated:

  • Proposal A: 150k ICX_u set aside from the budget, 75k ICX_u allocated to the team each month. At the time of allocation according to the ICX/USD price, the amount of ICX that equals to $75k ICX_u (or respectively $75k USD as ICX_u is pegged to the USD price) will be sent to the team upon approval of the project’s progress

Practically it should function in the same way as the Foundation Grants did. I understand your point that we will be printing more when the price goes lower and I agree with it, but I believe that the CPS budget is pretty low anyway compared to the overall reward inflation on the chain, so we can afford some leeway in case of price fluctuations and this one is actually very important for the chain’s future as if done right it could attract more contributors to the network.

If we are afraid that this could result in higher inflation than what we are aiming for with CPS, maybe we could lower the overall budget or think of another solution that could limit the amount of projects that are active simultaneously on the network, but I definitely think that if we approve a project once, we should not ask the contributors to re-apply each month to keep their funding (almost nobody pays their employees in ICX yet, they do so in fiat) or simply defund them in the middle of the project because the price of the coin went down - that would be a pretty toxic practice that will give us a very bad name

I am not sure whether this exact solution is a good one, but I definitely believe that if we keep the budget and calculations set on ICX value, we would be in all sorts of trouble in the future. I think that by setting the payments in USD we will avoid potential grossly overpaid future projects (if the price goes up) and negative PR / lower amount of future contributions because of projects that had to be cancelled midway (if the price goes lower). All in all I believe that the projects that will be without issues in this direction will be a minority - most of us are here because of the frequent dynamic price fluctuations in the crypto market, so no reason to deny that they exist

Just my two cents (0.002 ICX by the end of March). I hope that I was of any help

Great thoughts. Thanks for sharing these 2 cases. I understand better the choices you made in setting up the CPS initially in ICX.

  1. Sounds good in the long-term. Can be interesting to test something around the concept of the CPS being powered by bnUSD, by selling ICX budget for bnUSD. I guess it will depend on how much liquidity we manage to attract on Balanced DAO. The CPS will not be the first platform that comes to somebody’s mind to buy ICX with bnUSD, maybe these ICX will have to be sold at a discount to attract buyers? Or maybe we need a liquid swap platform so that instead of having people buying ICX from the CPS, the CPS can be selling these on a third-party decentralized market?

  2. Not efficient as we won’t be deploying enough capital in the ecosystem.

Based on these two, looks like the best option is to keep it priced in ICX for now, and develop the feature to adjust the budget down in case of very bullish price movements.

1 Like