Skip to content

CMTran2005/Blockchain-Learning-Platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blockchain Learning Platform (E-Learning dApp)

Hệ thống website học trực tuyến phi tập trung (dApp). Dự án cho phép người dùng kết nối ví MetaMask, thực hiện mua khóa học bằng đồng ETH và xác thực quyền sở hữu vĩnh viễn trên mạng lưới Blockchain.


I. Kiến trúc hệ thống (System Architecture)

Dự án được vận hành theo mô hình 3 lớp tách biệt nhằm tối ưu hóa việc cộng tác qua GitHub:

  • Frontend: React.js - Giao diện người dùng và trải nghiệm học tập.
  • Backend Bridge: Ethers.js (Thư viện trung gian kết nối Web và Blockchain).
  • Smart Contract: Solidity - Ngôn ngữ lập trình xử lý logic và lưu trữ trên Blockchain.
  • Local Network: Ganache - Mạng Blockchain giả lập dùng để triển khai và thử nghiệm.
  • Wallet: MetaMask - Công cụ quản lý ví và xác thực các giao dịch tài chính.

II. Phân công nhiệm vụ (GitHub Roles)

1. Blockchain Developer (Smart Contract)

  • Thư mục quản lý: smart-contract/
  • Nhiệm vụ:
    • Lập trình file Course.sol quản lý danh sách khóa học và cơ chế sở hữu.
    • Triển khai các hàm nghiệp vụ: buyCourse, getMyCourses, getCoursePrice.
    • Xây dựng các tính năng nâng cao: withdraw (rút tiền), isCoursePurchased (kiểm tra sở hữu).
    • Xuất file ABI và địa chỉ Contract sau khi deploy thành công lên Ganache.

2. Backend Developer (Integration & Logic)

  • Thư mục quản lý: frontend/src/utils/
  • Nhiệm vụ:
    • Thiết lập contract.js để tạo cầu nối giữa giao diện và Smart Contract.
    • Xây dựng logic connectWallet.js quản lý việc đăng nhập ví người dùng.
    • Quản lý Metadata: Xây dựng file courses.json lưu trữ thông tin chi tiết (tên, mô tả, ảnh, link video) để tối ưu chi phí lưu trữ Blockchain.
    • Phân quyền nội dung: Kiểm tra trạng thái mua hàng để mở khóa trình phát video bài học.
    • Xử lý bộ lắng nghe sự kiện (Event Listener) để phản hồi giao dịch thời gian thực.

3. Frontend Developer (UI/UX)

  • Thư mục quản lý: frontend/src/pages/ & frontend/src/components/
  • Nhiệm vụ:
    • Thiết kế giao diện Navbar, CourseCard, trình phát video và bộ lọc tìm kiếm.
    • Phát triển trang chủ, trang chi tiết khóa học và trang My Courses.
    • Gọi các hàm dịch vụ từ Backend để xử lý hiển thị logic mua hàng và thông báo trạng thái.

III. Thiết kế Database trên Blockchain

Hệ thống sử dụng trạng thái của Smart Contract để lưu trữ dữ liệu thay cho SQL:

  • Cấu trúc dữ liệu: mapping(address => uint[]) public userCourses;
  • Nguyên lý: Mỗi địa chỉ ví sẽ ánh xạ đến một mảng các số nguyên (ID khóa học). Khi mua thành công, ID khóa học sẽ được đẩy (push) vào mảng của ví đó.

IV. Chức năng hệ thống (API Interface)

1. Chức năng Blockchain (On-chain)

Tên Hàm / Sự kiện Loại Mô tả nhiệm vụ
connectWallet() Logic Yêu cầu kết nối MetaMask và trả về địa chỉ ví người dùng.
buyCourse(id) Giao dịch Gửi ETH mua khóa học, kích hoạt popup xác nhận của MetaMask.
getMyCourses() Truy vấn Lấy danh sách ID các khóa học đã sở hữu để hiển thị cho người dùng.
isCoursePurchased Kiểm tra Xác định ví đã mua khóa học chưa để chuyển đổi nút Mua thành Xem nội dung.
withdraw() Quản trị Cho phép chủ sở hữu nền tảng rút tiền ETH thu được về ví cá nhân.
CoursePurchased Sự kiện Tự động thông báo và cập nhật giao diện ngay khi giao dịch hoàn tất.

2. Các tính năng bổ trợ (Off-chain)

Tên tính năng Thành phần Mô tả chi tiết
Quản lý Metadata JSON Data Hiển thị thông tin khóa học (Mô tả, nội dung, ảnh bìa) từ file cấu trúc nội bộ.
Phân quyền xem Video Logic Gate Tự động khóa/mở trình phát video dựa trên xác thực quyền sở hữu từ Blockchain.
Tìm kiếm & Bộ lọc Search Engine Hỗ trợ người dùng tìm kiếm khóa học theo từ khóa và phân loại theo chủ đề.
Hệ thống thông báo Toast UI Phản hồi trạng thái giao dịch theo thời gian thực (Đang xử lý, Thành công, Lỗi).
Responsive Design CSS Layout Đảm bảo giao diện hiển thị tối ưu trên cả máy tính, máy tính bảng và điện thoại.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors