基于区块链的电子投票方法、装置及存储介质制造方法及图纸

技术编号:25481873 阅读:24 留言:0更新日期:2020-09-01 23:02
本方案涉及区块链领域,公开一种基于区块链的电子投票方法、装置及存储介质,包括:创建投票箱账户以及多个投票账户,投票箱账户包括账户余额为0的支持账户和反对账户,任一投票账户i的余额为投票账户i拥有的投票权重a

【技术实现步骤摘要】
基于区块链的电子投票方法、装置及存储介质
本专利技术涉及区块链
,具体地说,涉及基于区块链的电子投票方法、装置及存储介质。
技术介绍
随着互联网技术的发展,基于互联网技术的电子投票应用在越来越多的场景中,例如上市公司召开年度股东大会、民主选举等场景。借助互联网技术为投票效率的提升带来巨大的帮助,同时也大大节约了投票活动的成本。然而传统电子投票系统使用中心化服务器来实现投票统计,很难同时确保隐私性以及可验证性,在可验证性方面,传统电子投票系统由中心机构管控,投票结果由电子投票系统汇总发布,投票账户对于投票结果生成的过程不了解,也无法验证投票结果的正确性。中心机构的工作人员有篡改数据的能力,易造成暗箱操作。投票记录与统计结果由中心服务器处理,公示的投票结果需要依靠中心机构的信用背书来保证真实性,无法验证投票的正确性,难以让公众信服。并且,传统模式投票结果的发布依赖人工干预,无法确保投票者信息的保密性。目前虽然也有区块链技术应用在投票中,但是多数都是在投票环节采用区块链技术,保护了投票者的隐私,但是在最终的计票阶段,是投票组织者将投票密文解密得到投票结果,但各投票方无法验证投票发起方公布的投票结果是否正确,这无法保证投票的公正性,而截至目前,暂未有公开的解决方案。
技术实现思路
为解决以上技术问题,本专利技术提供一种基于区块链的电子投票方法,包括以下步骤:创建投票账户:在区块链上创建投票箱账户以及多个投票账户,其中,投票箱账户包括账户余额为0的支持账户和反对账户,任一投票账户i的余额为投票账户i拥有的投票权重ai,i=1至n;发起投票并上传至区块链:任一投票账户i同时发起两笔交易Ti1和Ti2,其中,Ti1交易将所有的投票权重投给投票箱账户中的一个账户,而Ti2交易向投票箱账户中的另一个账户投0票,其中,所述两笔交易采用佩德森承诺格式,并使用椭圆曲线加密算法形成交易的密文Ti1=ai*G+x_tia*H,和Ti2=0*G+x_tir*H,其中,G和H是椭圆曲线上设定的点,且满足H=h*G,h为私钥,其中,x_tia表示投票账户i支持的盲因子;x_tir表示投票账户i反对的盲因子;从而得到支持账户的余额的密文AP=ap*G+xp*H;反对账户的余额的密文RP=ar*G+xr*H;其中,a1、a2、…am表示投票账户1、2、…m投支持票的投票权重,ap=(a1+a2+...+am)表示支持账户的余额的明文,m表示有m个投票账户投支持票;am+1、…、an表示投票账户m+1、…、n投反对票的投票权重,ar=(am+1+...+an)表示反对账户的余额的明文,xp=(x_t1a+x_t2a+...+x_tma+x_t(m+1)r+...x_tnr),xp表示m个支持盲因子与n-m个反对盲因子的和;xr=(x_t1r+x_t2r+...+x_tmr+x_t(m+1)a+...x_tna),xr表示m个反对盲因子与n-m个支持盲因子的和;验证投票:提供AP和RP大小关系的签名,并进行验证投票结果。本专利技术还提供一种电子装置,该电子装置包括:存储器和处理器,所述存储器中存储有基于区块链的电子投票程序,所述基于区块链的电子投票程序被所述处理器执行时实现如上所述的基于区块链的电子投票方法。本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,实现如上所述的基于区块链的电子投票方法。本专利技术通过每个投票人同时向支持账户和反对账户投票,实现了一种混淆状态下的电子投票方法,利用椭圆曲线加密方法,对投票信息进行加密,确保投票信息的保密性。采用ECDSA算法、RangeProof算法验证投票结果,确保投票结果的可验证性。附图说明通过结合下面附图对其实施例进行描述,本专利技术的上述特征和技术优点将会变得更加清楚和容易理解。图1是表示本专利技术第一实施例的基于区块链的电子投票方法的步骤示意图;图2是表示本专利技术的电子装置的硬件架构示意图;图3是表示本专利技术实施例的基于区块链的电子投票程序的流程示意图。具体实施方式下面将参考附图来描述本专利技术所述的基于区块链的电子投票方法、装置及存储介质的实施例。本领域的普通技术人员可以认识到,在不偏离本专利技术的精神和范围的情况下,可以用各种不同的方式或其组合对所描述的实施例进行修正。因此,附图和描述在本质上是说明性的,而不是用于限制权利要求的保护范围。此外,在本说明书中,附图未按比例画出,并且相同的附图标记表示相同的部分。一种基于区块链的电子投票方法,包括以下步骤:步骤S1,创建投票账户:在区块链上创建两个投票箱账户以及多个投票账户,其中,投票箱账户代表投票发起方,投票箱账户包括支持账户、反对账户,其中的账户余额均为0。任一投票账户余额为投票账户i拥有的投票权重ai,i=1至n。例如投票账户1在区块链上创建自己的投票账户VP1,其中的账户余额为该投票账户拥有的投票权重a1;投票账户2在区块链上的投票账户为VP2,账户余额为该投票账户拥有的投票权重a2,以此类推。其中,区块链采用KV数据库,创建账户就是在区块链上创建一个KV的键值对。比如:投票发起方在区块链上创建支持账户,账户的Key为AP,账户的Value为一个结构体,比如:struct{AccountPubKey;//账户的公钥;Balance;//账户余额的PerdesenCommitment(佩德森承诺);TxList;//该账户相关的交易列表}。步骤S2,发起投票并上传至区块链:任一投票账户i通过其投票账户同时发起两笔交易Ti1和Ti2,其中,Ti1交易将所有的投票权重全部投给投票箱账户中的一个账户,而Ti2交易向投票箱账户中的另一个账户投0票。从而混淆投票的过程,防止第三方从投票的动作上猜测投的是支持票还是反对票。其中,两笔交易都采用PerdesenCommitment格式,PerdesenCommitment格式具有同态加密的性质,即:E(a1+a2)=E(a1)+E(a2),这里的E为PerdesenCommitment加密。并使用椭圆曲线加密算法形成交易的密文为Ti1=ai*G+x_tia*H,和Ti2=0*G+x_tir*H,其中,G和H点是椭圆曲线上设定的点,且满足H=h*G,h为私钥,由于H=h*G满足离散对数难题的性质,即已知h点求H是容易的,但是从H点求h是困难的(仅能通过暴力破解,而暴力破解需要数百亿年的时间)。该h点是不公开的,即除了该投票账户,所有的业务方都不能获知私钥h;其中,x_tia表示投票账户i支持的盲因子,为随机数,通过该盲因子混淆每次加密的结果,保证了Ti1的加密结果不可破解;x_tir也是随机数,表示投票账户i反对的盲因子;将各个投票账户投到支持账户和反对账户的余额统本文档来自技高网...

【技术保护点】
1.一种基于区块链的电子投票方法,其特征在于,包括以下步骤:/n创建投票账户:在区块链上创建投票箱账户以及多个投票账户,其中,投票箱账户包括账户余额为0的支持账户和反对账户,任一投票账户i的余额为投票账户i拥有的投票权重a

【技术特征摘要】
1.一种基于区块链的电子投票方法,其特征在于,包括以下步骤:
创建投票账户:在区块链上创建投票箱账户以及多个投票账户,其中,投票箱账户包括账户余额为0的支持账户和反对账户,任一投票账户i的余额为投票账户i拥有的投票权重ai,i=1至n;
发起投票并上传至区块链:任一投票账户i同时发起两笔交易Ti1和Ti2,其中,Ti1交易将所有的投票权重投给投票箱账户中的一个账户,而Ti2交易向投票箱账户中的另一个账户投0票,其中,所述两笔交易采用佩德森承诺格式,并使用椭圆曲线加密算法形成交易的密文Ti1=ai*G+x_tia*H,和Ti2=0*G+x_tir*H,
其中,G和H是椭圆曲线上设定的点,且满足H=h*G,h为私钥,
其中,x_tia表示投票账户i支持的盲因子;
x_tir表示投票账户i反对的盲因子;
从而得到支持账户的余额的密文AP=ap*G+xp*H;
反对账户的余额的密文RP=ar*G+xr*H;
其中,a1、a2、…am表示投票账户1、2、…m投支持票的投票权重,ap=(a1+a2+...+am)表示支持账户的余额的明文,m表示有m个投票账户投支持票;
am+1、…、an表示投票账户m+1、…、n投反对票的投票权重,ar=(am+1+...+an)表示反对账户的余额的明文,
xp=(x_t1a+x_t2a+...+x_tma+x_t(m+1)r+...x_tnr),xp表示m个支持盲因子与n-m个反对盲因子的和;
xr=(x_t1r+x_t2r+...+x_tmr+x_t(m+1)a+...x_tna),xr表示m个反对盲因子与n-m个支持盲因子的和;
验证投票:提供AP和RP大小关系的签名,并进行验证投票结果。


2.根据权利要求1所述的基于区块链的电子投票方法,其特征在于,在所述验证投票的过程中,如果ap=ar成立,则按以下步骤进行验证,
投票箱账户计算xp-xr作为私钥,并利用该私钥对票数消息ap=ar进行椭圆曲线数字签名,得到签名结果sig1;
投票箱账户将签名结果sig1发送到区块链上;
任一投票账户运算Diff1=AP–RP作为公钥;
使用Diff1和Sig1进行ECDSA验签,如果验签结果通过,则说明AP=RP。


3.根据权利要求1所述的基于区块链的电子投票方法,其特征在于,验证投票过程中,如果ap>ar,则按以下步骤进行验证,
投票箱账户计算ap-ar-1和xp-xr,并计算票数消息ap-ar-1≥0的范围证明签名Sig2;
投票箱账户将范围证明签名结果sig2发送到区块链上;
投票账户运算Diff2=AP–RP–G;
使用Diff2和Sig2进行范围证明验签,如果验签结果通过,则说明AP>RP。


4.根据权利要求1所述的基于区块链的电子投票方法,其特征在于,
验证投票过程中,如果ap<ar,则按以下步骤进行验证,
投票箱账户计算ar-ap-1和xr-xp,并计算票数消息ar-ap-1≥0的范围证明签名Sig3;
投票箱账户将范围证明签名结果sig3发送到区块链上;
运算Diff3=RP–AP–G;
投票账户使用Diff3和Sig3进行范围证明验签,如果验签结果通过,则说明RP>AP。


5.根据权利要求1所述的基于区块链的电子投票方法,其特征在于,
创建投票账户过程中,投票箱账户采用KV数据库创建KV键值对在区...

【专利技术属性】
技术研发人员:张宝谢丹力王梦寒朱斌贾牧褚镇飞刘恩科
申请(专利权)人:深圳壹账通智能科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1