danwallach / ElectionGuard-TypeScript

TypeScript implementation of ElectionGuard (subset for ballot encryption)
MIT License
8 stars 0 forks source link

Decidim? #45

Open danwallach opened 2 years ago

danwallach commented 2 years ago

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?

microstudi commented 1 year 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/

danwallach commented 1 year ago

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.

microstudi commented 1 year ago

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.