Project Catalyst: What happens after voting period ends? How are projects selected for funding?

Hello there, beautiful soul.

Saw few questions rolling around, figured to refresh my mind and help you learn together with me. What better way to close out this weekend. So, let’s break down what happens and how it happens that enables projects to be selected for funding. Here’s the break down of that mechanics. Let me know if I missed anything.

Here is tweet to retweet, or reddit to upvote.


giphy (6)

Stage 1: The Tally

Every challenge category has a set budget that will be distributed to select projects. This budget was determine during Challenge Setting vote by the Cardano Community in the fund prior.

At the tally - the following happens.

All ‘YES’ votes are counted (all voting power combined) and all ‘NO’ votes are counted (all voting power combined) for every individual proposal.

What is one vote? One vote (one voting power) = 1 ada. This means a wallet registered with a balance of 1,000 ada has 1,000 voting power available. A wallet can vote ‘YES’ or vote ‘NO’, and therefore apply their voting weight to the final tally of any given proposal.

E.g. if a proposal had 10,000 ‘YES’ votes combined, and 5,000 ‘NO’ votes combined - the final tally for this proposal will be 5,000 ada FINAL votes. According to this - all proposals are then ranked.

  • The formula would be as follows:

    • =(YES-NO)=FINAL

Higher the number of FINAL votes, the better. Proposals are ranked according to FINAL votes - top voted proposals first, least voted proposals last.

This is as far as tally is concerned. What happens next? Funding algorithm.

Stage 2: The Approval Thresholds

There are two unique thresholds that every voted upon proposal must meet before it is considered as approved but (not yet funded). Both must be true.

  • Threshold #1 - at least 1% of all total registered voting power must cast a vote on this proposal
    • For example, in Fund8, total registered voting power was 3,680,777,012 ADA. 1% of that is 36,807,770.12 ADA - this amount of ADA must express combined 'YES" or ‘NO’ vote to be eligible. In other words, sum (not the difference) of all ‘YES’ and ‘NO’ votes must be EQUAL or MORE to 1% of all registered voting power eligible to cast a vote.
    • Note: if only half of all registered voting ada casts a vote, and other half does not participate in actual voting despite being registered - 1% takes into account all registered only. Not participating ada. It’s a security threshold parameter.
    • The formulate would be as follows:
      • IF(YES+NO>=one_percentage) - proposal meets the threshold #1
  • Threshold #2 - there must be at least 15% more ‘YES’ votes than ‘NO’ votes as a difference between the two
    • The formula would be as follows:
      • IF(YES/NO>=1.15) - proposal meets the threshold #2

Stage 3: The Funding Allocation

Once a proposal has satisfied all of the above, funding allocation begins.

Fund resources are finite and not all approved projects can be funded.

There is a total budget set for every challenge category. This was set by a public vote in a preceding fund under Challenge Setting category.

Top voted proposal with the most FINAL votes meeting two additional thresholds gets their funding allocation first.

If total funding budget for the challenge category is $10,000 and top voted proposal asked for $5,000 in their budget request - their proposal is now funded. Leaving $5,000 funding budget allocation for the next top rated proposal.

If the second rated proposal asked for $1,000 in their budget request - their proposal is now funded. Leaving $4,000 funding budget allocation for the next top rated proposals.

If next - 3rd top voted proposal asks for $5,000 in their budget request, due to the fact that their ask exceeds total budget funding available left by a whole one thousand (there’s only $4,000 left now) - their funding request is unfortunately skipped. This proposal was approved but unfortunately marked as OVER BUDGET.

If next - 4th top voted proposal asks for $4,000 in their budget request - their proposal is now funded as that exactly matches funding allocation amount left available.

Funding for this particular challenge category is now depleted. No more funding for this category takes place.

The above logic continues for every unique challenge category until there is no more budget left to fund a full proposal ask. This means, sometimes - a little money is leftover in any challenge category that can’t fund next viable proposal in that specific challenge. In that scenario pooling of resources leftover takes place.

Once every challenge category funding budget is drained, all of the remaining budgets (leftovers) are pooled together across all. This creates one last universal funding budget to be distributed regardless of challenge. Second round of funding allocation takes place. Same logic applies as above, however, now all top approved but yet unfunded projects are pooled together across all challenges combined. Same funding allocation logic applies as per earlier above. This allocation runs until no more viable project budgets are possible to fund in the current fund cycle.

Extra credit reading

And that’s it. I also shared this piece a week or two ago that outlines Proposal Journey from a bit higher perspective. You may find it also interesting.

And that’s it, for now. Don’t forget to go out and vote. Missed the voting guide? Find it here.


Who decides on these rules and what do we have to do to change them?

Especially this one should really be changed. As already discussed a few months ago in the Catalyst Telegram channel, this rule can lead to the situation, where I help a proposal meeting this threshold by voting “No” on it!

As David Perlman analysed in, this is not only a theoretical problem. In all funding rounds, there are a few proposals (6 in Fund 6, 10 in Fund 7, 25 in Fund 8) who wouldn’t have been funded if “No” voters had just not voted instead.

Hello HeptaSean,

In a mature state, these rules/parameters are adjustable based on the community vote/alignment. Catalyst Circle is one experiment that has been originally envisioned to help sense and drive some of the Catalyst parameter adjustments pilots. Though, we’re not there yet. Currently, process relies on a set of endorsed/well documented community recommendations that can be put forward and considered for implementation where ready.

You’ve mentioned this one should be changed. What specifically and to what and why? Can you elaborate please in a bit of greater depth? Appreciate it.

The one quoted directly above it – Threshold #1.

Just change it from IF(YES+NO>=one_percentage) to IF(YES>=one_percentage). “No” votes should just not contribute to a proposal meeting a threshold, having a higher chance of getting funded.

Thank you.

There are two thresholds that work together. One is about how much ada actually has to express a vote on any given proposal - the second is about the difference that YES votes need to outweigh NO votes.

Can you please elaborate on ‘why’ rationale to changing only #1 and by removing NO all together from the threshold itself? Doesn’t have to be an immediate answer, a longer form would be much valued to outline your thinking. Thank you in advance.

Let’s take an example:

The proposal “Ouroboros-mini query specification” in “Open Standards & Interoperability” of Fund 8 got 22,475,160 ADA YES and 17,435,670 ADA NO. It only met Threshold #1, because of the NO votes. People voting NO, people who did not want to see this proposal funded helped it getting funding. If only 3,103,060 of those NO ADA had just not voted instead, the proposal would not have been funded.

If I participate in a vote, I don’t want to cause the exact opposite of what I am expressing in my vote!

There are voting system paradoxes that are hard to avoid. This is not one of them. It is just a threshold. And such a threshold should always be a threshold on YES alone (or on YES-NO), but never on YES+NO.

Or the other way round: Could you elaborate, why a NO vote should help a proposal get over this threshold? Why should the expression of opposition to a proposal help it?

(This does not affect Threshold #2, because in Threshold #2, NO votes already make it less likely that a proposal gets funded. The two thresholds are quite independent of each other and work on different measures. It’s totally okay to require a certain margin in percent by which YES has to be more than NO – arbitrary as such thresholds are always a little bit arbitrary, but okay.)

EDIT: Perhaps a direct comparison inside the same challenge helps even better illustrating the problem:

The “Codesign” proposal failed Threshold #1, despite it having significantly more YES and a much better score. If just 1,217,969 ADA more had voted on “Codesign” (even NO!), it would have gotten funded.

“Codesign” has been punished for getting less NO votes (much less) than “Ouroboros-mini”.

If the threshold stays at 1%*Total_Voting_Power, such a change would lead to a lot more proposals, especially both of the example proposals, failing the threshold, not being approved.

We could lower the threshold. After all, there is no special reason why it should be 1% and not 0.5% or 2%. With YES >= 0.5%*Total_Voting_Power, both example proposals would have passed the threshold. With YES-NO=FINAL >= 0.5%*Total_Voting_Power, “Codesign” would have been approved, but “Ouroboros-mini” not. But the inconsistent case that the proposal with more YES, less NO, and, hence, much more FINAL fails the threshold, but the other passes, cannot happen, anymore.

On the other hand, we could leave the threshold at 1%, let a lot more proposals fail it, and distribute the funds in the leftover round. There were quite a lot proposals in the leftover round that would have even passed FINAL >= 1%*Total_Voting_Power and did not get funded.

Using YES-NO=FINAL and not YES as the thing being thresholded would have the appeal that that’s the value that is already used for the final sorting, making it a lot easier to explain. One could even debate if Threshold #2 – the threshold on the margin relative to the NO votes – is still necessary if there already is an absolute threshold on the FINAL margin.

Thank you for the thoughtful post - that’s what I was seeking. Much appreciated. I have some initial thought as well but I will channel this to the research team first to take into account and will come back to you once I know more.

1 Like

For threshold 1, the 1% and the formula should both change.

If you simply lower the threshold, you aren’t fixing the original problem. You’re just moving the problem.

The formula should just be YES votes. No NO votes included.

Then lower the threshold percentage from 1%. I don’t know the right number, maybe .5%…

The best way to figure out the right number would be to look at the previous funds. Change the formula and see what would’ve played out.

Yes, I thought I was pretty clear that I think the formula must be changed.

It could be YES-NO. It just absolutely should not be YES+NO.

In fact, I would find YES-NO quite elegant, since that – FINAL – is already the relevant number in the end.

We could also just not lower the threshold …

… and see a lot more proposals fail in the single challenges, probably more funds going to leftover, and more proposals funded there.

I think I might like that, but that’s just opinion.

" Yes, I thought I was pretty clear that I think the formula must be changed."

I wasn’t arguing with you about that at all… I was commenting on the example that you gave.

There was an interesting talk yesterday about this in Cardano Tech. Something that came up was more like the finally tally (YES-NO) being a certain percentage of the total vote for that Fund (not total registered, but of the total actual vote for that Fund).

You could keep the 15% threshold between YES and NO, and then use the YES - NO = Total, and Total has to be over some percentage of the total votes for that Fund.

There are a lot of ways it could be approached. The good news is that we’ll soon have 9 Funds worth of voting results to test the calculations on. That should provide a decent amount of data to hone it in.

1 Like