Comments (3)
The guardians don't need to recompute and re-register their decryption. But they would need to restart the ZKP generation part. I will go over the steps here.
- Computer and register the partial decryption
M_i
- Start the ZKP by choosing some randomness and registering two values
a_i
andb_i
At this point we need to check how many guardians are present, and we continue with that set U
. This should be uniquely defined, so that all guardians continue with the same set U
.
- We continue with the ZKP which involves computing an
M
,a
,b
fromM_i
,a_i
,b_i
fori \in U
, generating challenges, registering the responses to challengesv_i
. - We check the responses
v_i
from all guardians. If they are all good, we are done. The coordinator can generate the final result and the final ZKP from all the information present. However, if somev_i
fori \in U
is wrong or missing, then we need to restart from step 2. above, i.e., generate new randomness to start a new ZKP, choose the new setU'
where the faulty guardians are removed, and finish the ZKP with this new set of guardiansU'
.
Note that guardians who weren't online in the first attempt at generating the ZKP could be used in the second attempt. Only if someone posts a v_i
that is wrong should they be definitely excluded. But maybe it is simpler to choose U'
as a strict subset of U
.
from concordium-governance-committee-voting.
Makes sense. With regards to 1 and 2, the reason why I say recompute and re-register the decryptions is that the decryption shares and associated commitment shares for the proof are registered together, so while they might be two separate "things", they are always coupled in our implementation. But thanks for clarifying.
With regards to the issue of excluding guardians from the subsequent run of the decryption I don't think it will make it simpler to choose a strict subset of U
for U'
. I imagine the coordinator being able to mark a guardian as "excluded from future selection" if the challenge responses for that particular guardian are invalid (i.e. registered but invalid).
In the rerun of the generation and registration of proof commitments, we would then take this exclusion into account, both at the point of registration in the contract and the tools reading the contract (i.e. coordinator tool and guardian app).
Does this proposal make sense?
@abizjak @chportma
from concordium-governance-committee-voting.
Yes, it makes sense. I guess that if someone doesn't post a v_i
, then they should also be excluded from the next attempt. Because if we include everyone in U'
who posted a a_i
and b_i
in the next attempt, then a guardian could prevent us from ever finishing the ZKP by always posting a_i
and b_i
, but never v_i
.
from concordium-governance-committee-voting.
Related Issues (20)
- [voting dapp] cannot submit vote through walletconnect HOT 1
- Guardian App Improved Error Message (Server Error)
- [Guardian app] Improved Status Display
- Remove configuration files from `election-server`
- [Guardian app] Improve error message in case of invalid decryption share was posted
- Guardian App: Wording Password Dialog
- [Guardian app] Make it possible to override the node used
- Android wallets - Insufficient energy when casting a vote HOT 6
- Register parameters given to election coordinator `initial-weights` in contract
- Enable key generation phase with guardian subset
- Fix duplicate requests made from voting dapp
- [voting dapp] high time to interactive with many guardians HOT 2
- Support protocol 7
- [election contract] Remove guardian keys from "viewConfig" entrypoint
- GC-Elections-E2E-Run3
- Change the label in votingDapp in the side pannel
- Coordinator-tool `initial-weights verify` doesn't work HOT 1
- Setup elections on Mainnet
- Allow exporting encrypted ballot from voting dapp
- Finalize the elections
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from concordium-governance-committee-voting.