Is there a Vote Counter?

Is there expected to be any vote once counter available? I wonder it would be trivial for the network to host such capability but haven’t seen anything to date directly suggesting that is possible. I’m thinking something allowing once per account, rather than any exacting proof of person.

The partial ownership variant of the MutableData I proposed in RFC 47 topic would allow this.

The organizer creates such a MD with one value per voter, then transfers ownership to them so they can vote. The key of a value depends on the organization, it can be a user name or an anonymous identifier. Content of struct PartialData for each voter could be:

After MD creation:

  • version = 0

  • owner = Public key of organizer

  • data = empty form

After transfer to voters:

  • version = 1

  • owner = Public key of voter

  • data = empty form

After voting:

  • version = 2

  • owner = Public key of voter

  • data = form filled with voter’s choice

At any time, anyone can compute the results by reading the whole MD and summing:

  • votes for each choice

  • invalid forms

  • non-participating users (version = 1)

  • voters that have changed their minds (version > 2). Depending on the organization, this could be accepted or not.

All this is transparent and controlled by vaults. The voting app can be open source and decentralized, but each ballot is centralized because the organizer defines the question, decides who can vote and creates the MD (but this should be agreed within an organization).

The biggest problem is that the ballot never stops, meaning that users can still vote after agreed closure and so the proof of results is lost. But nothing can be done about this, because no date field can be reliably added until the network has a consensus about time.

Normally there is one MD per organization and ballot. This is okay for small organizations (<= 100, according to current maximum number of entries in RFC). For bigger organizations one MD must be created for each group of 100 and the results must be consolidated globally.

1 Like

If it’s mutable does that suggest it would that also allow action as a toggle against each value voted to?

Sorry, I am not sure to understand your question, so please forgive me if my answer is irrelevant.

The voting form can include independent check boxes. It can also include groups of radio buttons. The app can store the form corresponding to a specific ballot in an html string in the data field and when the user validates his/her choices, the app can store them in an additional json string in the data field.

I’m thinking of something that allows a user to change their vote over time… so, for example delegation of authority where at a later time you might see a voter remove their vote or support for what they have put that to originally. Sum of those votes then in real time, rather than ye olde form of snapshot voting at one moment in time.

Like I said, voters can change their minds and update the entry they each own. At any time, the results can be computed again by reading the whole MD. It is up to an organization to define such permanent voting.

1 Like