probs9234/Veritas-Blockchain-Voting
GitHub: probs9234/Veritas-Blockchain-Voting
一个基于以太坊智能合约和 zk-SNARKs 的电子投票系统原型,实现了投票匿名性与公开可审计性的平衡。
Stars: 0 | Forks: 0
# Veritas 区块链投票
一种基于自定义 Ethereum 智能合约构建的最先进的、防篡改的电子投票机制,并通过 Zero-Knowledge Proofs (zk-SNARKs) 进行认证。

## 功能
- **防篡改账本**:选票被永久记录在 Ethereum 智能合约上。
- **匿名投票**:通过利用加密的 Zero-Knowledge Proofs (zk-SNARKs),投票者可以在不暴露身份的情况下,从数学上证明其投票权。
- **防止重复投票**:确定性 nullifier hashes 的实现保证了每位符合条件的参与者每次选举仅能投出一票。
- **优质 UI/UX**:精心打造的 Next.js 前端,具有玻璃拟态效果、动态动画以及用于透明验证的交互式“ZK-Proof Terminal”。
## 架构
该项目分为两个主要组件:
1. `/blockchain` - 包含用于 Ethereum 智能合约的 Hardhat 项目。
- `VeritasVoting.sol`:核心选举和账本逻辑。
- `Verifier.sol`:加密 zk-SNARK 验证合约。
2. `/frontend` - 包含 Next.js 14 Web3 应用程序 UI。
## 快速开始
### 前置条件
- Node.js (v20+)
- MetaMask (或等效的 Web3 扩展)
### 1. 智能合约
导航到 `blockchain` 目录,安装依赖项,并运行测试以验证加密逻辑。
```
cd blockchain
npm install
npx hardhat test
```
### 2. 前端应用程序
导航到 `frontend` 目录并启动本地 Next.js 开发服务器。
```
cd frontend
npm install
npm run dev
```
访问 `http://localhost:3000` 以与去中心化应用程序进行交互。
## 密码学说明
*本仓库包含一个模拟的 ZKP verifier 映射,用于演示目的,以避免真实 Circom 电路的繁重编译步骤,同时展示了 ZK-rollups 或匿名凭证在 Ethereum 上运行的架构流程。*
*为展示去中心化技术和加密安全而构建。*
标签:DApp, EVM, Hardhat, MetaMask, Solidity, Web3, zk-SNARKs, 以太坊, 公共审计, 区块链, 匿名投票, 去中心化应用, 去中心化身份, 双重投票预防, 哈希算法, 密码学, 手动系统调用, 智能合约, 电子投票, 网络安全, 网络安全, 自定义脚本, 选举系统, 配置审计, 防篡改, 隐私保护, 隐私保护, 零知识证明