登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 毕业论文 > 计算机类 > 软件工程 > 正文

一个基于区块链的投票软件设计与实现

 2023-01-18 09:01  

论文总字数:20818字

摘 要

随着时代的发展,传统的投票方式逐渐被电子投票所替代,而现有的一些投票系统,大多数是中心化的投票系统,其安全性、公开性无法得到保证,其篡改成本也很小,容易出现投票信息不真实,投票结果被人为操控等现象,严重影响投票的公平性,因此一个去中心化的投票软件是目前所需要的。

本文主要对基于区块链的投票软件的设计与实现进行了相对详细的阐述,值得注意的是,本系统在进行投票操作时,实际上是进行一次交易,而这个交易并不是马上被确认,而是等下一个区块出现后,才有可能把交易信息打包进去进行确认,当采用pow共识机制进行验证时,需要等待一段时间,因此不是实时更新,不过在投票场景下,这样的延迟是可以接受的。

本系统采用p2p网络,具备耐攻击和高容错等特点,在本系统中,由于投票信息分布在各个节点之间,而无需经过中心服务器,因此投票结果的真实性和公平性值得信赖,符合投票事件的要求。

关键词:区块链;电子投票;防篡改性;pow共识机制;p2p网络

Design and Implementation of A Voting Software Based on Blockchain

Abstract

With the development of the times, the traditional way of voting is gradually replaced by electronic voting. However, some existing voting systems, most of which are centralized voting systems, can not guarantee their security and openness, and the cost of tampering is very small. It is easy to appear the phenomenon that the voting information is not true, and the voting results are manipulated, which seriously affects the fairness of voting, Therefore, a decentralized voting software is needed at present.

This paper mainly describes the design and implementation of voting software based on blockchain in detail. It is worth noting that when the voting operation is carried out in this system, it is actually a transaction, and the transaction is not immediately confirmed, but after the next block appears, it is possible to package the transaction information for confirmation, When using POW consensus mechanism for verification, it needs to wait for a period of time, so it is not real-time update. However, in the voting scenario, such delay is acceptable.

In this system, because the voting information is distributed among the nodes, and does not need to go through the central server, so the authenticity and fairness of the voting results are reliable, in line with the requirements of voting events.

Key words: Blockchain,Electronic voting,Tamper proof,POW consensus mechanism,P2P network

目录

摘 要 Ⅰ

Abstract Ⅱ

第一章 引言 1

1.1 区块链技术 1

1.2 国内外研究现状 1

1.2.1 国外现状 1

1.2.2 国内现状 2

1.3 本章小结 2

第二章 基于区块链的投票软件关键技术 3

2.2 p2p网络 3

2.3 pow共识机制 3

2.4 本章小结 4

第三章 系统需求分析 5

3.1 系统功能需求分析 5

3.2 系统非功能需求分析 5

3.3 本章小结 5

第四章 系统设计 6

4.1 设计思路 6

4.2 投票系统的底层区块链设计流程 6

4.3 总体设计 7

4.3.1 系统总体设计 7

4.3.2 系统数据库模型 7

4.4详细设计 8

4.4.1 系统详细设计 8

4.4.2 数据库详细设计 9

4.4.3 前端界面的设计 10

4.5 本章小结 11

第五章 系统实现与测试 12

5.1 系统实现工具与环境 12

5.2 核心代码分析 12

5.2.1 区块结构类代码 12

5.2.2 区块链交易核心代码 12

5.2.3 投票按钮触发代码 14

5.2.4 挖矿核心代码 16

5.3 系统主要运行界面 18

5.3.1 登录界面 18

5.3.2 管理员主界面 18

5.3.3 添加投票主题界面 18

5.3.4 新增投票选项界面 19

5.3.5 投票人主界面 19

5.3.6 投票界面 20

5.3.7 投票结果界面 20

5.4 系统测试 21

5.4.1 系统测试环境与工具 21

5.4.2 系统功能测试 21

5.4.3 系统非功能测试 21

5.5 本章小结 21

第六章 总结与展望 22

6.1 总结 22

6.2 展望 22

致谢 23

参考文献 24

  1. 引言
    1. 区块链技术

随着时代的发展和互联网的快速普及,区块链技术从原本不为人所知,变得渐渐热门,比如目前很多人入坑的比特币,其底层技术就是用的区块链技术, 数据库技术程序允许通过区块链信任它并集中处理它。区块链技术根其他类似层面的技术相比,它的优势在于其具有高度自治性、匿名性,存储在区块链中的数据不可私自更改。目前区块链主要存在三种形式,公有、私有和联盟。私有链一般情况下是某一个私有的用户或公司内部使用的区块链,一般由内部自己管理和运行,只有私有的成员才能参与其中。公有链一般不会设置注册部分,用户可以直接访问区块链,并且不会收到时间限制,通常用在公共环境下。而联盟链一般情况下,是某个联盟或者几个组织共同建立的,只有组织成员和联盟用户能够进入,参加其中的事件处理。这三种链是区块链主流的三种。不管是哪种区块链,其根本都是一个没有中心服务器的分布式系统,其目的都是提供一个可信的网络环境。到现在为止,区块链的开发还不那么充分,炒比特币虽然不是一个明智的选择,但是不能够否认区块链在比特币上的应用是成功的,而比特币的底层区块链技术,对投票系统的发展,也有一些促进作用。伴随着电子信息技术的发展和互联网的普及,电子投票系统应用变得越来越活跃,电子投票改变传统投票需要纸质材料、需要投票人员在场投票的局面,可以实现在网络空间中进行管理和操作,不会再受到空间和时间的限制,同时还便于系统的传播和推广,但是中心化的电子投票软件的弊端也逐渐暴露出来,比如选票重复、投票结果被篡改,这大大影响了投票结果的公平公正。因此本文基于区块链技术,利用pow共识机制和点对点(p2p)等技术,基于区块链技术开发一个投票软件,其目的是利用区块链技术安全可靠的去中心化机制,构建一个简单的投票系统,以满足大众对这方面的需求。

    1. 国内外研究现状
      1. 国外现状

从90年代开始,随着计算机的普及,很多人想对电子投票进行更加深入的研究。90年代初,三位日本科学家提出了FOO电子投票协议[1],这个协议的提出为后面电子投票的研究打下了基础,虽然其有一些缺点(比如无法区分同一个人投的两次选票是否为恶意投票),但其先驱作用不可忽略;2006年,英国学者提出了一种基于门限[4]的技术,来防止恶意的攻击欧洲宪法会议上就运用了该方案,并获得了成功。2013年X Yi和EOkamoto[5]提出了一种基于同态加密通信信道电子协议,本协议有一个明显的问题,该协议下的投票系统工作过程是全程公开的,这就造成了选民信息的泄露。后来,F Song[6]又推出了一种投票系统,这种投票系统试图实现投票系统的无收据性,采用基于盲签名技术实现的,不过该技术中的盲化因子可以被当作收据,所以在无收据性上,还是存在欠缺。再后来,A Huszti[7]提出了类似的投票机制,即将投票者的选票加密以后发送给值得信赖的第三方计票机构,利用计票机构实现无收据性,但是,由于第三方机构是否值得信赖很难达成共识,所以可信性无法得到保证。而区块链技术则是目前来说,最符合投票场景要求的技术。它的五大特征:去中心化、开放性、不可篡改性、匿名性、自治性,高度符合电子投票的需求。而且目前区块链技术正变得越来越热门,如果可以有效利用区块链技术,就能解决目前电子投票软件存在的问题,实现真正意义上的公平。目前已有的,基于区块链的端到端分散的计算平台,使用SMPC技术,把数据分布到不同的节点来计算,每个节点做自己的事,不会泄露出去,所以具有可靠的保密性。同时,各个节点都不可以将计算过程以及计算数据复制到网络中,只会有一个很小的子集在不同数据部分进行计算,存储和计算中减少的冗余可进行更加严格的计算[8]

      1. 国内现状

随着国内计算机的发展,国内大量学者也对电子投票做了大量研究。2006年,仲红等[9]提出了一种利用多方求和实现投票匿名性的投票系统,算是国内对电子投票的初步尝试,其系统要求对每个选民发出的秘密随机数进行证明,而且除获胜者以外的其他选票数要公开,这样对投票给落选者的投票人的隐私无法保证。没有实现真正的匿名。后来,高虎明[10]提出一个可验证的MIX-NET协议,用来弥补投票系统在无收据性层面的缺陷。不过该方案处理计票时计算量较大,而且该协议存在注册中心,无法保证注册中心的可信性,所以也不符合要求。2015年,Zhao和Chan 等人 [11]提出了一种结合比特币的电子投票方案,该协议首次对选民的投票行为引入了奖罚制度。这一制度为后来电子投票结合区块链计术提供了参考,为基于区块链的投票系统的发展打下了基础。

    1. 本章小结

本章主要对区块链技术,及其在投票方面上的应用进行了简单阐述,对国内外对基于区块链的投票系统所做的研究和实现进行了汇总,给读者展示了区块链的发展历程,以及其在投票场景的运用,为本系统的设计奠定了理论基础。

  1. 基于区块链的投票软件关键技术

2.1 非对称加密

非对等加密核心是公开密钥和私有密钥,与对等加密不同的是,公开密钥加密的数据必须用对应的私有密钥来解密,而通过私有密钥来加密的信息也必须由公开密钥来解密,这种算法叫做非对称加密算法[12,15]。其中公钥是公开的,在电子投票领域作为数字签名很适合。又因为私钥是由发送人保管,因此被加密的信息很难被破译。在加密过程中,公钥和私钥长度越长,其安全性越高,目前来说,支付宝推荐的密钥长度为2048位,这种长度的密钥加密的信息还未被破译过,因此安全系数很高。但是,因为密钥长度很长,在解码的过程中,计算机需要计算的量就会很大,所以在性能需求方面比较高。常见的算法有RSA算法、DSA算法、ECDSA算法等。其中,RSA算法是最常用的算法,其安全程度与密钥长度成正比。密钥越长越安全。支付宝就用的这种算法。DSA算法与RSA算法安全性差不多,但是其只能用做数字签名,所以它的性能要快于RSA算法。而ECDSA(又叫椭圆曲线算法),这种算法就比较优秀了,它具有比RSA更高的效率。

剩余内容已隐藏,请支付后下载全文,论文总字数:20818字

您需要先支付 80元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图