Equalis

Arjun Sarao, Bram Ogus, Connor Wilson, Rene Gonzalez Pina

? 灵感来源

我们想创建一个系统,帮助消除选民欺诈,并允许公民不仅能够快速有效地参与他们的选举系统,还能参与他们的立法系统。使用区块链会有所帮助,因为所有选民都将通过一个由他们的健康卡号、护照号码和一个通过邮件发送给选民地址的特殊二维码组成的哈希值进行签名。

?它能做什么

用户通过扫描他们的护照、健康卡和我们发送给他们的特殊二维码来注册。然后,他们可以参加政府选举以及通过立法。Equalis 使用区块链来存储选举信息。所有选票都通过选民的健康卡号、护照号码和一个通过邮件发送给选民地址的特殊二维码的哈希值进行签名。主屏幕包含即将到来的法律以及距离下次选举的倒计时。在法律页面上,用户可以滚动浏览所有已通过和未通过的法律列表,并看到一个人工智能生成的摘要,然后是重要日期,最后是完整的法律。然后,用户将被提示投票赞成或反对该法律。当没有选举进行时,选举页面将只显示倒计时;当选举进行时,选民可以选择他们喜欢的候选人。

?完整功能列表

  • 使用 OCR 和面部识别进行身份验证
  • 人工智能生成的立法摘要
  • 通过工作证明在区块链上存储的选举投票计数
  • 用于法律和选举投票细分的交互式图表

?我们是如何构建它的

  • Adobe XD:我们在 Adobe XD 中设计了模型,以确定应用程序的 UI/UX 和总体流程
  • Flutter:我们使用 XYZ 包在 Flutter 中构建了前端
  • Python:Python 用于我们的后端/API 以及我们的 ML 组件
    • transformers:我们使用了 HuggingFace 包,特别是 Google 的 *Pegasus* 模型来总结立法文件
    • face_recognition:这个 Python 包用于测量用户护照照片和其他照片之间的相似度
    • firebase_admin:Firebase 的 Python SDK
    • web3.py:用于与区块链上的 Solidity 智能合约进行交互
    • py-solc-x:用于编译 Solidity 代码
    • pytesseract:我们使用 pytesseract 进行护照验证,通过读取 MRZ(机器可读区)
    • flask:用于在网上托管我们的 JSON API
  • Firebase:我们还使用 Firebase 构建了后端来存储用户数据(姓名、UUID、权限、发送的选票等)
  • Solidity:Solidity 用于在区块链上创建智能合约

?我们遇到的挑战

  • 智能合约开发
  • 确保 OCR 包能够在 repl.it 上运行
  • 让 Python 与区块链交互
  • 确定哪些信息存储在数据库中,哪些存储在区块链上

✅ 我们引以为豪的成就

  • 在没有任何 Solidity 知识的情况下实现了完整的智能合约
  • 让一切都能正常工作,哈哈
  • 将我们的应用程序连接到 Rinkeby TestNet

?我们学到了什么

  • Solidity
  • flask
  • web3.py, py-solc-x
  • firebase_admin
  • pytesseract, face-recognition, transformers

?Equalis 的下一步

  • 完善用户身份验证流程
  • 为创建选举创建更强大的工具
  • 添加更多验证方式,以防人们没有携带护照
  • 将智能合约部署到主网或本地私有网络
  • 完善法律摘要

技术栈

techstack

?画廊

?代码行数

  • 389 行 Python 代码
  • 213 行 Solidity 代码
  • 1689 行 Flutter 代码

?‍♂️ 致谢

感谢 DeltaHacks 提供的机会来创建和开发我们的想法。

GitHub

查看 Github