ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO ĐỒ ÁN 2
Đề tài: Sàn giao dịch NFT
Giảng viên hướng dẫn:
ThS. Huỳnh Tuấn Anh
Sinh viên thực hiện:
Đồn Cơng Minh - 18521092
Lương Duy Bảo - 18520484
LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học Công
nghệ Thông tin – ĐHQG TP.HCM, em đã được trang bị các kiến thức cơ bản cùng các kỹ
năng thực tế để có thể hồn thành Đồ án 2 của nhóm.
Để hồn thành đồ án này, với lịng biết ơn sâu sắc em xin gửi lời cảm ơn chân thành đến:
Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM vì đã tạo điều
kiện thuận lợi để sinh viên tìm kiếm, nghiên cứu thơng tin với hệ thống thư viện hiện đại, đa
dạng các loại sách và tài liệu
Gần gũi hơn là những lời tốt đẹp nhất xin gửi đến đến thầy Huỳnh Tuấn Anh đã tận
tình giúp đỡ, định hướng cách tư duy và hướng làm việc khoa học. Đó là những góp ý hết sức
quý báu khơng chỉ trong q trình thực hiện luận văn mà cịn là hành trang tiếp bước cho em
trong q trình học tập và làm việc sau này.
Sau cùng, xin chúc q Thầy Cơ trong khoa Cơng nghệ Phần mềm nói riêng cũng như
các giáo viên tại trường Công nghệ thông tin nói chung thật dồi dào sức khỏe, niềm tin để
tiếp tục thực hiện sứ mệnh cao đẹp của mình.
Thành phố Hồ Chí Minh, tháng 5 năm 2022
Sinh viên 1
Đồn Công Minh
Sinh viên 2
Lương Duy Bảo
Nhận xét
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
……., ngày……...tháng……năm 2022
Người nhận xét
(Ký tên và ghi rõ họ tên)
Table of Contents
Introduction
7
Purpose
7
Scope
7
Intended Audiences and Document Organization
7
Functional Requirements
9
Use Case Description
9
UC1: Đăng nhập
9
Activities Flow
9
Business Rules
9
UC2: Đăng xuất
10
Activities Flow
11
Business Rules
12
UC3: Sửa đổi thông tin
13
Activities Flow
13
Business Rules
14
UC4: Mint NFT
15
Activities Flow
15
Business Rules
16
UC5: Import NFT
17
Activities Flow
17
Business Rules
18
UC6: Xác minh tài khoản
19
Activities Flow
19
Business Rules
20
UC7: Duyệt xác minh tài khoản
21
Activities Flow
21
Business Rules
22
UC8: Niêm yết NFT
23
Activities Flow
23
Business Rules
24
UC9: Huỷ niêm yết NFT
24
Activities Flow
25
Business Rules
26
UC9: Mua NFT
27
Activities Flow
27
Business Rules
28
UC10: Tạo quảng cáo
28
Activities Flow
29
Business Rules
30
UC11: Sửa quảng cáo
30
Activities Flow
31
Business Rules
32
UC12: Huỷ quảng cáo
32
Activities Flow
33
Business Rules
34
UC13: Xem NFT
35
Activities Flow
35
Business Rules
36
UC14: Tìm kiếm NFT
36
Activities Flow
37
Business Rules
38
UC15: Chi tiết NFT
39
Activities Flow
39
Business Rules
40
UC16: Xem thống kê doanh số
40
Activities Flow
41
Business Rules
42
UC17: Xem thống kê về user
42
Activities Flow
43
Business Rules
44
UC18: Xem thống kê top NFT có giá trị nhất đã được bán
Activities Flow
44
45
Business Rules
UC19: Xem thống kê top user có lượng mua bán cao nhất
46
46
Activities Flow
47
Business Rules
48
UC19: Xem thống kê phí giao dịch
48
Activities Flow
49
Business Rules
50
UC19: Xem thống kê phí giao dịch
50
Activities Flow
51
Business Rules
52
List Description
53
View Description
53
Non-functional Requirements
54
User Access and Security
54
3.2 Performance Requirements
56
3.3 Implementation Requirements
57
Other Requirements
58
4.1 Archive Function
58
4.2 Security Audit Function
58
Các yêu cầu hệ thống
59
5.1 SharePoint Sites
59
5.2 SharePoint Lists
59
5.3 SharePoint Permission Levels
59
SharePoint Groups
60
SharePoint Web Parts
60
Custom Pages:
61
Scheduled Agents
61
Technical Concern
61
Growth Rate is low => less risk in performance
61
Appendixes
6.1 Glossary
62
62
6.2 Mapping to Notes Application
62
6.3 Messages
63
Issues List
63
1. Introduction
1.1. Purpose
Tài liệu cung cấp các mô tả bằng các sơ đồ, biểu đồ, bảng biểu và hình ảnh về các chức năng, giao
diện, v.v. và được ký tên xác nhận nhằm xác định các tiêu chí kỹ thuật cho các bên liên quan. Bên
cạnh đó, các thơng tin trong tài liệu này được sử dụng để đặc tả yêu cầu và thiết kế phần mềm đồng
thời thực hiện các bước tiếp theo của dự án.Các chi tiết về logic nghiệp vụ và giao diện của ứng dụng,
không được đề cập trong tài liệu này.
1.2.
●
●
●
●
●
●
●
●
●
Scope
Ứng dụng xây dựng trên nền tảng web3
Phục vụ cho việc kinh doanh của công ty
Kiến trúc: Client-Server
Ngơn ngữ lập trình:
+ Front-end: JavaScript
+ Back- end: golang
+ Contract: solidity
Cơ sở dữ liệu: MongoDB, MySQL,..
Server: đặt tại công ty
1.3. Intended Audiences and Document
Organization
Tài liệu được dự định dành cho:
❖ Development Team: chịu trách nhiệm phát triển chi tiết về thiết kế, triển khai
❖ Testing Team: chịu trách nhiệm xây dựng các unit test để kiểm tra chức năng hệ thống
❖ Data Migration Team: chịu trách nhiệm thiết kế, xây dựng cơ sở dữ liệu có phần mềm
❖ Documentation Team: chịu trách nhiệm viết bảng hướng dẫn sử dụng phần mềm.
❖ UAT team: Chịu trách nhiệm thực hiện các phiên kiểm tra sự chấp nhận của người
dùng với người dùng cuối.
Dưới đây là các thành phần chính của tài liệu:
❖ 1. Introduction: Mô tả phần giới thiệu chung của tài liệu.
❖ 2. Functional Requirements: Mô tả chi tiết các yêu cầu chức năng.
❖ 3. Non-functional Requirements: Mô tả các yêu cầu phi chức năng của ứng dụng
này như quyền truy cập và bảo mật của người dùng, giao diện, màn hình và hiệu suất.
❖ 4. Other Requirements: Mơ tả các yêu cầu khác như chức năng kiểm tra lưu trữ hoặc
bảo mật.
❖ 5. Application Design: This section describes the design of SharePoint applications.
❖ 6. Appendixes: Mô tả các yêu cầu khác đối với ứng dụng này và thông tin hỗ trợ khác
cho tài liệu này.
❖ GHI CHÚ: Vui lòng tham khảo phần 6.1 để biết tất cả các từ viết tắt và chữ viết tắt
bạn có thể gặp trong tài liệu này.
References
#
Title
Version
File Name / Link
1
NFT
Ethereum
lastest
/>en/nft/
2
Opensea
lastest
nsea.
io/
Description
2. Functional Requirements
2.1. Use Case Description
UC1: Đăng nhập
Name
Đăng nhập
Description
Cho phép user đăng nhập vào sàn giao dịch
Actor
Admin, Khách hàng, Đối tác quảng cáo
Trigger
❖ Khi user click vào nút login
Pre-condition
❖
Post-condition
❖ Đăng nhập thành công.
Activities Flow
Figure 1: Activities Flow
Business Rules
Activity
(2)
BR Code
BR1
Description
Điều kiện màn hình:
❖ Tải thành cơng giao diện cho người dùng xác nhận
sign từ ví của người dùng tại client
❖ Trường hợp user chưa cài đặt ví:
⮚ Hiện thơng báo u cầu user cài đặt các ví cần
thiết
(5)
BR2
Xác nhận và hiển thị thông tin:
❖ Khi đã nhận được chữ kí từ client. Hệ thống
phải xác thực sign có tồn tại trong hệ thống hay
khơng:
⮚ Nếu có thì lấy thông tin user từ DB và gửi liên
kết ipfs (có hình đại diện) về phía client để hiển
thị
⮚ Nếu khơng thì khởi tạo user mới với sign-key
vừa nhận được với thông tin mặc định rỗng
UC2: Đăng xuất
Name
Đăng nhập
Description
Cho phép user đăng xuất ra khỏi sàn giao dịch
Actor
Admin, Khách hàng, Đối tác quảng cáo
Trigger
❖ Khi user click vào nút đăng xuất
Pre-condition
❖ User đã thực hiện đăng nhập trước đó
Post-condition ❖ Đăng xuất thành cơng.
Activities Flow
Figure 1: Activities Flow
Business Rules
Activity
(2)
BR
Code
BR1
Description
Điều kiện màn hình:
❖ Tải thành cơng giao diện cho người dùng xác nhận sign từ
ví của người dùng tại client
❖ Trường hợp user chưa cài đặt ví:
⮚ Hiện thơng báo u cầu user cài đặt các ví cần thiết
(5)
BR2
Xác nhận và hiển thị thông tin:
❖ Khi đã nhận được chữ kí từ client. Hệ thống
phải xác thực sign có tồn tại trong hệ thống hay
khơng:
⮚ Nếu có thì lấy thông tin user từ DB và gửi liên kết ipfs (có
hình đại diện) về phía client để hiển thị
⮚ Nếu khơng thì khởi tạo user mới với sign-key vừa nhận
được với thông tin mặc định rỗng
UC3: Sửa đổi thông tin
Name
Sửa đổi thông tin tài khoản
Description
Cho phép user sửa đổi thông tin tài khoản
Actor
Admin, Khách hàng, Đối tác quảng cáo
Trigger
❖ Khi user click vào nút “Edit” trong “Profile”
Precondition
❖ User đã thực hiện đăng nhập trước đó
❖ Thơng tin nhập vào khơng có lỗi
Postcondition
❖ Sửa đổi thành công thông tin của user trong hệ thống
Activities Flow
(1) Yêu cầu sửa
thông tin
(2) Load thông tin user
(3) Điền thông tin
(4) Cập nhật thông tin
Fail
(4.1) Hiện lỗi
Activities Flow
Success
Business Rules
Activity
(2)
BR
Code
BR1
Description
Điều kiện màn hình:
❖ Tải thành cơng giao diện hiển thị cho người dùng các
trường như sau
⮚
⮚
⮚
⮚
⮚
⮚
(3)
BR2
Display name
Avatar
Bio
Email
Twitter
Telegram
User xác nhận hiển thị và điền các thông tin với
yêu cầu:
Tên trường
(4)
Dạng dữ liệu
Requir
e
*
[Display Name] string
[Avatar]
*.jpg,*.png
[Bio]
string
[Email]
String email
[Twitter]
String
[Telegram]
String bắt đầu bằng @
Server cập nhật dữ liệu:
⮚ Kiểm tra thông tin đăng nhập hợp lệ
⮚ Kiểm tra thông tin tài khoản hợp lệ
⮚ Lưu dữ liệu người dùng lên DB
⮚ Gửi ảnh lên mạng lưới IPFS (Nếu có đính kèm
ảnh)
UC4: Mint NFT
Name
Mint NFT
Description
Cho phép user có thể mint NFT trực tiếp thông qua sàn
giao dịch
Actor
Admin, Khách hàng, Đối tác quảng cáo
Trigger
❖ Khi user click vào nút “Mint NFT” trong “Home”
Pre-condition
❖ User đã thực hiện đăng nhập trước đó
❖ Thơng tin nhập vào khơng có lỗi
❖ Gửi thành cơng NFT lên mạng lưới IPFS để lưu trữ.
Cập nhật với contract thành công để ghi nhận thông tin
sở hữu
Post-condition
Activities Flow
(2) Load form nhập thông
tin
(1) Mint NFT
(3) Nhập thông tin
(4)Nhận thông tin NFT
Fail
(4.2) Hiện màn hình
xác nhận giao dịch
Success
Kiểm tra tính hợp lệ
(4.1) Hiện lỗi
(5) User xác nhận
thanh tốn phí mint
(6) Thực hiện giao
dịch
(6.1)Hiện thông tin
lỗi
(6.2)Lưu lại thông tin, hiện thị
cho người dùng
Activities Flow
Fail
Success
Business Rules
Activity
(3)
BR
Code
BR2
Description
Yêu cầu user xác nhận hiển thị và điền các
thông tin với yêu cầu:
Tên trường
Dạng dữ liệu
[NFT]
Chấp nhận định dạng:
.jpg, .png, .mp3, .mp4,
.wav
String tối thiểu 4 kí tự,
*
tối đa 32k kí tự
String tối đa 100 kí tự
Number tối thiểu bằng 1 *
tối đa bằng 10,000
[Name]
[Decription]
[Supply]
(4)
Requir
e
*
Server cập nhật dữ liệu:
⮚ Lưu dữ liệu người dùng lên DB.
⮚ Gửi ảnh lên mạng lưới IPFS (Nếu có đính kèm
ảnh)
(6)
(6.2)
Giao tiếp với hàm khởi tạo NFT erc-1155:
⮚ Gọi lệnh mint tồn tại thông tin của chủ sở hữu.
⮚ NFT được mint về ví sàn giao dịch.
Thực hiện lưu dữ liệu mint vào DB để cho
việc thống kê.
Trả về cho người dùng thông tin NFT đã
được mint.
UC5: Import NFT
Name
Import NFT
Description
Cho phép User nhập NFT từ ngoài vào sàn để giao dịch
Actor
Admin, Khách hàng, Đối tác quảng cáo
Trigger
❖ Khi user click vào nút “Import NFT” trong “Home”
Pre-condition
❖ User đã thực hiện đăng nhập trước đó
❖ Thơng tin nhập vào khơng có lỗi
Post-condition
❖ NFT được chuyển vào sàn giao dịch với thông tin chủ sở
hữu là user
Activities Flow
(2) Load form nhập thông
tin
(1) Import NFT
(3) Nhập thông tin
(4) Nhận thơng tin NFT
Fail
(4.2 )Xác nhận
quyền sở hữu
Success
Kiểm tra tính hợp lệ
(4.1) Hiện lỗi
False
True
(5) User xác nhận
import NFT
(6) Thực hiện giao
dịch
(6.1) Hiện thông tin
lỗi
(6.2)Lưu lại thông tin, hiện thị
cho người dùng
Activities Flow
success
fail
Business Rules
Activity
(3)
(4)
(5)
(6)
(6.2)
BR Code
BR2
Description
Yêu cầu user xác nhận hiển thị và điền các thông tin
với yêu cầu:
Tên trường
Dạng dữ liệu
Require
[Address]
[ID]
String: Địa chỉ NFT
Number: ID NFT
*
*
⮚ Trường hợp lỗi: hiện lỗi cho người dùng bằng
bolderColor = red trên từng field lỗi.
Kiểm tra contract được phép không
⮚ Nếu không: hiện cảnh báo NFT này không được
phép import vào sàn giao dịch
Tương tác với mạng lưới ethereum để kiểm tra tính sở
hữu NFT của user:
⮚ Trả thông báo lỗi nếu user không thực sự là chủ sở
hữu của NFT
Thực hiện chuyển quyền sở hữu NFT kèm địa chỉ của
user khách hàng. Tương tác contract lưu lại thông tin địa
chỉ của user trong mạng lưới ethereum
Lưu lại log và hiện thị thông báo thành công cho người
dùng
UC6: Xác minh tài khoản
Name
Xác minh tài khoản
Description
Cho phép user gửi đơn xác thực tài khoản tích xanh trên nền
tảng sàn giao dịch NFT
Actor
Khách hàng
Trigger
❖ Khi user click vào nút “Verify Your Profile” trong “Profile”
Pre-condition
❖ User đã thực hiện đăng nhập trước đó
❖ Thơng tin nhập vào khơng có lỗi
Post-condition
❖ N/a
Activities Flow
(2) Load form nhập thông
tin
(1) Yêu cầu xác
minh
(3) Nhập thơng tin
(4) Nhận thơng tin xác
minh
Fail
Success
Kiểm tra tính hợp lệ
(4.1) Hiện lỗi
(4.2) Lưu trữ thông
tin
(5) Gửi mail thông
báo cho quản trị
viên
Activities Flow
Business Rules
Activity
(3)
(4)
(4.2)
(5)
BR Code
BR2
Description
Yêu cầu user xác nhận hiển thị và điền các thông tin
với yêu cầu:
Tên trường
Dạng dữ liệu
Require
[Name]
[Email]
String: Tên chính thức
String: Email người
dùng
*
*
[Website]
[Document]
String: địa chỉ website
File: chấp nhận các tài
liệu là căn cước, hộ
chiếu hoặc bằng lái xe
*
*
[Telegram]
String: bắt đầu bằng ‘@’
*
[Twitter]
String
*
⮚ Trường hợp lỗi: hiện lỗi cho người dùng bằng
bolderColor = red trên từng field lỗi.
Kiểm tra lại thông tin như (3)
Lưu thông tin xác thực vào DB. Document được gửi lưu
trữ trên aws.s3
Gửi email tới quản trị viên thơng báo có đơn xác minh mới
với form:
“Dear admin,
You have a new verification request. Click on the link
below to browse the profile.
https://<domain>/path
From <name bot>”
UC7: Duyệt xác minh tài khoản
Name
Duyệt xác minh tài khoản
Description
Cho phép quản trị viên duyệt đơn xác minh tài khoản từ khách
hàng
Actor
Admin
Trigger
❖ Khi user click vào nút “Request verify” trong “Dashboard”
Pre-condition
❖ User đã thực hiện đăng nhập trước đó
❖ User có quyền thực thi
Post-condition
❖ N/a
Activities Flow
(2) Load danh sách xác
minh
(1) Kiểm tra xác
minh
(3) Chọn hồ sơ
(4) Hiện thông tin hồ sơ
(5) Xác minh hồ sơ
Không đồng ý
(5.2) Click "reject"
Đồng ý
(5.1) Click "Approve"
(6) Cập nhập hồ sơ tích
xanh. Cập nhật đơn u
cầu
(7) Gửi mail thành cơng
cho người u cầu tích
xanh
(8) Cập nhập đơn yêu cầu
(9) Gửi mail thông báo
thất bại cho người yêu cầu
tích xanh
Activities Flow
Business Rules
Activity
(4)
(5)
(5.2)
(6)
(7)
(8)
(9)
BR Code
BR2
Description
Hiển thị thông tin chi tiết đơn yêu cầu với các nội dung:
⮚ Name
⮚ Email
⮚ Website
⮚ Document
⮚ Telegram
⮚ Twitter
User kiểm tra hồ sơ:
⮚ Nếu đồng ý duyệt ấn vào “Approve”
⮚ Nếu không đồng ý. Ấn vào “Reject”
Hiện popup yêu cầu nhập lý do từ chối(require).
Cập nhật tích xanh cho khách hàng. Cập nhật thành công
cho đơn yêu cầu xác minh
Gửi email tới người dùng với form:
“Dear <nameUser>,
Your account has been successfully verified
From <nameTeam>”
Cập nhật từ chối yêu cầu cho đơn yêu cầu xác minh
Gửi email xác minh thất bại cho khách hàng:
“Dear <nameUser>,
Your document was rejected for the reason: <reason>
From <nameTeam>”
UC8: Niêm yết NFT
Name
Niêm yết NFT lên sàn giao dịch
Description
Cho phép niêm yết NFT
Actor
Admin, Khách hàng, Đối tác quảng cáo
Trigger
❖ Khi user click vào nút “Listing” trong “Collection”
Pre-condition
❖ User đã thực hiện đăng nhập trước đó
Post-condition
❖ N/a
Activities Flow
(1) Niêm yết NFT
(2) Load danh sách NFT sở
hữu
(3) Chọn NFT
(4) Hiện form thông tin
niêm yết
(5) Nhập thông tin
niêm yết
(6) Nhận thông tin NFT
(6.2) Xác nhận
quyền sở hữu
Success
fail
Kiểm tra tính hợp lệ
(6.1) Hiện lỗi
false
true
(7) Thực hiện giao
dịch
fail
(7.1) Hiện lỗi
Activities Flow
success
(7.2)Hiện kết quả
Business Rules
Activity
(4)
(6)
(6.2)
(7)
(7.2)
BR Code
BR2
Description
Hiển thị thông tin chi tiết với các nội dung:
⮚ Type listing: Auction or fixed price
- Nếu Auction: Yêu cầu giá ban đầu và thời
gian kết thúc đấu giá
- Nếu fixed price: Yêu cầu giá NFT
⮚ Amount: số lượng NFT
Tất cả các trường đều bắt buộc. Nếu không hợp lệ thì
bolderColor = red
Xác nhận lại các yêu cầu phía trên
Tương tác contract sàn giao dịch để kiểm tra quyền sở
hữu NFT của user.
Cập nhật trạng thái listing và thông tin giá bằng cách
tương tác với contract. Yêu cầu xác thực giao dịch bởi
người dùng
Gửi về user thông tin listing