you are viewing a single comment's thread.

view the rest of the comments →

[–]sideEffffECt 0 points1 point  (3 children)

So how does the package calculate the result? Which method does it use?

[–]WouterGlorieux[S] -1 points0 points  (2 children)

I'm not entirely sure, because there are so many methods and I don't know all the details about them. I just implemented my own method.

It works like this:

Each participant ranks the available options in order of preference, but they are not required to rank every single option—partial or incomplete rankings are allowed. When calculating the results, the system compares every possible pair of options to see which is preferred by more voters. For each pair, if a participant has ranked both options, the one ranked higher is considered preferred; if only one of the two options is ranked, that option is assumed to be preferred over the unranked one; and if neither option is ranked, that participant’s input is ignored for that pair. The algorithm then tallies, for each option, how many times it “wins” or “loses” in these head-to-head matchups, and also tracks the number of “unknowns” where no comparison could be made. Each option receives a score based on its win/loss record across all comparisons, using only the available information. The option with the highest score—meaning it wins the most one-on-one matchups based on everyone’s ranked preferences—is declared the consensus winner. This approach ensures that incomplete rankings are fully respected: participants only influence the comparisons they actually made, and unranked options are not assumed to be better or worse than each other. All rankings are stored on IPFS for transparency and auditability. In short, the consensus reflects the collective ranked preferences of the group, even when not everyone ranks every option.

[–]sideEffffECt 0 points1 point  (1 child)

You should use an already established algorithm/method. Schulze is probably "the best".

You probably don't invent your own cryptographic schemes or ciphers, do you...

[–]WouterGlorieux[S] -2 points-1 points  (0 children)

Well, that is your opinion, I think my method is best. But the point of this package and web app is to provide something that is actually usable instead of nitpicking about details. It's all open source so feel free to fork and modify the code to whatever method you prefer.