面向区块链治理的链上投票方法、装置、电子设备及介质



1.本技术涉及区块链技术领域,特别涉及一种面向区块链治理的链上投票方法、装置、电子设备及介质。


背景技术:



2.为使区块链治理以一种去中心化的方式进行,链上投票是目前区块链系统开展链上治理的主要方式,但这种投票方式不存在可信第三方,需要解决一系列安全问题。
3.针对去中心化网络,相关技术中提出一种投票方案,该方案是自计票的,同时对投票者隐私提供了最大程度的保护并且投票结果可验证,但随着投票规模增加,每个投票者的算力负载也线性增加;相关技术中又提出了一种新的方案,虽然降低了投票者的计算复杂度,但是投票的轮数也随之增加。
4.在此基础之上,相关技术中还提出了一种开放投票网络,同时兼顾了投票效率和投票节点的计算复杂度。开放投票网络是一个基于组的加密投票方案,不需要可信第三方参与,具有去中心化、隐私保护、自计票等特点。开放投票网络由四个算法组成,分别是gset,ggen,gvote和gtally。根据gset算法在初始阶段设置好投票相关参数,然后参与投票的用户运行ggen算法生成投票的密钥,在投票时运行gvote算法和gtally算法分别用于投票和计票。
5.假设有n名用户v1,v2,

,vn参与投票过程,开放投票网络的具体算法描述如下:
6.一、设置投票参数gset():
7.1.生成投票相关参数其中是一个阶为q的循环,生成元为g;
8.2.输出参数
9.二、密钥生成ggen(param):
10.1.每个用户vi选择私钥计算作为公钥并公开pki;
11.2.当所有用户都公开公钥后,计算yi=∏
j<i
pkj/∏
j>i
pkj;
12.3.输出{yi},{pki}。
13.三、投票gvote(param,ski,yi,vi):
14.1.每个用户加密选票并公开ci,其中vi∈{0,1};
15.2.输出{ci}。
16.四、计票gtally(param,ci):
17.1.任何一个可以获取投票数据的用户都可以计算∏
ici
并对其使用枚举算法求解离散对数,从而得到得票之和s;
18.2.输出s
19.开放投票网络存在的主要问题在于健壮性问题和成本问题。由于开放投票网络自身的限制,由于开放投票网络自身的限制,如果有用户中途退出投票过程,计票过程将无法进行。一种解决办法是采用押金机制,用户参与投票时需要缴纳一定的押金,只有正确参与
投票的用户才能在投票结束后收回押金,否则押金将被扣留,但押金机制只能在一定程度上缓解该问题,如果有用户攻击投票的收益高于押金,攻击仍然会进行。开放投票网络存在的另一个问题是成本问题,因此,在以太坊上实施时,由于所有的计算都放在链上进行,投票成本很高,而且区块的容量极大地限制了投票的规模,最多只能容纳40个人的小型投票。以一种可以检验的方式将这些复杂的计算转移至链下,由一名不需要信任的管理者来进行计算,在保证投票安全性的前提下,降低投票成本,对于开放投票网络的健壮性问题采用押金机制。
20.因此,相关技术中的开放投票网络的方法,具体存在以下几个问题:
21.1、链上投票成本高。目前大多区块链链上治理采用投票的方式进行,而区块链的链上计算与存储成本高昂,如果将所有的计算与存储都转移至链上将会导致投票成本高,投票难以大规模展开,阻碍区块链治理。
22.2、链上投票安全性不够。虽然区块链具有匿名性的特点,但在区块链上的交易仍然需要保持隐秘,针对区块链治理中的投票而言,投票时需要加密保护投票者的选票,防止选票信息泄露,避免有人跟风投票或者提前计算投票结果,阻碍投票的正常进行。此外,链上投票是以一种去中心化的方式进行,不存在可信任的第三方监管投票过程。
23.3、链上投票方案的健壮性不高。由于开放投票网络自身的限制,如果有用户中途退出投票过程,计票过程将无法进行。


技术实现要素:



24.本技术提供一种面向区块链治理的链上投票方法、装置、电子设备及介质,解决了区块链链上投票存在成本高和安全性不够的等问题,降低了链上投票成本,提高了链上投票的安全性,确保投票顺利进行。
25.本技术第一方面实施例提供一种面向区块链治理的链上投票方法,包括以下步骤:获取满足预设投票资格的投票用户,并基于预设的私钥生成所述投票用户的投票公钥,利用预设的智能合约验证所述投票公钥、schnorr零知识证明、merkle树的资格证明;验证通过后,生成所述投票用户的加密投票,并存储至所述预设的智能合约,判断所述投票用户中是否存在放弃投票用户;若所述投票用户中不存在所述放弃投票用户,则统计所述预设的智能合约上的加密投票,并将计票结果存储至所述预设的智能合约中,且将所述计票结果的中间计算结果以所述merkle树的结构存储并公布,以在所述投票用户均同意时,将所述计票结果作为最终投票结果。
26.可选地,在判断所述投票用户中是否存在所述放弃投票用户之后,还包括:若所述投票用户中存在所述放弃投票用户,则获取由正确执行投票协议的投票者的协商结果;基于所述协商结果,继续执行投票动作。
27.可选地,在将所述计票结果的中间计算结果以所述merkle树的结构存储并公布之后,还包括:若所述投票用户中存在一个或多个未同意时,则根据所述merkle树的数据向所述预设的智能合约提出质疑,由所述预设的智能合约进行验证。
28.可选地,在获取满足所述预设投票资格的投票用户之前,还包括:初始化当前投票的运行参数,并部署所述预设的智能合约;根据满足预设投票条件的投票用户的地址构建所述merkle树。
29.可选地,在获取满足所述预设投票资格的投票用户之后,还包括:获取所述投票用户的投票押金。
30.可选地,在将所述计票结果作为最终投票结果之后,还包括:若所述投票用户的投票过程满足预设投票条件,则基于所述预设的智能合约将所述投票押金发送至对应的投票用户。
31.本技术第二方面实施例提供一种面向区块链治理的链上投票装置,包括:获取模块,用于获取满足预设投票资格的投票用户,并基于预设的私钥生成所述投票用户的投票公钥,利用预设的智能合约验证所述投票公钥、schnorr零知识证明、merkle树的资格证明;判断模块,用于验证通过后,生成所述投票用户的加密投票,并存储至所述预设的智能合约,判断所述投票用户中是否存在放弃投票用户;投票模块,用于若所述投票用户中不存在所述放弃投票用户,则统计所述预设的智能合约上的加密投票,并将计票结果存储至所述预设的智能合约中,且将所述计票结果的中间计算结果以所述merkle树的结构存储并公布,以在所述投票用户均同意时,将所述计票结果作为最终投票结果。
32.可选地,在判断所述投票用户中是否存在所述放弃投票用户之后,所述判断模块,具体用于:若所述投票用户中存在所述放弃投票用户,则获取由正确执行投票协议的投票者的协商结果;基于所述协商结果,继续执行投票动作。
33.可选地,在将所述计票结果的中间计算结果以所述merkle树的结构存储并公布之后,所述投票模块,具体用于:若所述投票用户中存在一个或多个未同意时,则根据所述merkle树的数据向所述预设的智能合约提出质疑,由所述预设的智能合约进行验证。
34.可选地,在获取满足所述预设投票资格的投票用户之前,所述获取模块,具体用于:初始化当前投票的运行参数,并部署所述预设的智能合约;根据满足预设投票条件的投票用户的地址构建所述merkle树。
35.可选地,在获取满足所述预设投票资格的投票用户之后,所述获取模块,还用于:获取所述投票用户的投票押金。
36.可选地,在将所述计票结果作为最终投票结果之后,所投票模块,还用于:若所述投票用户的投票过程满足预设投票条件,则基于所述预设的智能合约将所述投票押金发送至对应的投票用户。
37.本技术第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的面向区块链治理的链上投票方法。
38.本技术第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现如上述实施例所述的面向区块链治理的链上投票方法。
39.本技术通过获取满足预设投票资格的投票用户,并基于预设的私钥生成投票用户的投票公钥,利用预设的智能合约验证投票公钥、schnorr零知识证明、merkle树的资格证明,验证通过后,生成投票用户的加密投票,并存储至预设的智能合约,判断投票用户中是否存在放弃投票用户,若投票用户中不存在放弃投票用户,则统计预设的智能合约上的加密投票,并将计票结果存储至预设的智能合约中,且将计票结果的中间计算结果以merkle树的结构存储并公布,以在投票用户均同意时,将计票结果作为最终投票结果。由此,解决了区块链链上投票存在成本高和安全性不够的等问题,降低了链上投票成本,提高了链上
投票的安全性,确保投票顺利进行。
40.本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
41.本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
42.图1为根据本技术实施例提供的一种面向区块链治理的链上投票方法的流程图;
43.图2为根据本技术一个实施例的投票方案的流程图;
44.图3为根据本技术实施例的面向区块链治理的链上投票装置的方框示意图;
45.图4为本技术实施例提供的电子设备的结构示意图。
具体实施方式
46.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。
47.下面参考附图描述本技术实施例的面向区块链治理的链上投票方法、装置、电子设备及介质。针对上述背景技术中心提到的区块链链上投票存在成本高和安全性不够的问题,本技术提供了一种面向区块链治理的链上投票方法,在该方法中,获取满足预设投票资格的投票用户,并基于预设的私钥生成投票用户的投票公钥,利用预设的智能合约验证投票公钥、schnorr零知识证明、merkle树的资格证明;验证通过后,生成投票用户的加密投票,并存储至预设的智能合约,判断投票用户中是否存在放弃投票用户;若投票用户中不存在放弃投票用户,则统计预设的智能合约上的加密投票,并将计票结果存储至预设的智能合约中,且将计票结果的中间计算结果以merkle树的结构存储并公布,以在投票用户均同意时,将计票结果作为最终投票结果。由此,解决了区块链链上投票存在成本高和安全性不够的问题,降低了链上投票成本,提高了链上投票的安全性,确保投票顺利进行。
48.在描述具体面向区块链治理的链上投票方法前,需要先对一些相关概念与算法进行介绍。本技术实施例涉及到几种零知识证明算法,下面进行介绍。
49.一、非交互式schnorr协议
50.在开放投票网络的密钥生成阶段,每个用户需要公布公钥,为确保用户知道私钥,需要使用schnorr协议进行零知识证明。交互式schnorr协议是运转在证明者和验证者之间的交互式零知识证明协议,在不揭露私钥x的情况下,证明者可以向验证者证明对x的知情权。证明者与验证者之间需要交互三次,分为承诺阶段、挑战阶段和回应挑战阶段。在交互式schnorr协议的基础上应用fiat

shamir变换,可以使该协议无需交互。
51.假设是一个q阶循环,生成元为g,其中证明者需要向验证者证明知道离散对数x而不泄露,将该零知识证明协议记为zkpdl(g,a;x)。
52.1、证明者prover(x)的构造算法如下:
53.(1)随机选择
54.(2)z=gw55.(3)c=hash(z,a)
56.(4)r=w+c
·
x
57.(5)发送(z,r)
58.2、验证者verifier(z,r)的验证算法如下:
59.(1)计算c=hash(z,a)
60.(2)验证gr=z
·ac
61.(3)如果有一项验证失败,则拒绝,否则接受。
62.二、离散对数相等证明
63.本技术实施例具体设计时加入了复原阶段用于防止有人放弃参与而影响投票的整个进程,其中需要重新构建投票的公钥,并确保前后两次投票所用私钥均相同,即离散对数相等。
64.假设是一个q阶循环,g和h为该循环两个不同的生成元,是一个q阶循环,g和h为该循环两个不同的生成元,其中证明者需要向验证者证明a,b的离散对数相同而不泄露x,将该零知识证明协议记为eqdl(g,a,h,b;x)。
65.1、证明者prover(x)的构造算法如下:
66.(1)随机选择
67.(2)z1=gw,z2=hw68.(3)c=hash(z1,z2)
69.(4)r=w+c
·
x
70.(5)发送(z1,z2,r)
71.2、验证者verifier(z1,z2,r)的验证算法如下:
72.(1)计算c=hash(z1,z2)
73.(2)验证gr=z1·ac
,hr=z2·bc
74.(3)如果有一项验证失败,则拒绝,否则接受。
75.三、加密投票有效性证明
76.按照开放投票网络中定义,每个投票者需要提供一个零知识证明来证明投票构造格式正确,即v∈{0,1}。本技术实施例可以采用零知识证明方法,通过将看作公钥并使用前面已经公布的构造
[0077][0078]
这相当于是对g或者1使用公钥和随机值xi进行elgamal加密,即通过使用或运算进行验证,说明m0=1或m1=g。
[0079]
(loggx=logh(y/m0))∨(loggx=loghy/m1)
[0080]
记此协议为zkpv(g,x,y,h;v)。证明者的零知识证明构造由v确定,但形式是相同的,验证者无法发现。验证者对证明的验证算法相同。
[0081]
特别地,
[0082]
1、当v=0时,构造零知识prover(v)证明算法如下:
[0083]
(1)随机选择
[0084]
(2)a1=gw,b1=hw,
[0085]
(3)c=hash(x,y,a1,b1,a2,b2);
[0086]
(4)d1=c-d2,r1=w-xi·
d1;
[0087]
(5)发送(a1,a2,b1,b2,d1,d2,r1,r2)。
[0088]
2、当v=1时,构造零知识prover(v)证明算法如下:
[0089]
(1)随机选择
[0090]
(2)a2=gw,b2=hw;
[0091]
(3)c=hash(x,y,a1,b1,a2,b2);
[0092]
(4)d2=c-d1,r2=w-xi·
d2;
[0093]
(5)发送(a1,a2,b1,b2,d1,d2,r1,r2)。
[0094]
3、验证者verifier(a1,a2,b1,b2,d1,d2,r1,r2)的验证算法如下:
[0095]
(1)计算c=hash(x,y,a1,b1,a2,b2);
[0096]
(2)验证c=d1+d2,
[0097]
(3)如果有一项验证失败,则拒绝,否则接受。
[0098]
具体而言,图1为本技术实施例所提供的一种面向区块链治理的链上投票方法的流程图。
[0099]
如图1所示,该面向区块链治理的链上投票方法包括以下步骤:
[0100]
在步骤s101中,获取满足预设投票资格的投票用户,并基于预设的私钥生成投票用户的投票公钥,利用预设的智能合约验证投票公钥、schnorr零知识证明、merkle树的资格证明。
[0101]
可选地,在获取满足预设投票资格的投票用户之前,还包括:初始化当前投票的运行参数,并部署预设的智能合约;根据满足预设投票条件的投票用户的地址构建merkle树。
[0102]
可以理解的是,管理员需要设置投票方案的运行参数并部署相关合约,包括以及投票各个阶段的时间间隔,将有资格参与投票的社区成员地址将以merkle树的形式存储在ipfs系统上,记为mt
ε
,管理员同时也需要将mt
ε
的树根root
ε
在合约部署时初始化。
[0103]
可选地,在获取满足预设投票资格的投票用户之后,还包括:获取投票用户的投票押金。
[0104]
具体地,如表1所示,投票者需要交出一定押金并提交相关的资格证明与公钥,由智能合约验证并存储,对于有资格参与投票的成员,首先需要选定私钥并生成投票公钥,将公钥和schnorr零知识证明π
x
以及merkle树的资格证明π
voter
发送给智能合约,同时质押一定数量的防止恶意破坏投票进程。智能合约在接受交易后对π
x
和π
voter
进行验证。在开放投票网络中,每个投票者需要设定一个编号用于计算yi,在具体实施中,本技术实施例可以以投票者存储在智能合约中的数组索引作为投票者的编号。
[0105]
表1
[0106][0107]
在步骤s102中,验证通过后,生成投票用户的加密投票,并存储至预设的智能合约,判断投票用户中是否存在放弃投票用户。
[0108]
在加密投票阶段,投票者需要根据所有投票者提交的公钥计算出投票公钥,并对选票加密并提交。
[0109]
具体地,如表2所示,在投票公钥注册后,生成投票者的加密投票。若投票者的投票公钥存储在数组中索引为i的位置,则需要计算:
[0110][0111]
投票者对选择v加密为然后向智能合约发送一个交易包含c,yi和证明c有效性的零知识证明πv。智能合约在收到交易后进行验证,如果πv验证正确,则会将其存储在智能合约中。
[0112]
表2
[0113][0114]
可选地,在判断投票用户中是否存在放弃投票用户之后,还包括:若投票用户中存在放弃投票用户,则获取由正确执行投票协议的投票者的协商结果;基于协商结果,继续执行投票动作。
[0115]
在投票阶段,如果有完成注册的投票者放弃投票,需要进入投票复原阶段,由正确执行投票协议的投票者再次协商,保证投票正常进行。
[0116]
具体地,开放投票网络需要完成身份注册的所有投票者都参与整个投票过程中,否则会影响投票正确进行。如果有完成注册的投票者中途放弃,则进入复原阶段确保投票顺利进行。
[0117]
在复原阶段,如表3所示,设提交有效投票的投票者集合为则剩下的投票者要么提交了无效选票,要么放弃参与投票。对于集合中的投票者需要执行下面的步骤,投票者需要计算
[0118][0119]
在计算出后,投票者需要将和离散对数相等证明发送给智能合约进行验证。该阶段相当于通过重新计算加密公钥将中途放弃的投票者排除在外,并且复原阶段的加入并不会影响计票过程的正常执行。
[0120]
表3
[0121][0122]
在步骤s103中,若投票用户中不存在放弃投票用户,则统计预设的智能合约上的加密投票,并将计票结果存储至预设的智能合约中,且将计票结果的中间计算结果以merkle树的结构存储并公布,以在投票用户均同意时,将计票结果作为最终投票结果。
[0123]
为降低链上的投票的成本,提高投票的效率和规模,该阶段以一种可验证的方式将计票委托给管理员进行链下计票。
[0124]
如表4所示,计算选票之和时,可以表示为逐步乘积的过程,如表5所示,该过程可以保留每一步中间结果用于验证管理员行为。
[0125]
表4
[0126][0127][0128]
进一步,管理员构建merkle树来存储每行的结果ti。管理员再通过枚举算法求解离散对数得到计票结果∑ivi=loggtn,最后管理员向智能合约发送merkle树根rootc和计票结果。
[0129]
表5
[0130][0131]
可选地,在将计票结果的中间计算结果以merkle树的结构存储并公布之后,还包括:若投票用户中存在一个或多个未同意时,则根据merkle树的数据向预设的智能合约提出质疑,由预设的智能合约进行验证。
[0132]
具体地,如表6所示,在投票者公布merkle树mtc,任何投票者或者其他人都可以验证每次迭代中间结果的正确性。比如管理员可能恶意设置ti=ci′
·
t
i-1
,那么该步之后的所有结果都会受到影响。其他人可以向智能合约发送i,ti,t
i-1
和merkle证明πi,π
i-1
来验证第i步中间结果是否正确,其中merkle证明用于确保ti,t
i-1
是存储在merkle树中的合法数据,智能合约将使用之前存储的选票信息验证该步是否出现问题。
[0133]
表6
[0134][0135][0136]
可选地,在将计票结果作为最终投票结果之后,还包括:若投票用户的投票过程满足预设投票条件,则基于预设的智能合约将投票押金发送至对应的投票用户。
[0137]
应当理解的是,在计票验证阶段结束后,每个正确执行投票协议的参与者都可以向智能合约发送一个交易来赎回质押的。如果发送者是投票者之一,智能合约会检查投票者是否提交过正确生成的加密投票,如果发送者是管理员,智能合约会检查在计票验证阶段,是否有用户对投票结果质疑成功。如果通过智能合约的检查,智能合约会将押金发送给交易的发送者。
[0138]
综上,如图2所示,本技术实施例分为七个阶段。第一阶段是初始化,管理员需要设置投票的相关参数并部署相关合约,将有资格参与投票的用户地址构建成一棵merkle树并公开。在注册身份阶段,投票者需要交出一定押金并提交资格证明与公钥,由智能合约验证并存储。在加密投票阶段,投票者需要根据所有投票者提交的公钥计算出投票公钥,对选票加密并提交。在投票阶段,如果有完成注册的投票者放弃投票,需要进入投票复原阶段,由正确执行投票协议的投票者再次协商,保证投票正常进行。在提交计票结果阶段,管理员获得存储在智能合约上的加密投票并计票,将计票结果存储在智能合约中并发布计票中间结果构成的merkle树,用于对计票结果进行验证。在验证计票阶段结果阶段,如果有用户质疑管理员的计票结果,可以根据merkle树的数据向智能合约提出质疑,由智能合约进行验证。在赎回押金阶段,如果用户与管理员正确执行投票过程,可以赎回押金。
[0139]
本技术实施例带来的有益效果:本技术实施例将部分复杂的链上计算以一种可验证的方式转移至链下,降低链上投票成本。智能合约仅负责对接收的交易数据进行验证,有效降低了计算的时间复杂性和成本复杂性。本技术实施例主要在注册、计票与验证三个阶段进行改进,在注册阶段,只需对收到的公钥进行验证与存储,而不需要计算所有投票者的投票公钥。在计票阶段,计票过程也不需要智能合约链上计算,而是交由管理员链下计算后提交给智能合约,大大降低了链上计算的复杂度,本技术实施例增加了验证阶段对计票结果进行验证,确保计票过程由管理员正确执行。此外,本技术实施例中还加入了复原阶段,如果有投票者中途退出,剩下的参与者可以执行复原阶段,进行密钥再协商,确保投票过程顺利进行。
[0140]
根据本技术实施例提出的面向区块链治理的链上投票方法,通过获取满足预设投票资格的投票用户,并基于预设的私钥生成投票用户的投票公钥,利用预设的智能合约验证投票公钥、schnorr零知识证明、merkle树的资格证明,验证通过后,生成投票用户的加密投票,并存储至预设的智能合约,判断投票用户中是否存在放弃投票用户,若投票用户中不存在放弃投票用户,则统计预设的智能合约上的加密投票,并将计票结果存储至预设的智能合约中,且将计票结果的中间计算结果以merkle树的结构存储并公布,以在投票用户均同意时,将计票结果作为最终投票结果。由此,解决了区块链链上投票存在成本高和安全性不够的问题,降低了链上投票成本,提高了链上投票的安全性,确保投票顺利进行。
[0141]
其次参照附图描述根据本技术实施例提出的面向区块链治理的链上投票装置。
[0142]
图3是本技术实施例的面向区块链治理的链上投票装置的方框示意图。
[0143]
如图3所示,该面向区块链治理的链上投票装置10包括:获取模块100、判断模块200和投票模块300。
[0144]
其中,获取模块100,用于获取满足预设投票资格的投票用户,并基于预设的私钥生成投票用户的投票公钥,利用预设的智能合约验证投票公钥、schnorr零知识证明、merkle树的资格证明;判断模块200,用于验证通过后,生成投票用户的加密投票,并存储至预设的智能合约,判断投票用户中是否存在放弃投票用户;投票模块300,用于若投票用户中不存在放弃投票用户,则统计预设的智能合约上的加密投票,并将计票结果存储至预设的智能合约中,且将计票结果的中间计算结果以merkle树的结构存储并公布,以在投票用户均同意时,将计票结果作为最终投票结果。
[0145]
可选地,在判断投票用户中是否存在放弃投票用户之后,判断模块200,具体用于:
若投票用户中存在放弃投票用户,则获取由正确执行投票协议的投票者的协商结果;基于协商结果,继续执行投票动作。
[0146]
可选地,在将计票结果的中间计算结果以merkle树的结构存储并公布之后,投票模块300,具体用于:若投票用户中存在一个或多个未同意时,则根据merkle树的数据向预设的智能合约提出质疑,由预设的智能合约进行验证。
[0147]
可选地,在获取满足预设投票资格的投票用户之前,获取模块100,具体用于:初始化当前投票的运行参数,并部署预设的智能合约;根据满足预设投票条件的投票用户的地址构建merkle树。
[0148]
可选地,在获取满足预设投票资格的投票用户之后,获取模块100,还用于:获取投票用户的投票押金。
[0149]
可选地,在将计票结果作为最终投票结果之后,投票模块300,还用于:若投票用户的投票过程满足预设投票条件,则基于预设的智能合约将投票押金发送至对应的投票用户。
[0150]
需要说明的是,前述对面向区块链治理的链上投票方法实施例的解释说明也适用于该实施例的面向区块链治理的链上投票装置,此处不再赘述。
[0151]
根据本技术实施例提出的面向区块链治理的链上投票装置,通过获取满足预设投票资格的投票用户,并基于预设的私钥生成投票用户的投票公钥,利用预设的智能合约验证投票公钥、schnorr零知识证明、merkle树的资格证明,验证通过后,生成投票用户的加密投票,并存储至预设的智能合约,判断投票用户中是否存在放弃投票用户,若投票用户中不存在放弃投票用户,则统计预设的智能合约上的加密投票,并将计票结果存储至预设的智能合约中,且将计票结果的中间计算结果以merkle树的结构存储并公布,以在投票用户均同意时,将计票结果作为最终投票结果。由此,解决了区块链链上投票存在成本高和安全性不够的问题,降低了链上投票成本,提高了链上投票的安全性,确保投票顺利进行。
[0152]
图4为本技术实施例提供的电子设备的结构示意图。该电子设备可以包括:
[0153]
存储器401、处理器402及存储在存储器401上并可在处理器402上运行的计算机程序。
[0154]
处理器402执行程序时实现上述实施例中提供的面向区块链治理的链上投票方法。
[0155]
进一步地,电子设备还包括:
[0156]
通信接口403,用于存储器401和处理器402之间的通信。
[0157]
存储器401,用于存放可在处理器402上运行的计算机程序。
[0158]
存储器401可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0159]
如果存储器401、处理器402和通信接口403独立实现,则通信接口403、存储器401和处理器402可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(industry standard architecture,简称为isa)总线、外部设备互连(peripheral component,简称为pci)总线或扩展工业标准体系结构(extended industry standard architecture,简称为eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0160]
可选的,在具体实现上,如果存储器401、处理器402及通信接口403,集成在一块芯片上实现,则存储器401、处理器402及通信接口403可以通过内部接口完成相互间的通信。
[0161]
处理器402可能是一个中央处理器(central processing unit,简称为cpu),或者是特定集成电路(application specific integrated circuit,简称为asic),或者是被配置成实施本技术实施例的一个或多个集成电路。
[0162]
本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的面向区块链治理的链上投票方法。
[0163]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或n个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0164]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“n个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0165]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更n个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
[0166]
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或n个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0167]
应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,n个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离
散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0168]
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0169]
此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0170]
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。

技术特征:


1.一种面向区块链治理的链上投票方法,其特征在于,包括以下步骤:获取满足预设投票资格的投票用户,并基于预设的私钥生成所述投票用户的投票公钥,利用预设的智能合约验证所述投票公钥、schnorr零知识证明、merkle树的资格证明;验证通过后,生成所述投票用户的加密投票,并存储至所述预设的智能合约,判断所述投票用户中是否存在放弃投票用户;以及若所述投票用户中不存在所述放弃投票用户,则统计所述预设的智能合约上的加密投票,并将计票结果存储至所述预设的智能合约中,且将所述计票结果的中间计算结果以所述merkle树的结构存储并公布,以在所述投票用户均同意时,将所述计票结果作为最终投票结果。2.根据权利要求1所述的方法,其特征在于,在判断所述投票用户中是否存在所述放弃投票用户之后,还包括:若所述投票用户中存在所述放弃投票用户,则获取由正确执行投票协议的投票者的协商结果;基于所述协商结果,继续执行投票动作。3.根据权利要求1所述的方法,其特征在于,在将所述计票结果的中间计算结果以所述merkle树的结构存储并公布之后,还包括:若所述投票用户中存在一个或多个未同意时,则根据所述merkle树的数据向所述预设的智能合约提出质疑,由所述预设的智能合约进行验证。4.根据权利要求1所述的方法,其特征在于,在获取满足所述预设投票资格的投票用户之前,还包括:初始化当前投票的运行参数,并部署所述预设的智能合约;根据满足预设投票条件的投票用户的地址构建所述merkle树。5.根据权利要求3所述的方法,其特征在于,在获取满足所述预设投票资格的投票用户之后,还包括:获取所述投票用户的投票押金。6.根据权利要求5所述的方法,其特征在于,在将所述计票结果作为最终投票结果之后,还包括:若所述投票用户的投票过程满足预设投票条件,则基于所述预设的智能合约将所述投票押金发送至对应的投票用户。7.一种面向区块链治理的链上投票装置,其特征在于,包括:获取模块,用于获取满足预设投票资格的投票用户,并基于预设的私钥生成所述投票用户的投票公钥,利用预设的智能合约验证所述投票公钥、schnorr零知识证明、merkle树的资格证明;判断模块,用于验证通过后,生成所述投票用户的加密投票,并存储至所述预设的智能合约,判断所述投票用户中是否存在放弃投票用户;以及投票模块,用于若所述投票用户中不存在所述放弃投票用户,则统计所述预设的智能合约上的加密投票,并将计票结果存储至所述预设的智能合约中,且将所述计票结果的中间计算结果以所述merkle树的结构存储并公布,以在所述投票用户均同意时,将所述计票结果作为最终投票结果。
8.根据权利要求7所述的装置,其特征在于,在判断所述投票用户中是否存在所述放弃投票用户之后,所述判断模块,具体用于:若所述投票用户中存在所述放弃投票用户,则获取由正确执行投票协议的投票者的协商结果;基于所述协商结果,继续执行投票动作。9.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-6任一项所述的面向区块链治理的链上投票方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1-6任一项所述的面向区块链治理的链上投票方法。

技术总结


本申请涉及一种面向区块链治理的链上投票方法、装置、电子设备及介质,包括:获取满足投票资格的投票用户,基于预设的私钥生成投票公钥,利用预设的智能合约验证投票公钥、Schnorr零知识证明、Merkle树的资格证明;验证通过后,生成投票用户的加密投票,存储至预设的智能合约,判断投票用户中是否存在放弃投票用户;若不存在放弃投票用户,统计预设的智能合约上的加密投票,将计票结果存储至预设的智能合约中,将中间计算结果以Merkle树的结构存储并公布,投票用户均同意时,计票结果为最终投票结果。由此,解决了区块链链上投票成本高和安全性低的问题,降低了链上投票成本,提高了链上投票的安全性,确保投票顺利进行。确保投票顺利进行。确保投票顺利进行。


技术研发人员:

伍前红 熊式鸿 范家良 王姝钦

受保护的技术使用者:

北京航空航天大学

技术研发日:

2022.11.09

技术公布日:

2023/3/7

本文发布于:2024-09-21 12:37:24,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/71077.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   用户   合约   智能
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议