Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decidim? #45

Open
danwallach opened this issue Jul 29, 2022 · 3 comments
Open

Decidim? #45

danwallach opened this issue Jul 29, 2022 · 3 comments

Comments

@danwallach
Copy link
Owner

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
Copy link

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
Copy link
Owner Author

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
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants