一种基于区块链去中心化的投票的方法和系统与流程

文档序号:31723609发布日期:2022-10-04 23:57阅读:324来源:国知局
一种基于区块链去中心化的投票的方法和系统与流程

1.本发明涉及区块链技术领域,具体为一种基于区块链去中心化的投票的方法和系统。


背景技术:

2.区块链(blockchain),就是一个又一个区块组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。这些服务器在区块链系统中被称为节点,它们为整个区块链系统提供存储空间和算力支持。如果要修改区块链中的信息,必须征得半数以上节点的同意并修改所有节点中的信息,而这些节点通常掌握在不同的主体手中,因此篡改区块链中的信息是一件极其困难的事。相比于传统的网络,区块链具有两大核心特点:数据不可篡改和去中心化。
3.智能合约(smartcontract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
4.公私钥指的是公钥(publickey)与私钥(privatekey),是通过加密算法得到的一个密钥对(即一个公钥和一个私钥,也就是非对称加密方式)。公钥可对会话进行加密、验证数字签名,只有使用对应的私钥才能解密会话数据,从而保证数据传输的安全性。公钥是密钥对外公开的部分,私钥则是非公开的部分。
5.在名称为:一种电子投票系统、申请公布号:cn110400410a、申请公布日:2019-11-01的中国发明中,采用只部署在一个区块链上,提供了额外的公私钥对进行隐私保护,设计了投票服务器独立部署于区块链,使用区块链做分布式存储,设计了更安全的加密算法,更好的保证了数据的安全性;但是,只部署在一个区块链上,扩展性较差,投票服务器独立部署于区块链,本质上还是中心化,只是投票数据去中心化,投票行为没有去中心化,定义投票和发起投票不支持分离,有形成既得利益者的可能,系统的公平公正性有漏洞。
6.在名称为:一种基于区块链的隐私保护电子投票方法及系统、申请公布号:cn110427772b、申请公布日:2021-04-13的中国发明中,采用只部署在一个区块链上,根据投票规则建立多个投票节点和验证节点,生成多个投票密钥和对应的同态加密算法,在投票节点之间分享密钥,使用同态加密算法进行投票,并将结果发送到验证节点,验证节点根据同态加密算法,解密投票结果;但是,只部署在一个区块链上,扩展性较差,使用同态加密算法进行投票,对投票节点加入了额外的工作负担,定义投票和发起投票不支持分离,有形成既得利益者的可能,系统的公平公正性有漏洞。


技术实现要素:

7.(一)解决的技术问题
8.针对现有技术的不足,本发明提供了一种基于区块链去中心化的投票的方法和系
统,解决了只部署在一个区块链上,扩展性较差,投票行为没有去中心化,定义投票和发起投票不支持分离,有形成既得利益者的可能,系统的公平公正性有漏洞的问题。
9.(二)技术方案
10.本发明为了实现上述目的具体采用以下技术方案:
11.一种基于区块链去中心化的投票的方法,包括如下步骤:
12.s1、定义投票:投票定义用户a提供一个投票模块b、同时公开投票模块b的投票规则c,投票定义用户a向数据区块链部署投票模块b,拿到投票模块的地址d,同时在权限区块链上设置投票模块b的权限e,并用投票模块的地址d作为标识,投票模块b对外提供数据;
13.s2、发起投票:投票发起用户a1定义了投票用户的角色列表b1,以及角色列表b1中的各个角色能关联哪些权限,并指定哪些用户具备角色,从而允许他们参与领票;
14.s3、领票:发起投票后,投票用户at向投票模块b领票;
15.s4、投票:投票验证后进行投票,投票结果记录r都需要保存在投票模块b中,投票结果记录r在计票过程中是否可见由投票定义决定,若投票定义了计票过程可见,那么就可以推断出投票用户at和投票记录r的关系,若投票定义了计票过程不可见,那么只有超过了投票模块b的投票时效后,才能通过api查看投票的统计结果n。
16.进一步地,所述投票模块b为以太坊区块链上的一个智能合约,且投票模块b对外提供的数据包括但不限于:1、投票的名称,2、投票的说明,3、投票模块的地址d,4、投票的时效,5、投票类型,6、投票形式;
17.投票模块b支持的功能包含但不限于:1、投普通票,2、投权重票,3、其它自定义的投票功能;
18.投票模块b的权限e提供的数据包含但不限于:1、权限名称,2、投票模块b的地址,3、投票的权重查询地址,4、权限的关键字;
19.投票模块b和投票模块b的权限e均上链到权限区块链。
20.进一步地,所述投票发起用户a1只能看到投票模块b对外提供的数据,不能看到投票模块的运行流程;
21.投票发起用户a1指定每个参与领票用户的角色;
22.角色列表b1和投票用户角色关联关系上链到角色区块链。
23.进一步地,所述领到的票p的属性包含但不限于:1、投票的名称,2、投票的时效,3、投票类型,4、投票形式,5、投票模块b的公钥,6、投票模块b的签名,7、票的标识;
24.投票用户at在领完票后,可以自己投票,也可以转给其它用户投票。
25.进一步地,所述投票验证方式有两种模式:1、按角色验证,2、按票验证;
26.所述按角色验证流程如下:投票用户at向投票模块b进行投票,附带功能关键字k,投票模块b收到投票请求后,先向角色区块链检查投票用户at是否具备投票模块b的投票角色,再向权限区块链检查投票用户at是否具备投票模块b的投票权限e,最后检查投票用户at附带的功能关键字k是否在投票模块b的投票权限e定义的范围内;
27.按票验证流程如下:投票用户at可以将票p转移给任意用户,任意用户将领到的票p加上使用投票模块b的公钥加密的投票结果s,一起发到投票模块b进行投票,附带功能关键字k,投票模块b收到投票请求后,验证票p中的投票模块b的签名是否本模块的签名,认证通过后,解密其加密的投票结果s,并被成功计票。
28.投票结果记录r都需要保存在投票模块b中。投票结果记录r在计票过程中是否可见由投票定义决定。若投票定义了计票过程可见,那么就可以推断出投票用户at和投票记录r的关系。若投票定义了计票过程不可见,那么只有超过了投票模块b的投票时效后,才能通过api查看投票的统计结果n。
29.用于投票方法的系统,所述投票系统由定义投票、发起投票、领票和投票组成。
30.进一步地,所述定义投票、发起投票、投票分别由不同的角色来完成;
31.其中:定义投票的角色只决定投票规则,不决定谁来投票;
32.发起投票的角色只指定谁能投票,不定义投票规则;
33.投票的角色只参与投票,不定义投票规则和指定哪些人能投票;
34.角色区块链和权限区块链支持部署在相同的区块链上,也支持部署在不同的区块链上;
35.部署在不同的区块链上工作流模块需要通过常用的跨链方式访问角色权限数据。
36.(三)有益效果
37.与现有技术相比,本发明提供了一种基于区块链去中心化的投票的方法和系统,具备以下有益效果:
38.本发明,通过投票活动分成了四个部分(定义、发起、领票和投票),并公开投票关键信息,保证了投票的公平公正,投票活动所有数据都上链,保证了投票的有效性,严谨性,投票的权重不由投票活动本身决定,保证了投票系统的灵活性,采用三个区块链进行投票活动,真正的去中心化,增加了系统的可扩展性,提供了两种认证模式:按角色认证和按票认证,更好的保护了用户隐私。
附图说明
39.图1为本发明投票系统整体流程;
40.图2为本发明投票系统示意图。
具体实施方式
41.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.实施例
43.如图1和图2所示,本发明一个实施例提出的:一种基于区块链去中心化的投票的方法,包括如下步骤:
44.s1、定义投票:投票定义用户a提供一个投票模块b(投票模块b为以太坊区块链上的一个智能合约)、同时公开投票模块b的投票规则c,在公开投票规则c时,不能只发布二进制程序,投票定义用户a向数据区块链部署投票模块b,拿到投票模块的地址d,同时在权限区块链上设置投票模块b的权限e,并用投票模块的地址d作为标识,投票模块b对外提供数据;
45.投票模块b对外提供的数据包含但不限于:1、投票的名称,2、投票的说明,3、投票
模块的地址d,4、投票的时效,5、投票类型(投票类型分为两种:公开、隐私),6、投票形式(投票形式分为两种:记名投票,不记名投票);
46.投票模块b支持的功能包含但不限于:1、投普通票(一次一票),2、投权重票(根据权重占比投票),3、其它自定义的投票功能;
47.投票模块b的权限e提供的数据包含但不限于:1、权限名称,2、投票模块b的地址,3、投票的权重查询地址,4、权限的关键字(投票模块b用于判断能执行哪些功能);
48.投票模块b和投票模块b的权限e均上链到权限区块链;
49.s2、发起投票:投票发起用户a1定义了投票用户的角色列表b1,以及角色列表b1中的各个角色能关联哪些权限,并指定哪些用户具备角色,从而允许他们参与领票;
50.投票发起用户a1只能看到投票模块b对外提供的数据,不能看到投票模块的运行流程;
51.投票发起用户a1指定每个参与领票用户的角色,例如:指定投票用户a2在投票模块的地址d上的投票角色为r1,投票角色r1只能投普通票;
52.角色列表b1和投票用户角色关联关系上链到角色区块链;
53.s3、领票:发起投票后,投票用户at向投票模块b领票;
54.领到的票p的属性包含但不限于:1、投票的名称,2、投票的时效,3、投票类型(投票类型分为两种:公开、隐私),4、投票形式(投票形式分为两种:记名投票,不记名投票),5、投票模块b的公钥,6、投票模块b的签名,7、票的标识;
55.投票用户at在领完票后,可以自己投票,也可以转给其它用户投票;
56.s4、投票:投票验证后进行投票,投票验证方式有两种模式:1、按角色验证,2、按票验证;
57.按角色验证流程如下:投票用户at向投票模块b进行投票,附带功能关键字k,投票模块b收到投票请求后,先向角色区块链检查投票用户at是否具备投票模块b的投票角色,再向权限区块链检查投票用户at是否具备投票模块b的投票权限e,最后检查投票用户at附带的功能关键字k是否在投票模块b的投票权限e定义的范围内,投票用户at必须具备投票角色,也具备投票权限e,同时功能关键字k必须在投票权限e定义的范围内,其投票才能成功,并被成功计票;
58.按票验证流程如下:投票用户at可以将票p转移给任意用户,任意用户将领到的票p加上使用投票模块b的公钥加密的投票结果s,一起发到投票模块b进行投票,附带功能关键字k,投票模块b收到投票请求后,验证票p中的投票模块b的签名是否本模块的签名,认证通过后,解密其加密的投票结果s,并被成功计票,同一个票的标识只能生效最先收到的一个票p;
59.投票结果记录r都需要保存在投票模块b中,投票结果记录r在计票过程中是否可见由投票定义决定,若投票定义了计票过程可见,那么就可以推断出投票用户at和投票记录r的关系,若投票定义了计票过程不可见,那么只有超过了投票模块b的投票时效后,才能通过api查看投票的统计结果n;
60.其中,公开的投票中,投票结果可以被任何用户查看;
61.隐私的投票中,投票结果也必须只能被具备对应权限的用户查看;
62.权限管理办法同发起投票中的投票权限管理办法。
63.记名投票中,投票用户at必须将自己用户地址和投票结果都提交到投票模块b,投票模块b将投票用户at的地址和投票结果都保存下来,查看记名投票的每一票的结果需要通过角色权限验证;
64.不记名投票中,投票用户at只需要将投票结果都提交到投票模块b,不需要将自己用户地址提交。
65.用于投票方法的系统,投票系统由定义投票、发起投票、领票和投票组成,定义投票、发起投票、投票分别由不同的角色来完成;
66.其中:在某些场景下,发起投票和定义投票的用户也是可以参与投票的,为了达到公平公正的投票结果,建议将定义投票、发起投票、投票分别由不同的角色来完成;定义投票的角色建议只决定投票规则,不决定谁来投票;发起投票的角色建议只指定谁能投票,不定义投票规则;投票的角色建议只参与投票,不定义投票规则和指定哪些人能投票;
67.为了保障角色权限定义的安全性和多链接入不同工作流模块的可扩展,角色区块链、权限区块链,这两个用于访问控制的区块链和工作流模块运行的业务区块链支持部署在相同的区块链上,也支持部署在不同的区块链上;部署在不同的区块链上工作流模块需要通过常用的跨链方式访问角色权限数据。
68.最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1