Ứng dụng Web lưu trữ log hệ thống trên Blockchain Ethereum (Sepolia) để chống ghi đè/sửa đổi.
- Python 3.10+
- Ví MetaMask (hoặc tương tự) có Sepolia Testnet ETH
- API Alchemy hoặc Infura cho Sepolia
cd "c:\Users\Quoc An\Pictures\ATTT\Project"
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt- Dùng Remix hoặc Hardhat để biên dịch và deploy
contracts/SystemLogStorage.sollên mạng Sepolia. - Lưu lại địa chỉ contract sau khi deploy.
- Lấy Sepolia ETH miễn phí tại: https://sepoliafaucet.com/ hoặc https://www.alchemy.com/faucets/ethereum-sepolia
Sao chép .env.example thành .env và điền:
PROVIDER_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY
PRIVATE_KEY=your_private_key_hex_without_0x
CONTRACT_ADDRESS=0x... # địa chỉ contract vừa deploy- PROVIDER_URL: URL RPC Sepolia (Alchemy/Infura).
- PRIVATE_KEY: Khóa riêng của ví (không có tiền tố
0x) – ví này cần có Sepolia ETH để gửi giao dịchsaveLog. - CONTRACT_ADDRESS: Địa chỉ contract
SystemLogStoragetrên Sepolia.
venv\Scripts\activate
python app.pyMở trình duyệt: http://127.0.0.1:5000
- Nút Đăng nhập, Xóa dữ liệu, Thay đổi mật khẩu: giả lập hành động.
- Mỗi lần nhấn: ghi 1 dòng vào
system.log(ví dụ:2026-03-06 20:00:00 - Admin - Login), băm SHA-256, rồi gửi hash lên Sepolia qua Smart Contract (chạy trong thread, không treo giao diện).
- Bảng 2 cột: Cột A = nội dung log từ file
system.log, Cột B = mã hash tương ứng từ Blockchain. - Nút Verify Integrity: băm lại từng dòng trong file và so sánh với hash trên chain.
- Xanh (Vẹn toàn): khớp.
- Đỏ (Cảnh báo: Log bị sửa đổi): không khớp.
- Tab 1: Nhấn một trong các nút (ví dụ Đăng nhập) → log được ghi và hash đẩy lên Sepolia.
- Tab 2: Nhấn Verify Integrity → toàn bộ dòng báo xanh (Vẹn toàn).
- Mở file
system.log(Notepad), sửa nội dung một dòng và lưu. - Quay lại Tab 2, nhấn lại Verify Integrity → dòng bị sửa báo đỏ (Cảnh báo: Log bị sửa đổi).
Project/
├── app.py # Flask, routes, API
├── blockchain.py # web3.py, kết nối Sepolia, saveLog/getAllLogs, threading
├── log_service.py # Ghi file log, SHA-256, verify
├── requirements.txt
├── .env.example
├── system.log # Tạo tự động khi có ghi log
├── contracts/
│ ├── SystemLogStorage.sol
│ └── SystemLogStorage_abi.json
├── templates/
│ └── index.html # Giao diện 2 Tab
└── README.md
- Không commit file
.envhoặc private key lên Git. - Chỉ dùng ví test và Sepolia Testnet cho mục đích demo/học tập.