Skip to content

namdc1392/Blockchain-DAO-voting

Repository files navigation

Hệ Thống Biểu Quyết DAO trên Blockchain

Giới thiệu chung

Đây là một hệ thống biểu quyết phi tập trung (DAO - Decentralized Autonomous Organization) đơn giản được xây dựng trên nền tảng blockchain Ethereum. Hệ thống cho phép người dùng tạo các đề xuất và thực hiện biểu quyết một cách minh bạch và an toàn thông qua smart contract.

Chức năng chính

  • Tạo đề xuất: Chủ sở hữu hợp đồng có thể tạo các đề xuất mới với tiêu đề, mô tả và thời gian biểu quyết xác định.
  • Xem danh sách đề xuất: Mọi người dùng có thể xem danh sách các đề xuất đang hoạt động và đã kết thúc, cùng với thông tin chi tiết về từng đề xuất (mã đề xuất, tiêu đề, mô tả, thời gian bắt đầu/kết thúc, số phiếu đồng ý/phản đối).
  • Biểu quyết: Người dùng có thể biểu quyết cho các đề xuất đang hoạt động (Đồng ý hoặc Phản đối). Thông tin cá nhân của người biểu quyết (Họ tên, Email, SĐT) được băm (hash) và lưu trữ on-chain cùng với địa chỉ ví để đảm bảo tính ẩn danh nhưng vẫn có thể xác minh.
  • Đóng đề xuất: Chủ sở hữu hợp đồng có thể kết thúc thời gian biểu quyết cho một đề xuất sau khi thời gian quy định đã hết.
  • Xem thông tin giao dịch biểu quyết: Có thể tra cứu chi tiết một giao dịch biểu quyết cụ thể dựa trên hash giao dịch, bao gồm thông tin người biểu quyết (đã băm), lựa chọn và thời gian.

Công nghệ và Kỹ thuật

  • Blockchain: Ethereum
  • Môi trường phát triển Blockchain: Ganache (để chạy local blockchain)
  • Smart Contract: Solidity
  • Backend: Python (Flask)
  • Web3 Library (Python): web3.py (để tương tác với smart contract từ backend)
  • Frontend: HTML, CSS (Bootstrap), JavaScript
  • Web3 Library (Frontend): web3.js (để tương tác với MetaMask và blockchain từ trình duyệt)
  • Ví điện tử: MetaMask (để người dùng kết nối và thực hiện giao dịch)

Cài đặt

  1. Cài đặt Ganache: Tải và cài đặt Ganache để tạo một mạng lưới blockchain cá nhân.
  2. Deploy Smart Contract: Deploy smart contract VotingSystem.sol lên mạng Ganache đã chạy. Ghi lại địa chỉ contract và ABI.
  3. Cài đặt Python: Đảm bảo bạn đã cài đặt Python 3.x.
  4. Cài đặt các thư viện Python: Cài đặt Flask và web3.py.
    pip install Flask web3
  5. Cấu hình ứng dụng Python:
    • Mở file app.py.
    • Cập nhật CONTRACT_ADDRESS với địa chỉ contract đã deploy.
    • Cập nhật CONTRACT_ABI với ABI của contract.
    • Đảm bảo URL Web3.HTTPProvider trỏ đến Ganache của bạn (mặc định là http://127.0.0.1:7545).
  6. Chạy ứng dụng Backend:
    python app.py
  7. Truy cập Frontend: Mở file index.html trong trình duyệt của bạn. Đảm bảo bạn đã cài đặt và kết nối MetaMask với mạng Ganache.

Cách sử dụng

Triển khai Contract trên Remix IDE

  1. Truy cập Remix IDE: Mở trình duyệt và truy cập https://remix.ethereum.org/.
  2. Tạo file mới: Tạo một file mới với tên VotingSystem.sol và copy toàn bộ code smart contract vào file đó.
  3. Kết nối MetaMask: Chọn môi trường "Injected Provider - MetaMask" để kết nối với ví MetaMask của bạn.
  4. Chọn địa chỉ ví: Chọn địa chỉ ví để deploy (nên dùng tài khoản có nhiều ETH test).
  5. Deploy Contract: Nhấn nút "Deploy" để triển khai smart contract.
  6. Lưu địa chỉ contract: Sau khi deploy thành công, copy địa chỉ contract được tạo ra.

Kết nối ví MetaMask

  1. Mở ứng dụng: Mở trình duyệt và truy cập http://localhost:5000.
  2. Kết nối ví: Nhấn nút "Kết nối MetaMask" để kết nối ví của bạn.
  3. Xác nhận kết nối: Xác nhận kết nối trong MetaMask. Hình ảnh 1

Tạo đề xuất mới (Chủ sở hữu)

  1. Đăng nhập: Đăng nhập bằng ví của chủ sở hữu contract.
  2. Điền thông tin đề xuất:
    • Tiêu đề
    • Mô tả
    • Thời gian biểu quyết (phút)
  3. Tạo đề xuất: Nhấn "Tạo đề xuất".
  4. Xác nhận giao dịch: Xác nhận giao dịch trong MetaMask. Hình ảnh 2

Biểu Quyết

  1. Chọn đề xuất: Chọn đề xuất cần biểu quyết.
  2. Nhấn nút "Biểu quyết".
  3. Điền thông tin:
    • Họ và tên
    • Email
    • Số điện thoại
    • Lựa chọn (Đồng ý/Phản đối)
  4. Gửi biểu quyết: Nhấn "Gửi biểu quyết".
  5. Xác nhận giao dịch: Xác nhận giao dịch trong MetaMask. Hình ảnh 3

Theo dõi kết quả

  • Xem danh sách đề xuất: Xem danh sách các đề xuất đã tạo.
  • Theo dõi số phiếu: Theo dõi số phiếu đồng ý/phản đối cho từng đề xuất.
  • Kiểm tra trạng thái: Kiểm tra trạng thái đề xuất (đang hoạt động/đã kết thúc). Hình ảnh 4

Tìm kiếm giao dịch

  1. Nhập mã giao dịch: Nhập mã giao dịch (transaction hash).
  2. Tìm kiếm: Nhấn "Tìm kiếm".
  3. Xem thông tin: Xem thông tin chi tiết giao dịch. Hình ảnh 5

Các tính năng bảo mật

  • Mã hóa thông tin: Thông tin người biểu quyết được mã hóa.
  • Kiểm tra trùng lặp: Hệ thống kiểm tra trùng lặp biểu quyết.
  • Kiểm tra thời gian: Hệ thống kiểm tra thời gian biểu quyết.
  • Xác thực chủ sở hữu: Hệ thống xác thực chủ sở hữu.

About

Blockchain-DAO voting-Hệ thống biểu quyết DAO-Phạm Văn Nam, Lê Dức Mạnh, Lê Mạnh Đạt

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published