Open jpaulet opened 4 months ago
Umm but this enforcement cannot work at blockchain level. Then the results will still be available on explorer or via API.
The right way to achieve this feature is to let the organizer publish an extra encryption key for the votes. So the results won't be computed until the organizer decides to do it (could also be never). In addition, as the only missing encryption key will be the one provided by the organizer, it can compute the results (by providing the key to the API server).
However, this requires:
hash(signature("this is a key"))
Then, they will have to manually publish/open the results to everyone, by clicking a new button "Publish Results for Everyone" that will change this parameter from false to true (by modifying the metadata from false to true).
Another issue is that the metadata of an election cannot be changed.
I would suggest implementing as first step the following:
RevealProcessEncryptionKeyTx
that can be only executed by the owner of the organization. This transaction can only be executed if the destination process status is ENDED.GET /elections/:electionID/scrutiny?key=hexString
so the privKey is attached and the backend can compute the results to show ONLY to the organization ownerA future next step to this is to integrate drand https://drand.love/developer/clients/#go
Then we can finally remove keykeepers from the system.
As organizer, I want to control when the results are published, in order to have time to review it, validate them and/or announce them.
Task: Add a new metadata field in all voting process, that will control if the results are published after the end of the process.
By default this option would be
true
(as now) and the results will be published as currently, but if in the creation process is set tofalse
, the results will be only available by admins.Then, they will have to manually publish/open the results to everyone, by clicking a new button "Publish Results for Everyone" that will change this parameter from false to true (by modifying the metadata from false to true).