CPS improvements discussion

We have been seeing a lot of discussions lately regarding the CPS, it is clear certain aspects need to be improved. It is far from perfect however the kind of voting it is, makes it near impossible to be perfect however we need to try make it as perfect as possible.

So lets openly discuss some options and opinions on how we can improve the CPS, I will start with my opinions and thoughts.

This is not a dig at P-Reps but a few things I have noticed and am not a fan off in the CPS.

  1. Voting with the consensus and not based on their own opinion, a lot of P-Reps seem to wait till the end of the voting round and simply vote based on what other P-Reps have voted, leaving zero reasoning.

  2. Single entities running multiple nodes and participating in voting. I have no issue with people running multiple nodes however it becomes an issue when it comes to voting as one persons opinion is counting as multiple votes.

  3. Not doing due diligence, this has been seen first hand with The Redemption proposal, which was in the ICON forum 2 months prior to voting. P-Reps do not get paid for CPS participation so I do understand why most do not vote with proper due diligence however I do not get paid and I have over 14 hours read time on the ICON forum and have read every single CPS application in detail, so not being paid is simply an excuse, a fair one but still an excuse.

  4. Biased towards long established P-Reps/ projects over new projects. I do get that it is easier to trust these however, do we really want to become a gatekept ecosystem? I certainly do not and it is not exactly welcoming. (I do understand ICON funding pool is not as much at current prices)

Solutions-

  1. In order to help prevent P-Reps voting based on the consensus, we should hide the visual voting bar and for it do be displayed once voting has been finalised. Yes, P-Reps could still check on chain data to see the votes but voting based on the consensus visual is a matter of laziness and taking the path of least resistance. I feel most would rather vote based on their opinion than go on-chain to try check what everyones else has voted.

  2. Potentially putting a bond in place, so P-Reps that participate in the voting should submit a bond (nothing too crazy). If a single entity is seen running multiple nodes in the voting, they should loose the bond.

  3. We can not completely blame P-Reps for not doing proper due diligence and taking the CPS seriously when it is not straight forward and they are not being paid, so here is my opinion:

We consolidate everything into the CPS by creating an open discussion page for pre-proposals. The pre-proposals to be submitted in the submission round to the forum alongside a 50icx fee, community are able to air their thoughts and opinions alongside a visual vote based on weight and % of voters. P-Reps would also need to sign a TX and leave some feedback/ request more info etc on the pre-proposal during the voting round.

By doing this, the community are able to air their thoughts and opinions on how/what the Community funds are being spent on. It also makes it easier for P-Reps to do due diligence while giving the proposal a fair chance to adjust and tweak the proposal for final submission.

  1. If more inflation goes towards the CPS i feel it should be split into two pools. 1. Core work/tools etc 2. Community which covers events like W3N, marketing, NFT projects, other community based proposals. This along with point 3 will hopefully help prevent more biased towards already established projects and hopefully result in a more welcoming platform for outsiders.

I am also not against paying P-Reps to vote, in return expect proper due diligence and to take the CPS more seriously, however if they are being paid there should be a bond in place, with the same terms as 2.

Also, I do not think this is as simple as “People should be adjusting their votes”, this is flawed for a few reasons

  1. We all know how many dead votes there are.
  2. Market conditions mean most voters are in hibernation.
  3. People voting, would rather vote on P-Reps which benefit them personally or financially which is more than fair.

We should not just hope voters wake up and start changing their votes, this will not happen, this is a much larger issue. So we need to discuss other solutions IMO.

Above are simply my thoughts, not saying they are perfect or the best way to solve issues, simply airing my 2 cents and hoping others do the same. Collectively, i am sure we can figure something out :100:

A lot of suggestions here requiring careful consideration on gaming (that I feel ill equipped to comment on but love) but overall a very well put post.

The idea of having voting progress hidden until completion sounds really strong. though perhaps progress could be visible to the party whom posted. then they arent surprised by the result on the final day and can prepare themselves accordingly.

3 Likes

Yeah i agree, having the party who submitted it be able to view is a good idea and lets them prepare. The suspense would kill me :joy:

3 Likes

Some thoughts:

I don’t think hiding the visual voting bar will do anything. The data is transparent on-chain. If the official CPS UI hides it, someone else will make an alternative UI that shows it. Actually, a CPS page is already on the roadmap for the RHIZOME Tracker, and that page will definitely show progress. Furthermore, some validators already use bots or custom developed tools to vote on proposals. In those cases, they already don’t see the progress bars, so I don’t think the visual component has much to do with the problem. I do like the general idea behind secret voting though. In the long term, I wonder if it’s possible to offload CPS onto a privacy-enabled side chain that supports secret voting. Once the CPS period is over, the results could be relayed back to the main ICON chain via BTP.

You mention that validators vote with the consensus and not based on their opinion. But what if their actual opinion is not “approve” or “reject”, but rather, “I don’t care.”. That’s actually a valid opinion for someone to have, and with that opinion in mind, it makes sense to just vote with the consensus. So I think the actual problem to solve is how to ensure validators care about the proposals they’re weighing in on. I like the idea of funding being split into two pools, but maybe not on the proposal side of things. In your example, tooling and NFT projects are in different pools. But what if someone wanted to build NFT tooling. Which pool would that go in? If it could go in both, it would mean the pools don’t really mean anything and would only serve to add more complexity to the smart contract layer. With that said, what do you think about validators specializing in a single category?

For example, I participate in CPS as a validator, but I’m really only interested in DeFi and infrastructure projects – as these are the areas that I have experience in. There have been gaming proposals which I’m just not interested in because I am not a gamer and have no experience in game design. So I guess the question is why, as someone who doesn’t care about gaming, I have to somehow BS my way through approving or rejecting a proposal for a game? I’m thinking it could be cool if each validator could choose a “power up category”. So let’s say RHIZOME chooses a power-up in the infrastructure category. Maybe for all proposals that fall under the infrastructure category, RHIZOME gets a 25% increase in voting power and some % of decrease for proposals in other categories.

2 Likes

Regarding the idea of power ups and giving validators a bigger voice in their chosen category, there have been several examples where this sort of system could’ve benefited CPS. The most obvious example I can think of was one of the early proposals for Sudoblock’s community tracker. Their proposal was quite detailed and there were even in-progress GitHub repos, but there were a number of validators and community members that literally thought they were just updating the tracker UI, when in reality they were developing brand new syncing, data processing and indexing pipelines, and a well-documented API. The thing is for this kind of technical proposal, effectively determining whether to approve/reject requires a certain level of technical experience.

Like if you don’t even know what ETL or API means, you probably shouldn’t be involved in judging the proposal. These technical concepts are also too complex to learn within the 2-week voting period. So if there was some way where validators can choose to increase their influence in areas they actually care about, that would be very cool. This is how the real world works too btw. Some venture firms specialize in fintech, others special in social, others specialize in hardware, and so on. It’s rare to find a venture firm that knows a lot about everything – but that’s exactly how CPS is set up right now. It assumes all validators involved have the knowledge to make solid decisions on proposals ranging from infrastructure to marketing to community to DeFi, etc.

1 Like

I have been saying from the start of CPS that discussion for CPS proposals needs to be ON the CPS platform but it has still yet to happen. People said the forums were good enough, I disagree and it finally seems like others are seeing why.

Once we incentivize the preps we could make them have to verify that they’ve read the pre-proposal as part of getting their incentive rewards.

The process should be submit pre-proposal during a submission period and get feedback on pre-proposal for 2+ weeks (through the current voting period), then submit during submission period of 2 weeks, then the voting period to have it approved/rejected for 2 weeks.

But no one should be able to submit a proposal for voting without having submitted a pre-proposal for it before.

2 Likes

As for people running 2 nodes I personally am part of those people and the nodes are for 2 very different projects. We need more preps in the CPS platform, not limiting who can vote just because they run multiple nodes.

Agree here, and would be a plausible solution - just obviously a ways away from happening. For the foreseeable future, voting can’t be private. Was going to say I’d be happy to support removing the visual from the CPS UI, can’t hurt, but generally agree with your point here.

This is an interesting line of thinking and reminds me of quadratic voting. Quadratic voting would be relatively simple to implement and at least add more nuance to the decision making process. TLDR validators get, let’s say, 100 votes per cycle. They can then allocate those votes across each proposal, allocating more votes to proposals you feel more strongly about. Categories system could be beneficial, but would be a lot more R&D. Research to look into other examples we could ideally learn form, write a spec, and implement it once decided.

Personally I feel like a bond specifically to prevent Sybil attacks, then punishing with group consensus is a lot of work for not a major problem right now. It just doesn’t feel like a top priority to address. Nodes still need a lot of stake-weight to have meaningful impact. If there were ever a notable Sybil attack, we could upgrade the contract and blacklist the malicious validators. It would be a costly attack to do over and over, as it costs 2k ICX to register a validator.

@AlterCap getting paid should not happen before a more secure system is designed, if even achievable.

The second there’s an incentive, a Sybil attack becomes certain. CPS is a smart-contract product and incentives would be operated through them, therefore requiring certain text/effort/judgement etc. is not something I can think of a way to prevent. I’d welcome any suggestions that can algorithmically define “effort”, so it’s enforceable at the smart contract level, but everything I’ve thought of recently has holes in it. So long as it’s profitable to register a validator, bots will register and vote.

The changes proposed here will at least make it more difficult to register a validator without operating a server (and paying its cost). It could mitigate the problem with incentivizing the CPS, so long as being a top 100 validator is still a requirement.

No strong opinion on this, I’d just say it’s not really worth the development effort imo. Having one pool vs two will come with its own problems (i.e. how much funding goes to each), which Increases general governance overhead.

2 Likes

I’ve heard the term quadratic funding a lot in crypto, but never actually sat down to read about what it means. Will look into it. But the general system you described sounds like a step in the right direction. The only issue I see is that I think validators should have some influence on every proposal, but also be able to have more influence on proposals in their designated category. With a system that gives validators 100 votes/cycle… Let’s say there’s an example CPS round with two proposals. Does that mean a validator can choose to allocate 100 votes to one proposal and 0 votes to the other?

After reviewing the comments in my initial thread, I’m getting the following main ideas:

1.) Many community members want the ability to submit their own votes and have a direct impact on the outcome.

This could be achieved on-chain by changing from solely validator decision making to staked ICX (or some veToken / boosted mechanism) or some combination of the two.

This could also be achieved off-chain through the frontend or the governance app @LucasStaky built, Agora.

2.) Many community members are generally not happy with the decision-making process for the CPS

This is similar to the first point, but includes broader suggestions such as an elected board of community members, keeping validator governance but improving it, and perhaps some others that I missed.

I have mixed initial thoughts but I think an excellent first step would be to integrate @LucasStaky 's Agora product into cps.icon.community and use it to gather community opinion on proposals. Display community opinion directly in the UI for validators to see, but no smart contract changes.

This would allow us to get a couple important details before thinking of the next step:

1.) We get to see how secure the CPS would be if it were ONLY ICX-based. If millions of dollars of voting power comes out to vote, we could consider more (if not all) power going to staked ICX in some capacity. Details would need to be ironed out.

2.) We get to see if validators organically vote with community sentiment. Perhaps this UX change will make considerable improvements to the decision-making process. If it is not a considerable improvement, we can consider smart contract changes, such as incorporating staked-ICX-weighted decision making, the governance-appointed council, or another suggestion.

4 Likes

Dont want to digress from the points mentioned but another thought I had which Im quite liking is a ‘year end review’ for Validators. Based on the year end review score, validators get icx allocated to them. Factors that would affect the review score is things like whether they have shown good practices throughout the year as a validator. Things like do they run a node, how successful the cps projects they have sponsored or voted on have faired etc. More factors can be added. Im thinking this review can be either done by the the foundation or the community/community reps.

In terms of where the incentive rewards come from to provide these incentives to validators rather than directing the entire increase to cps from staking rewards we can allocate to validator incentive pool.

Just an initial idea.

4 Likes

We first have to make sure what the actual goal is of CPS, we can not just assume everybody shares the same vision on what CPS is for, thus how to vote on projects.

Set a very clear goal following the SMART format, should be the first step:

S - Specific
M - Measurable
A - Achievable
R - Relevant
T - Time-bound

The slogan communicated on the website:

"The Contribution Proposal System (CPS)
is a decentralized grant program that supports developers and teams wanting to build on the ICON blockchain."

is not usable as an organisation’s goal.


When the goal is set and crystal clear to all, we can actually manage the process. One way to improve processes which is used by organisations around the world, is using the PDCA circle.

Plan - make a plan using the determined goal
Do - carry out the plan
Check - check the results
Act - adjust the plan according the results.

These methodologies are used by organisations worldwide and are taught in business schools. I have been part for +10 years, as a business-owner, of one of the best performing organisations in the world. I saw these methodologies being implemented, implemented them myself, and saw what the results were (sales & profit growth and stock price outperfoming the market for many years in a row).


At the moment if sort of feels like we are winging it a bit, and missing a lot of great opportunities.

more on SMART goals - How to write SMART goals (with examples)
more on PDCA - Plan, Do, Check, Act (PDCA) — A Resource Guide

6 Likes

Good discussion, I like the idea for a system where validators can add weight to votes. Essentially boosting some proposal yes/no votes, whilst rendering their other proposal yes/no votes insignificant.

2 Likes

Hey @paulrouge can you take a crack at applying SMART to the CPS? General framework makes sense but would be interested to hear your thoughts on how to specifically apply it to the CPS with some actionable next steps

1 Like

@bwhli - I don’t disagree and am not saying P-Reps do not use bots to vote as this wouldn’t surprise me, however it would be no harm taking it away and seeing the results for a couple rounds. Most things in existence are made from trial and error, we will not all of a sudden find the perfect solution however we can try an array of small solutions to see what sticks and what does not.

I would be all for complete secret voting via a privacy side chain but I don’t think this would come to fruition for at least a year due to other priorities but hopefully one day as this would definitely help!

If their opinions are “I don’t care” so I will vote with the consensus then that is a seriously poor look for the entire platform and completely off putting for outsiders IMO. Most are just too lazy to care in general, not reading the proposal and voting via bots.

I think having more pools is definitely more optimal, multiple other chains have success having more than one funding pool, IMO it makes sense however with ICON funding taken a hit at current prices, I do see how this would be hard to achieve without diluting the entire funding pool too much but if we are about to take 7% from stakers, I see no reason why that 7% could not be used for another pool as it would not effect the current.

The whole “I don’t care” is exactly why multiple pools of funding would be better, each pool to have a group of P-Reps that are well equipped and passionate on that particular pool, NEAR for example have multiple funding pools for Defi, core work/tooling, community and NFTs so when you are applying you know you are not going to get knocked down due to entities not wanting to support a certain category.
Look at it from an outside perspective, if you come to ICON for funding an NFT project or something similar and see the recent abstains saying they are not wanting to fund NFT projects, you will simply go else where, loosing interest in developers and potential projects that could bring huge potential, after all without DApps, NFT projects etc most chains would be a ghost town, especially in current markets.
Now with the current funding I personally see and understand why some P-Reps are being conservative but this issue would not happen if there were two pools and groups of P-Reps that picked the pool they were passionate and equipped to speak on.

I really like the idea you suggest, I could definitely see this as a good alternative solution to multiple pools.

@GeoDude - Yeah agreed, the discussion and pre-proposals 100% need to be on the CPS platform.

I disagree, we need more variety of voting not more of the same votes. If both P-Reps have separate views and opinions than thats different but if it is one person behind the voting then that does not benefit the voting, it does the opposite. On a large scale it does not matter, however if there are 20 P-Reps voting and you have 2, you own 10% of the vote, with enough capital and the fact multiple P-Reps vote/ bot based on the consensus, I see how this could potentially be gamed.

@BennyOptions_LL After a chat with Geo, I agree that a bond should not be in place but if P-Reps eventually get paid for this role I feel some type of safeguard 100% needs to be in place prior to P-Reps being paid, all I can think of at this moment in time is 1. Getting kicked off from voting 2. No payment from the CPS. As for how it is judged, each quarter there could be an evaluation where all P-Reps judge each others participation, if people have been seen doing the bare minimum then they do not enter the next quarter. (maybe not a great solution, just all I have at the moment)

@paulrouge Agreed, more structure would definitely help!

1 Like

This could be some goals, just some rough ideas:


Transactions:
Grow the amount of transactions by 50% ytd.

Active addresses:
Grow the amount of active addresses by 50% ytd. (An address is considered active when there is > 50 icx in it and has been used to sign a transaction at least 3 times for the past 6 months.)

BTP transactions
100k monthly transactions per connected chain. Goal amount grows 30% when target is reached for 3 consecutive months.

Active Developers
Grow the amount of active developers with 50% ytd. A developer is considered active within the ICON Ecosystem when yxz.

Open Source Activity
Grow the amount of lines of code in open source projects by tracking Github repo’s by 30% ytd.


If the goals are set and all the noses are pointing in the same direction, you track your key indicators and reflect on them with the team, daily, weekly, monthly and yearly.

Without clear shared goals, organisations can not be succesful or sustainable.

1 Like

I like this idea and I think it would be easy to accomplish as well as the right descision going forward. I also would reduce staking rewards for the sake of bigger cps.

  1. Voting with the consensus and not based on their own opinion, a lot of P-Reps seem to wait till the end of the voting round and simply vote based on what other P-Reps have voted, leaving zero reasoning.
  2. Single entities running multiple nodes and participating in voting. I have no issue with people running multiple nodes however it becomes an issue when it comes to voting as one persons opinion is counting as multiple votes.
1 Like

I would love to see this, at least for some months, as an experiment. I think this would give $ICX stakers/holders more ownership of the future of the network, thus being more involved in the decision making.

IMHO this has worked wonderfully for Balanced Network, even on hard times like the black swan event we had some time ago. Personally, I’m not only staking BALN, I own (a piece of) Balanced Network. This ownership is powerful as it makes me care about the future of the dApp.

One idea would be to:

  1. Have a period for ICX stakers to exercise their votes.
  2. Once this period has ended, then P-Reps use the unexercised delegated voting power + their voting power to exercise their votes.

This might be a bit tricky to implement right away, but I think it would be a valuable experiment.

3 Likes

Hello!

We really think this discussion is great. We created a new post in Governance because we’re suggesting an idea that might:

  • Help Community Validators with their Bonding requirement
  • Encourage more CPS participation
  • Allow the community to vote

It echoes some of the suggestions you make here and adds a few. Because we are also targeting the bond requirement, we felt it would be best to have it as a separate post.

Link below:

2 Likes