这个匿名投票系统的例子还是不完善的,如果你有好的建议和想法可以留言一起学习探讨。
一、构建一个匿名的投票系统,最核心的部分有两个,
1、投票人的匿名
2、投票人身份合法性确认
如何解决这个两个核心问题?
第一个问题,投票人的匿名,首先我们规定每个人又一个私钥代表每个人,然后将私钥做hash作为id,这样即使暴露了id也无法知晓每个人的身份。然后投票的时候,我们让投票人不发送任何关于自己身份的信息(私钥和id都不发出去)就可以了;
第二个问题,身份合法性,我们构造一个merkle tree,叶子的信息是每个人的id,然后验证身份的时候,验证者需要提供私钥和验证路径就可以得到root节点的hash值。而从root则无法返推出个人的id;而有人想要冒充别人身份投票的时候,也没有相关的信息去证明自己身份的合法性。