Skip to content
Kha N. Do edited this page Nov 28, 2018 · 12 revisions

Giới thiệu đồ án cuối kỳ CTT522 - CQ2015/32

Forest Network

Forest Network là một mạng xã hội phi tập trung (decentralized social network) dựa trên công nghệ chuỗi khối (blockchain technology). Với các đặc điểm chính:

  1. Dữ liệu trên hệ thống một khi đã được chấp nhận thì không thể xóa được

  2. Thông tin của một đối tượng có thể được cập nhật nhiều lần nhưng mọi thay đổi đều được ghi nhận lại một cách công khai

  3. Thông tin người dùng đăng tải lên hệ thống có thể được mã hóa hoặc công khai

  4. Mỗi định danh tương ứng với một khóa công khai tương ứng (public key) và khóa bí mật (private key)

  5. Khóa công khai chính được sử dụng như địa chỉ hoặc định danh của người dùng trên hệ thống

  6. Mỗi địa chỉ sở hữu một số lượng tiền ảo (không có giá trị), có thể chuyển từ địa chỉ này sang địa chỉ khác

  7. Người dùng tham gia vào hệ thống bằng các tạo các giao dịch (transaction). Một thao tác của transaction có thể là: Chuyển tiền, khởi tạo định danh, cập nhật thông tin cá nhân, đăng tải bài viết, phản ứng (thích, giận, haha...), kết bạn... Dữ liệu trong giao dịch phải kèm theo chữ ký (signature) hợp lệ bằng cách sử dụng khóa bí mật của địa chỉ để ký

  8. Để tránh hệ thống bị tràn dữ liệu do quá người dùng tạo quá nhiều dữ liệu (rác), trong một khoảng thời gian một địa chỉ có thể gửi lên hệ thống một định mức (quota) dữ liệu nhất định dựa trên số tiền mà địa chỉ đó đang có. Khi đã hết định mức người dùng phải đợi cho đến khi định mức được khôi phục đủ cho dữ liệu mà họ muốn gửi lên hệ thống

  9. Giao dịch người dùng gửi lên hệ thống được gom thành những khối (block) và được nối vào khối trước đó. Toàn bộ các khối tạo thành một chuỗi khối (blockchain) chứa toàn bộ lịch sử của hệ thống

  10. Các khối được đồng bộ giữa các nút trong hệ thống, một số nút đặc biệt (validator) được giao quyền đề xuất và bình chọn để xác định khối tiếp theo sẽ được vào hệ thống, chu kỳ khoảng 1 giây/khối

Yêu cầu đồ án (sẽ cập nhật các yêu cầu cụ thể cho từng chức năng)

  • Xây dựng trang web

  • Thể hiện giao diện mạng xã hội: danh sách các bài viết (cá nhân, bạn bè, theo dõi...)

  • Tính định mức dữ liệu còn lại

  • Đăng nhập tài khoản bằng khóa bí mật (không gửi khóa lên internet)

  • Cập nhật thông tin cá nhân (tên hiển thị)

  • Tạo tài khoản mới

  • Chuyển tiền và xem lịch sử giao dịch của tài khoản

  • Đăng tải/cập nhật/bình luận/phản ứng bài viết

Gợi ý thực hiện

Ứng dụng đơn giản (không cần máy chủ)

  1. Kết nối với nút công cộng bằng các thông tin được cung cấp trước (người dùng có thể tùy biến). Sử dụng thư viện https://github.com/mappum/js-tendermint

  2. Truy vấn các thông của một địa chỉ: số dư tài khoản, tên, biến đếm (sequence)

  3. Truy vấn thông tin các giao dịch của địa chỉ (chuyển khoản, đăng thông tin...) và hiển thị thông tin trên giao diện

  4. Cài đặt các chức năng cơ bản bằng các tạo các giao dịch tương ứng, dùng khóa bí mật của định danh ký trên giao dịch, gửi lên nút công cộng và chờ kết quả

Ứng dụng đầy đủ (cần có máy chủ)

  1. Kết nối với nút công cộng để duyệt dữ liệu từ khối 0 trở đi cho đến khi theo kịp hệ thống, khi có khối dữ liệu mới thì tiếp tục xử lý

  2. Giải mã và đọc các giao dịch trong khối, đưa và cơ sở dữ liệu (tự do thiết kế, nhưng đảm bảo ĐẦY ĐỦ dữ liệu, không phải gửi lại yêu cầu lấy dữ liệu quá khứ từ nút)

  3. Viết các RESTful API (tự định nghĩa) cung cấp chức năng. Lưu ý, KHÔNG GỬI khóa bí mật lên máy chủ!

  4. Kết nối giao diện web với API để hiển thị dữ liệu trên web

  5. Khác biệt với ứng dụng đơn giản là dữ liệu được lưu trữ trên máy chủ của nhóm, toàn bộ truy vấn diễn ra nội bộ nên kết quả có được một cách nhanh chóng và ổn định cũng như dễ dàng truy vấn theo nhiều cách khác nhau. Dữ liệu do nút công công cung cấp chỉ có thể truy vấn một số trường đơn giản. Nhưng vẫn phải đảm bảo được tính thống nhất dữ liệu của toàn bộ mạng xã hội

Nâng cao

  1. Cài đặt một nút cá nhân và đồng bộ với hệ thống. Khuyến khích các nhóm đều làm vì các nốt công cộng có thể chậm hoặc nghẽn khi có quá nhiều yêu cầu dữ liệu từ nhiều nhóm cũng như nâng cao tính phi tập trung của hệ thống

  2. Ứng dụng trên Android/iOS

  3. Trang khám phá (explorer) hiển thị các khối, nội dung giao dịch, tình trạng các nút công cộng...

  4. Các chức năng khác dựa vào dữ liệu có được từ ứng dụng nâng cao

Cách đánh giá (còn cập nhật)

  • Ứng dụng đơn giản, điểm đạt được tối đa của đồ án là 6

  • Ứng dụng đầy đủ, điểm tối đa đạt được là 10 (KHÔNG cần cài ứng dụng đơn giản)

  • Phần nâng cao điểm cộng tối đa 0.5 cho mỗi mục đạt được