Open danwallach opened 2 years ago
Yes this is a thing @danwallach . I have to say we would be interested in this project. Are you still active on it? We are currently working on a implementation for Decidim using the python electionguard implementation translated to webassembly using pyodide, which as you might expect, complicates quite a lot everything.
The current implementation is this https://github.com/decidim/decidim-bulletin-board/
At this point, ElectionGuard-TypeScript is a complete implementation of the ElectionGuard 1.0 spec, with lots of unit tests. We're not actively maintaining it.
To the best of my knowledge, the Microsoft team abandoned the Python implementation, leaving the C++ codebase (which has real users) and an in-development Rust codebase. The thing that I've been working on is a Kotlin reimplementation (https://github.com/votingworks/electionguard-kotlin-multiplatform), which is compliant with ElectionGuard 2.0, and which can target the JVM as well as a "native" target (i.e., anything that LLVM can target, which includes WASM, although the Kotlin devs are working on a new WASM backend).
If what you need is just the voting machine side of things, so encryption but not tallying or verification, it would be probably a week or two of effort to get this TypeScript repo up to compliance for your needs. The Kotlin codebase and TypeScript codebase, are very, very similar in how they're structured at the level of the cryptographic primitives, so it would be relatively straightforward to port over things like the new range proofs. You'd probably spend more effort updating all the unit tests.
Thanks for the answer Dan, as far as I see this would mean that, if Decidim decides to keep using ElectionGuard as a secure vote system, it would have to maintain either the python or the javascript implementation. I am not part of the Decidim core team but we provide services with it. They will have to make a decision about it then. For the moment we will release the current implementation and then we will see.
So this is a thing: https://github.com/decidim-archive/decidim-electionguard
It's sort of kind of an online voting system. They've got an ElectionGuard module. Maybe we should talk to them. Maybe they'd be a good client for ElectionGuard-TypeScript?