Tải bản đầy đủ (.pdf) (64 trang)

Xây dựngsàn giao dịch NFT (báo cáo cuối kì đồ án 2)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.17 MB, 64 trang )

ĐẠ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


×