Đâ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.
- 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.
- 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 Ganache: Tải và cài đặt Ganache để tạo một mạng lưới blockchain cá nhân.
- Deploy Smart Contract: Deploy smart contract
VotingSystem.sollên mạng Ganache đã chạy. Ghi lại địa chỉ contract và ABI. - Cài đặt Python: Đảm bảo bạn đã cài đặt Python 3.x.
- Cài đặt các thư viện Python: Cài đặt Flask và web3.py.
pip install Flask web3
- Cấu hình ứng dụng Python:
- Mở file
app.py. - Cập nhật
CONTRACT_ADDRESSvới địa chỉ contract đã deploy. - Cập nhật
CONTRACT_ABIvới ABI của contract. - Đảm bảo URL
Web3.HTTPProvidertrỏ đến Ganache của bạn (mặc định làhttp://127.0.0.1:7545).
- Mở file
- Chạy ứng dụng Backend:
python app.py
- Truy cập Frontend: Mở file
index.htmltrong 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.
- Truy cập Remix IDE: Mở trình duyệt và truy cập https://remix.ethereum.org/.
- Tạo file mới: Tạo một file mới với tên
VotingSystem.solvà copy toàn bộ code smart contract vào file đó. - 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.
- Chọn địa chỉ ví: Chọn địa chỉ ví để deploy (nên dùng tài khoản có nhiều ETH test).
- Deploy Contract: Nhấn nút "Deploy" để triển khai smart contract.
- Lưu địa chỉ contract: Sau khi deploy thành công, copy địa chỉ contract được tạo ra.
- Mở ứng dụng: Mở trình duyệt và truy cập http://localhost:5000.
- Kết nối ví: Nhấn nút "Kết nối MetaMask" để kết nối ví của bạn.
- Xác nhận kết nối: Xác nhận kết nối trong MetaMask.

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

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

- 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).

- Nhập mã giao dịch: Nhập mã giao dịch (transaction hash).
- Tìm kiếm: Nhấn "Tìm kiếm".
- Xem thông tin: Xem thông tin chi tiết giao dịch.

- 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.