一种保证投票发起人权益的公平的区块链投票方法及系统与流程

文档序号:24487714发布日期:2021-03-30 21:12阅读:74来源:国知局
一种保证投票发起人权益的公平的区块链投票方法及系统与流程

本发明涉及区块链投票领域和零知识证明领域,具体涉及一种保证投票发起人权益的公平的区块链投票方法及系统。



背景技术:

投票是我们日常生活经常接触的集体性活动,小到团体决策,大到总统选举,都有投票的应用。随着互联网、物联网技术的快速发展,电子投票技术也在不断更新。但目前基于区块链的投票技术,更多的是考虑投票者之间的公平性,而忽略了投票发起人这一角色。在投票中,投票发起人希望得到的投票结果能够尽可能准确,而投票者更关注保护自己的隐私,即我投给谁对其他人是保密的。现有的保护隐私的区块链自计票投票协议,如2020年发表在ieeetransactionsondependableandsecurecomputing上的《ablockchain-basedself-tallyingvotingprotocolindecentralizediot》一文,主要考虑的是保护投票者的隐私和投票者之间的公平性,当投票者恶意不投票或者未能在规定时间内发表正确形式的投票,他的投票就会被忽略,导致投票结果不够准确,忽略了投票发起人的权益述求。



技术实现要素:

本发明的目的是针对现有技术的不足,提出了一种保证投票发起人权益的公平的区块链投票方法,所述方法针对已有的保护隐私的区块链自计票投票方法,从投票发起人与投票者之间的公平性出发,投票发起人想要别人参与投票,就需要付出一定的奖金;投票者想要获得奖金,就需要成功投票,为此,他需要付出一定的押金,来保证自己会按本投票方法要求执行。相较于其他保护隐私的区块链自计票投票方法,本投票方法还多了定时承诺(选票解密阶段)来暴露投票者的隐私,即投票者需要在规定时间内将选票辅助参数上链,否则他真实的投票信息会被公开。

本投票方法一方面通过奖金来激励投票者参与投票,另一方面通过押金和定时承诺来约束投票者,在尽可能保护投票者隐私的前提下,让投票发起人获得尽可能准确的投票结果,有效的保证了投票发起人的权益诉求。

本发明至少通过如下技术方案之一实现。

一种保证投票发起人权益的公平的区块链投票方法,包括以下步骤:

step1、初始化阶段:投票发起人设置投票相关的参数,所述参数数据需要上链;

step2、注册阶段:投票者在规定时间内将自己的公钥和对应的非交互式零知识证明上链,并提交一笔押金;

step3、选票加密阶段:投票者对投票进行加密,并在规定时间内将经过加密的投票和对应的非交互式零知识证明上链;

step4、选票解密阶段:投票者在规定时间内计算出选票解密参数和对应的非交互式零知识证明,通过带有时间锁的交易将其上链,选票解密参数用来对步骤step3的加密投票进行解密;

step5、选票构造阶段:投票者在规定时间内将选票辅助参数和对应的非交互式零知识证明上链,将选票辅助参数与加密投票通过结合,构造出完整的选票;

step6、选票恢复阶段:如果有投票者未公开选票辅助参数,那么其他诚实的投票者在规定时间内将选票恢复参数和对应的非交互式零知识证明上链,所述选票恢复参数是用来恢复诚实投票者的选票;

step7、选票统计阶段:如果所有投票者都诚实的按步骤执行,则此时每个投票者通过收集所有经过加密的选票和选票辅助参数,在本地计算出每个候选人获得的票数;如果有投票者不诚实,则还需要收集选票恢复参数和选票解密参数,才能在本地计算出每个候选人获得的票数,同时,投票成功的投票者押金会返还,并平分奖金和其他投票失败者的押金。

优选的,所述投票相关的参数包括候选人个数、最大参与人数、奖金和各个阶段截止时间。

优选的,所述上链均指的是将数据发往智能合约。

优选的,步骤step1设置的参数发到智能合约后,智能合约生成elgamal加密算法需要的生成元和循环群,以及每个候选人对应的投票格式和安全参数。

优选的,所述规定时间均是在步骤step1由投票发起人设置的。

优选的,所述非交互式零知识证明在提交到智能合约后,智能合约会对其进行验证,验证通过才记录相应的数据,如选票加密结果等。

优选的,步骤step2,所述押金只要投票者按步骤执行投票,就会在投票结束后返还押金。

优选的,步骤step4发送的带有时间锁的交易,使得交易在时间锁解除之前无法上链,即选票解密参数在时间锁解除前不会被公开。

优选的,所述步骤step4的交易是指双花交易,即步骤step4与步骤step5的数据只有一个能够成功上链,如果投票者按步骤执行投票,则步骤step4的数据无法上链,从而保护投票者隐私。

一种应用所述的一种保证投票发起人权益的公平的区块链投票方法的系统,所述系统包括客户端和区块链两部分,其中客户端包括以下模块:

请求模块:向区块链的请求登记合约发起投票请求;

投票模块:向区块链的投票合约发送投票各个阶段的参数;

输出模块:统计出各个候选人的得票数。

区块链包括以下智能合约:

请求登记合约:登记记录所有的投票发起请求;

投票工厂合约:对于每个已响应的投票发起请求,发起一个投票合约;

投票合约:验证、记录一次投票过程中接收到的数据,处理相应奖金和押金的提交、扣除和返还。

本发明在投票方法中的参与方主要有投票发起人和投票者,投票发起人发起多候选人的投票,投票者参与投票,最终得到每个候选人的票数。

本发明与现有技术相比,具有如下优点和有益效果:

1.本发明通过定时承诺,确保投票者在规定时间内将投票上链,否则他将损失一笔押金,确保了投票发起人能够获得尽可能准确的结果。

2.本发明利用以太坊的实现机理,相较其他保护隐私的区块链自计票投票方法,多了选票解密阶段,当选票辅助参数未能上链时,选票解密参数将会上链,提高了区块链投票方法的适用性和投票结果的准确性。

附图说明

图1为本发明实施例保证投票发起人权益的公平的区块链投票方法的总体流程图;

图2为本发明实施例保证投票发起人权益的公平的区块链投票方法的时序图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

如图1所示,本实施例一种保证投票发起人权益的公平的区块链投票方法分为初始化阶段、注册阶段、选票加密阶段、选票解密阶段、选票构造阶段、选票恢复阶段和选票统计阶段,共计7个阶段。结合图2对各个阶段做详细说明,具体包括以下步骤:

步骤(1a)、即初始化阶段,投票发起人需要确定候选人个数o、最大参与人数m、奖金coinreward和各个阶段截止时间{t1,t2,t3,t4,t5},并将(o,m,coinreward,t1,t2,t3,t4,t5)上链。

步骤(1b)、数据上链后,智能合约会执行初始化算法完成初始化,初始化算法如表1所示。

表1初始化算法

步骤(2a)、在t1时间之前,即注册阶段,对奖金感兴趣的投票者pi(下标i表示第i个投票者)执行注册算法生成符合要求的公私钥对(xi,yi),注册算法如表2所示;计算能证明对奖金感兴趣的投票者pi确实拥有公钥yi对应的私钥xi的非交互式零知识证明nizk1,并将公钥yi及证明nizk1上链;此外,对奖金感兴趣的投票者pi还需要提供一笔押金coindeposit_i。

步骤(2b)、在步骤(2a)的数据上链后,智能合约会对押金coindeposit_i、证明nizk1进行验证,验证通过后将公钥yi加入投票者集合£voters;当注册阶段结束后,智能合约统计出实际参与人数n。

表2注册算法

步骤(3a)、在t2时间之前,即选票加密阶段,注册成功的投票者pi执行加密算法生成符合要求的选票加密参数venc_i,加密算法如表3所示;计算能证明pi确实投了候选人中的某一个且选票加密参数venc_i格式正确的非交互式零知识证明nizk2,并将选票加密参数venc_i及证明nizk2上链。

步骤(3b)、在步骤(3a)的数据上链后,智能合约对证明nizk2进行验证,验证通过后将选票加密参数venc_i加入选票加密集合£encrypt;当选票加密阶段结束后,如果有投票者pi的选票加密参数venc_i未加入选票加密集合£encrypt,智能合约会将其对应的公钥yi加入投票失败者集合£failers。

表3加密算法

步骤(4a)、在t4时间之前,即选票解密阶段,投票者pi执行解密算法生成符合要求的选票解密参数vdec_i,解密算法如表4所示;计算能证明选票解密参数vdec_i格式正确的非交互式零知识证明nizk3,并将选票解密参数vdec_i及证明nizk3通过带时间锁的事务上链,该锁使得事务在t3时间之前无法上链。

步骤(4b)、在步骤(4a)的数据上链后,智能合约对证明nizk3进行验证,验证通过后将选票解密参数vdec_i加入选票解密集合£decrypt,并将其对应的公钥yi从投票不诚实者集合£dishonest移除,投票不诚实者是指未按步骤执行的投票者。当选票解密阶段结束后,将投票不诚实者集合£dishonest中所有的公钥yi加入投票失败者集合£failers。

表4解密算法

步骤(5a)、在t3时间之前,即选票构造阶段,投票者pi需要执行构造算法生成符合要求的选票辅助参数vass_i,构造算法如表5所示;计算能证明选票辅助参数vass_i格式正确的非交互式零知识证明nizk4,并将选票辅助参数vass_i及证明nizk4通过与decrypt阶段事务拥有相同nonce值的事务上链。

步骤(5b)、在步骤(5a)的数据上链后,智能合约对证明nizk4进行验证,验证通过后将选票辅助参数vass_i加入选票辅助集合£assist;当选票构造阶段结束后,如果有投票者pi的vass_i未加入选票辅助集合£assist,智能合约将其对应的公钥yi加入投票不诚实者集合£dishonest。

表5构造算法

步骤(6a)、在t5时间之前,即选票恢复阶段,投票者pi先确认投票失败者集合£failers是否为φ集,如果不是,则执行恢复算法生成符合要求的选票恢复参数vrec_i,恢复算法如表6所示;计算能证明选票恢复参数vrec_i格式正确的非交互式零知识证明nizk5,并将选票恢复参数vrec_i及证明nizk5上链。

步骤(6b)、在步骤(6a)的数据上链后,智能合约对证明nizk5进行验证,验证通过后将选票恢复参数vrec_i加入选票恢复集合£recover;当选票恢复阶段结束后,如果有投票者的vrec_i未加入选票恢复集合£recover,智能合约将其对应的公钥yi加入投票失败者集合£failers,重新执行recover阶段或者中止投票并归还的押金。

表6恢复算法

步骤(7a)~步骤((7b)、在t5时间之后,即选票统计阶段,投票发起人和投票者pi通过执行统计算法即可获得每个候选人对应的票数,统计算法算法如表7所示。

步骤(7c)~步骤(7d)、智能合约计算出每个投票成功的投票者应获得的奖励(包括押金和奖金),并将奖励发送给投票成功的投票者。

表7统计算法

本发明实施例的投票方法具体过程详见表8,其中区块链部分详见表9。

表8投票协议-用户部分

表9投票协议-区块链部分

综上所述,本发明实施例为一种保证投票发起人权益的公平的区块链投票方法及系统,投票方法针对已有的保护隐私的区块链自计票投票方法,从投票发起人与投票者之间的公平性出发,一方面通过奖金来激励投票者参与投票,另一方面通过押金和定时承诺来约束投票者,在尽可能保护投票者隐私的前提下,让投票发起人获得尽可能准确的投票结果,有效的保证了投票发起人的权益诉求。该投票方法包括以下步骤:初始化阶段,由投票发起人发起投票,设置奖金;注册阶段,对奖金感兴趣的投票者发布公钥并提交押金;选票加密阶段,投票者发布加密的选票;选票解密阶段,投票者发布带有时间锁的解密选票交易;选票构造阶段,投票者发布选票辅助参数,完成对选票的构造,并撤销发布选票解密参数;选票恢复阶段,若存在不诚实的投票者,其他投票者需要发布选票恢复参数;选票统计阶段,投票发起人获得投票结果,投票者的押金返还并获得奖金。根据上述方案,可以在保证大多数投票者隐私的前提下,让投票发起人获得尽可能准确的投票结果。

以上所述,仅为本发明较佳的实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明所公开的范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1