基于区块链技术的电子投票与实时嵌入式控制系统
电子投票系统
在电子投票系统中,投票过程涉及多个关键步骤。选民首先生成投票值或参数,以此推导出加密文本和签名。之后,投票会被用于验证其在投票服务器中的有效性。此外,选票是随机选择的,投票箱的加密文本每次更新时都会进行随机化处理。当选民点击“发布”按钮,投票总数将公开并添加到投票箱中。
在投票阶段,选民可在区块链合约的公开可见期间提出投票请求,并通过提供公共参数、选民状态和隐私信息来再次核对结果,结果会显示为正确或错误。当所有投票都已投出并验证后,系统会通过输入相关私钥和投票箱参数来计算总票数。若计算错误,系统将返回“False”。通过在公开时输入公共标准,投票将被认证为合法且有效的最终计票。
节点可信度的验证方法也十分重要。节点的额外信息包括ID和私钥,ID作为每个节点的唯一标识符,私钥用于非对称加密和节点可信度验证。管理服务器(MS)负责获取和分发私钥,并将标识符、私钥和块内数据视为补充信息。MS也是系统中的一个节点,它应与其他节点共享相同的属性ID。
区块链中的每个块都包含块头和块数据。块头用于跟踪先前块的数据,如块标识符和哈希值。除了节点或MS ID,时间戳、交易计数、默克尔根和合约也是块记录结构的一部分。在单个块记录中,必须使用正确对象的私钥来生成相应的公钥。
系统设计方面,开发一个专制开放选票电子投票系统需要多种设备。选择Node.js作为后端技术,MongoDB作为数据库,并选用了包括sha256、tweetnacl、crypto-js和jsonwebtoken等在内的多个节点包模块作为令牌化机制,具体如下表所示:
| Node Module | Description |