基于区块链的网上投票系统的设计与实现
【摘要】:自古以来,投票就是一种体现民主公正的存在形式。随着当代社会的发展和技术的进步,投票采用的形式也从举手计数转变为线上投票计数。然而,当今线上投票系统大多依赖于一个中心化的服务器,普通用户无法得知自己所投出的票是否被后台管理员或利益相关者恶意篡改,即无法验证票据信息的真伪,做不到信息的公正公开。随着区块链技术逐渐进入人们的视野,人们意识到区块链技术具有不可篡改、去中心化、可追溯等优点,数据一旦存入账本后便无法被修改,这正可以使用区块链这些优点来对投票信息进行安全存证。本文设计了一种基于UTXO模型的投票代币,管理员通过铸币使用户所拥有的投票代币真实、可靠、可溯源。在底层使用基于椭圆曲线的加解锁算法来确保使用代币的权限,使用数字签名算法来保证票据信息来源可靠,通过共识算法保证各个交易节点对交易请求所处理得到的交易结果的正确性和一致性,使用Merkle树来对交易数据进行哈希验证来保证交易数据的不可篡改性,使用第三方权威机构Fabric CA来验证管理用户和管理员的公私钥和证书。在存储方面,本文采用传统数据库和区块链相结合的方式来存储验证数据,将投票详细信息存入传统数据库中,通过协商密钥来进行加盐哈希处理,产生不可逆的数字摘要存在区块链账本中,在验证时通过一致性比对即可获知当前投票信息是否被篡改过,此外使用链下存储减小了区块链账本存储压力,不会使区块在短时间内快速膨胀。经过测试表明,本系统的各个应用功能模块都可以满足其实际需求,其平均时延和吞吐率都在可接受范围内,整体上来说实现了一个公正公开、可验证、可溯源、性能良好的投票存证系统。