TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
-----🕮-----
Đồ Án 1
Tìm hiểu Blockchain
và xây dựng ứng dụng ví tiền mã hoá và NFT
Giảng viên:
ThS.Huỳnh Tuấn Anh
Sinh viên:
19521578 – Nguyễn Xuân Hưng
19521638 – Trương Hưng Huy
TPHCM, 06 – 2022
Đánh giá
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
1|Page
LỜI CẢM ƠN
Xin gửi lời cảm ơn đến Thầy Huỳnh Tuấn Anh, Giảng viên Khoa Công nghệ Phần
mềm đã tạo điều kiện và cơ hội giúp đỡ nhóm em trong q trình xây dựng và hiện thực
hóa đồ án mơn học này. Trong thời gian qua nhờ sự chỉ bảo của thầy mà nhóm em đã có
được những kiến thức và định nghĩa nhất định để hoàn thành bản báo cáo một cách tốt
nhất. Tuy nhiên, trong quá trình nghiên cứu và thực hiện đồ án, với thời gian, kiến thức và
kinh nghiệm cịn hạn chế nên khó tránh khỏi những sai sót, rất mong nhận được sự góp ý
của các bạn để tích lũy bài học kinh nghiệm cho việc thực hiện đồ án được tốt hơn.
Một lần nữa nhóm em xin chân thành cảm ơn thầy.
2|Page
Mục lục
1. Giới thiệu chung
6
1.1 Thơng tin nhóm.........................................................................................................6
1.2 Tổng quan về đề tài...................................................................................................6
1.2.1
Giới thiệu về đề tài
6
1.2.2
Phạm vi nghiên cứu
6
1.2.3
Nội dung nghiên cứu
7
1.2.4
Kết quả hướng tới
7
1.3 Công cụ sử dụng .......................................................................................................7
2. Cơ sở lý thuyết và các nghiên cứu liên quan
8
2.1 Blockchain ................................................................................................................8
2.1.1
Tổng quan :
8
2.1.1.1 Blockchain là gì ?
8
2.1.1.2 Cách thức hoạt động của blockchain
8
2.1.2
Smart Contract
9
2.1.3
Token ERC-20 (Fungible token)
10
2.1.4
Token ERC-721 ( Non-Fungible tokens)
11
2.1.5
Sự khác nhau giữa Non-Fungible Token (NFT) & Fungible Token (FT) 13
2.2 Web3 là gì ? ............................................................................................................13
2.2.1
Những đột phá
14
2.2.2
Tiềm năng
15
2.2.3
Hạn chế
15
2.3 Flutter là gì ? ...........................................................................................................16
2.3.1
Thành phần chính
16
2.3.2
Tính năng
17
2.3.3
Lý do nên sử dụng Flutter ?
18
2.3.4
Tính năng phát triển nhanh chóng các ứng dụng
18
3. Thiết kế cơ sở dữ liêu
20
3.1 Sơ đồ logic ..............................................................................................................20
3|Page
3.2 Danh sách các quan hệ ............................................................................................20
3.2.1
Bảng wallet : Thông tin ví tiền mã hố
20
3.2.2
Bảng token : Thơng tin tiền mã hố
21
3.2.3
Bảng transaction : Thơng tin giao dịch
21
3.2.4
Bảng nft : Thông tin vật phẩm
21
4. Thiết kế giao diện
22
4.1 Danh sách các màn hình .........................................................................................22
4.2 Mơ tả màn hình .......................................................................................................25
4.2.1
Màn hình đăng nhập
25
4.2.2
Màn hình Loading
26
4.2.3
Màn hình Home
27
4.2.4
Màn hình Chọn account
28
4.2.5
Màn hình thêm ví từ private key
29
4.2.6
Màn hình ví token
30
4.2.7
Màn hình ví nft
31
4.2.8
Màn hình thêm token
32
4.2.9
Màn hình chi tiết token
33
4.2.10 Màn hình thêm nft collection
34
4.2.11 Màn hình lịch sử giao dịch
35
4.2.12 Màn hình chi tiết giao dịch
36
4.2.13 Màn hình cài đặt
37
4.2.14 Màn hình cài đặt chung
38
4.2.15 Màn hình bảo mật và riêng tư
39
4.2.16 Màn hình xác thực mật khẩu
40
4.2.17 Màn hình xem cụm từ bí mật của ví
41
4.2.18 Màn hình đổi mật khẩu
42
4.2.19 Màn hình xem private key của ví
43
4.2.20 Màn hình thơng tin về ứng dụng
44
4.2.21 Màn hình chính sách bảo mật
45
4|Page
4.2.22 Màn hình điều khoản sử dụng
46
4.2.23 Màn hình nhận token
47
4.2.24 Màn hình rút token (chuyển token)
48
4.2.25 Màn hình chuyển NFT
50
4.2.26 Màn hình onboarding
51
4.2.27 Màn hình tạo ví
52
4.2.28 Màn hình nhập ví từ cụm từ bí mật
53
5. Cơng nghệ sử dụng, cài đặt và độ hồn thiện chức năng
54
5.1 Cơng nghệ sử dụng .................................................................................................54
5.2 Môi trường cài đặt và kiểm thử ..............................................................................54
5.3 Độ hoàn thiện chức năng ........................................................................................54
6. Kết luận
56
6.1 Tổng kết ..................................................................................................................56
6.2 Kết quả đạt được .....................................................................................................56
6.2.1
Ưu điểm
56
6.2.2
Nhược điểm
56
6.3 Hướng phát triển .....................................................................................................56
5|Page
1. Giới thiệu chung
1.1 Thơng tin nhóm
Nhóm gồm 2 thành viên:
-
Thành viên 1
MSSV
Lớp
Email
: Nguyễn Xuân Hưng
: 19521578
: PMCL2019.2
:
-
Thành viên 2
MSSV
Lớp
Email
: Trương Hưng Huy
: 19521638
: PMCL2019.2
:
1.2 Tổng quan về đề tài
1.2.1Giới thiệu về đề tài
Blockchain là xu hướng công nghệ hiện nay và được ứng dụng nhiều nhiều lĩnh vực,
ngành nghề khác nhau. Những quốc gia hoặc doanh nghiệp lớn đều dành nhiều cơng
sức và tài chính để nghiên cứu công nghệ blockchain với mong muốn tạo ra những sản
phẩm thực tiễn và bảo mật cao.
Dựa trên nền tảng blockchain, việc bảo mật các thiết bị di động được thực hiện bằng
cách sử dụng chữ ký tiền điện tử, để đảm bảo tính chính xác và tồn vẹn của các thiết bị.
Nhờ các đặc tính trên của blockchain mà việc tạo ra ví tiền điện tử nhằm mục đích
lưu trữ, gửi, nhận và theo dõi số dư các đồng tiền điện tử như coin/token bên trong đó. Hiểu
đơn giản thì ví tiền điện tử cũng giống như một tài khoản ngân hàng. Điểm khác biệt chính
là ví này có tính bảo mật cao hơn nhờ cơ chế mã hóa thơng tin, khơng định danh người sở
hữu ví và tiền lưu trữ trong ví là tiền điện tử.
1.2.2Phạm vi nghiên cứu
Bài nghiên cứu này tập trung vào các chức năng cơ bản của ví tiền điện tử :
-
Gửi, nhận và hiển thị thơng tin tiền mã hố đang sở hữu
Gửi, nhận và hiển thị thông tin NFT đang sở hữu
Hiển thị lịch sử giao dịch
6|Page
1.2.3Nội dung nghiên cứu
Nghiên cứu bao gồm các khái niệm về blockchain, giới thiệu về ví tiền điện tử, các
khái niệm về ERC20 (Token), ERC721(NFT), cách triển khai contract trên một mạng
blockchain đơn giản.
1.2.4Kết quả hướng tới
-
Kiến thức về blockchain
Tương tác với các contract được deploy trên mạng blockchain
Xây dựng thành cơng ví tiền điện tử
1.3 Cơng cụ sử dụng
-
Github
IDE Visual Code Studio
Notion
7|Page
2. Cơ sở lý thuyết và các nghiên cứu liên quan
2.1 Blockchain
2.1.1Tổng quan :
2.1.1.1 Blockchain là gì ?
Khái niệm blockchain từ lâu đã trở thành một thuật ngữ quen thuộc trong ngành
công nghệ thông tin cũng như các lĩnh vực khác của cuộc sống. Các doanh nghiệp, tập
đoàn và thậm chí cả chính phủ đều đang nỗ lực áp dụng công nghệ blockchain vào các lĩnh
vực khác nhau để thúc đẩy hiệu quả công việc.
Mỗi khối (block) đều chứa thông tin về thời gian khởi tạo và được liên kết với khối
trước đó, kèm theo đó là một mã thời gian và dữ liệu giao dịch. Dữ liệu khi đã được mạng
lưới chấp nhận thì sẽ khơng có cách nào thay đổi được. Blockchain được thiết kế để chống
lại việc gian lận, thay đổi của dữ liệu.
2.1.1.2 Cách thức hoạt động của blockchain
Blockchain là sự kêt hợp giữa 3 loại cơng nghệ :
-
Mật mã học: để đảm bảo tính minh bạch, tồn vẹn và riêng tư thì cơng nghệ
Blockchain đã sử dụng public key và hàm hash function.
Mạng ngang hàng: Mỗi một nút trong mạng được xem như một client và cũng là
server để lưu trữ bản sao ứng dụng.
Lý thuyết trò chơi: Tất cả các nút tham gia vào hệ thống đều phải tuân thủ luật chơi
đồng thuận (giao thức PoW, PoS,…) và được thúc đẩy bởi động lực kinh tế.
Hệ thơng blockchain chia thành 3 loại chính :
-
-
-
Public: Bất kỳ ai cũng có quyền đọc và ghi dữ liệu trên Blockchain. Quá trình xác
thực giao dịch trên Blockchain này địi hỏi phải có rất nhiều nút tham gia. Vì vậy,
muốn tấn cơng được vào hệ thống Blockchain này cần chi phí rất lớn và thực sự
khơng khả thi. Ví dụ: Bitcoin, Ethereum,…
Private: Người dùng chỉ được quyền đọc dữ liệu, khơng có quyền ghi vì điều này
thuộc về bên tổ chức thứ ba tuyệt đối tin cậy. Vì đây là một Private Blockchain, cho
nên thời gian xác nhận giao dịch khá nhanh vì chỉ cần một lượng nhỏ thiết bị tham
gia xác thực giao dịch. Ví dụ: Ripple là một dạng Private Blockchain, hệ thống này
cho phép 20% các nút là gian dối và chỉ cần 80% còn lại hoạt động ổn định là được.
Permissioned (hay còn gọi là Consortium): một dạng của Private nhưng bổ sung
thêm 1 số tính năng khác, đây là sự kết hợp giữa Public và Private. Ví dụ: Các ngân
hàng hay tổ chức tài chính liên doanh sẽ sử dụng Blockchain cho riêng mình.
8|Page
2.1.2Smart Contract
Smart Contract (hay Hợp đồng thông minh) là các chương trình chạy trên
blockchain. Hợp đồng thơng minh cũng giống như một hợp đồng kỹ thuật số bị bắt buộc
thực hiện bởi một bộ quy tắc cụ thể. Các quy tắc này do bộ mã máy tính xác định trước mà
tất cả các nút (node) trong mạng đều phải sao chép và thực thi các quy tắc đó.
Về bản chất, Smart Contract chỉ là một đoạn mã chạy trên một hệ thống phân tán
(blockchain), cho phép tạo ra các giao thức Permissionless (tức là khơng cần trao quyền).
Điều đó có nghĩa là:
-
Hai bên trong hợp đồng có thể đưa ra các cam kết thông qua blockchain mà không
cần phải biết về danh tính hay tin tưởng lẫn nhau.
Họ có thể đảm bảo rằng nếu các điều kiện của hợp đồng khơng được thỏa mãn, hợp
đồng sẽ khơng được thực thi.
Ngồi ra, việc sử dụng hợp đồng thông minh loại bỏ nhu cầu đối với các bên trung
gian, giúp giảm đáng kể chi phí hoạt động.
Mỗi blockchain có một phương pháp triển khai hợp đồng thơng minh khác nhau, ví
dụ trên Cosmos có WASM, Polkadot có ink!,... Trong đó nổi bật nhất vẫn là Smart Contract
chạy trên máy ảo của Ethereum (Ethereum Virtual Machine - EVM).
9|Page
2.1.3Token ERC-20 (Fungible token)
ERC20 là một tiêu chuẩn kỹ thuật được sử dụng để phát hành và triển khai token
trên mạng lưới Ethereum, một dạng Fungible Token. ERC20 cung cấp cho các nhà phát
triển danh sách các quy tắc phải tuân theo cho phép các ERC20 hoạt động liền mạch trong
nền tảng Ethereum.
Ứng dụng :
-
-
Cấu trúc contract của ERC20 bao gồm sáu chức năng bắt buộc: totalSupply,
balanceOf ,transfer, transferFrom, approve và allowance . Ngồi ra, cịn có các chức
năng tùy chọn như name, symbol và decimal.
Bằng cách kết hợp tất cả các chức năng ở trên, chúng ta đã có thể tạo ra ERC20
token. Chúng ta có thể truy vấn tổng nguồn cung, kiểm tra số dư, chuyển tiền và cấp
quyền cho các DApp khác quản lý token của mình.
Mỗi ERC20 token có thể thay thế lẫn nhau, tức là mỗi đơn vị có thể khả năng sử
dụng và giá trị tương đương. Nếu bạn nắm giữ 1 USDC, việc bạn nắm giữ token cụ thể nào
không quan trọng. Bạn có thể giao dịch, trao đổi nó với token của người khác và chúng
vẫn giống hệt nhau về mặt chức năng, giống như việc đi chợ mua thịt cá, bạn trả bằng tiền
10,000 VND nào cũng được.
Điều này rất có lợi, nếu token của bạn có mục tiêu trở thành một loại tiền tệ nào đó.
Bạn sẽ khơng muốn các đơn vị riêng lẻ có các đặc điểm khác biệt, bởi điều này khiến chúng
10 | P a g e
khơng thể thay thế được. Điều này có thể khiến một số token trở nên có giá trị hơn hoặc ít
có giá trị hơn những token khác, làm suy yếu mục đích sử dụng của chúng.
Cách thức hoạt động:
-
-
-
Nói một cách đơn giản, Smart Contract hoạt động như một chương trình tất định.
Các Smart Contract sẽ thực thi một tác vụ cụ thể trong trường hợp thỏa mãn các
điều kiện nhất định. Do đó, một hệ thống Smart Contract thường tuân theo các câu
lệnh "nếu… thì…".
Trên mạng blockchain, các Smart Contract chịu trách nhiệm thực thi và quản lý các
hoạt động diễn ra trên blockchain khi những người dùng (address) tương tác với
nhau. Bất kỳ địa chỉ nào không phải là smart contract đều được gọi là Tài khoản độc
lập (Externally Owned Account - EOA). Do đó, smart contract sẽ do máy tính kiểm
sốt và EOA do người dùng kiểm soát.
Smart Contract Ethereum bao gồm một mã hợp đồng và hai khóa cơng khai:
o Khóa cơng khai thứ nhất là khóa do người tạo hợp đồng cung cấp.
o Khóa cịn lại đại diện cho chính hợp đồng, khóa này có vai trò như một mã
định danh kỹ thuật số duy nhất cho mỗi Smart Contract.
Smart Contract được triển khai thông qua giao dịch blockchain và chúng chỉ được
kích hoạt khi một Tài khoản độc lập (EOA) hoặc các Smart Contract khác call chúng. Tuy
nhiên, kích hoạt đầu tiên ln từ phía EOA (người dùng).
2.1.4Token ERC-721 ( Non-Fungible tokens)
ERC721 là một chuẩn token NFT (Non-Fungible Token) được sử dụng phổ biến
ngày nay, nó là một chuẩn token phức tạp hơn ERC20, với nhiều phần mở rộng tùy chỉnh.
11 | P a g e
ERC-721 được tạo ra bởi bốn nhà phát triển là William Entriken, Dieter Shirley, Jacob
Evans và Nastassia Sachs vào năm 2018.
Ứng dụng :
-
Digital Art
-
Collectibles
12 | P a g e
2.1.5Sự khác nhau giữa Non-Fungible Token (NFT) & Fungible
Token (FT)
Fungible Token (FT) có thể hiểu là mỗi token là giống hệt nhau, có thể thay thế cho
nhau và có thể phân chia được. Các tài sản đáng tin cậy được sử dụng hàng ngày như đô la
Mỹ, Bitcoin, Ethereum, việt nam đồng,... đều có thể xem là các tài sản có thể thay thế được
cho nhau.
NFT mở rộng khái niệm “không thể thay thế” bằng cách tận dụng blockchain
Ethereum để đại diện cho các tài sản vật lý hoặc tài sản kỹ thuật số duy nhất. Quyền sở hữu
NFT được xác thực và theo dõi bằng cách sử dụng một blockchain cơng khai.
NFT có nhiều trường hợp sử dụng. Nó có thể là một tài sản kỹ thuật số trong một
trị chơi, một tác phẩm nghệ thuật mã hố có khả năng sưu tầm hoặc thậm chí là một vật
thể trong thế giới thực như bất động sản,...
2.2 Web3 là gì ?
Web 3.0 là thế hệ thứ ba sắp tới của Internet, nơi các trang web và ứng dụng sẽ có
thể xử lý thơng tin theo cách thơng minh giống như con người thông qua các công nghệ
như máy học (ML), Dữ liệu lớn, công nghệ sổ cái phi tập trung (DLT), v.v. Ban đầu,
Web 3.0 được nhà phát minh World Wide Web, Tim Berners-Lee, gọi là Semantic Web,
và nó nhằm mục đích trở thành một internet tự chủ, thơng minh, và cởi mở hơn.
Định nghĩa Web 3.0 có thể được mở rộng như sau: dữ liệu sẽ được kết nối với nhau
theo cách phi tập trung. Đây sẽ là một bước tiến vượt bậc so với thế hệ internet hiện tại
của chúng ta (Web 2.0), nơi dữ liệu chủ yếu được lưu trữ trong các kho lưu trữ tập trung.
Hơn nữa, người dùng và máy móc sẽ có thể tương tác với dữ liệu. Nhưng để làm
được điều này, các chương trình cần hiểu được thơng tin cả về mặt khái niệm lẫn ngữ
13 | P a g e
cảnh. Với suy nghĩ này, Web 3.0 có hai nền tảng là semantic web (mạng ngữ nghĩa) và trí
tuệ nhân tạo (AI).
2.2.1Những đột phá
Web 3.0 thừa hưởng các đặc tính tốt của Web 2.0 và có thêm những yếu tố giúp
giải quyết hạn chế của Web 2.0 bao gồm:
-
-
Verifiable: Mọi thứ đều minh bạch và có thể xác nhận on-chain.
Trustless & Permissionless: Hạn chế tối đa những yếu tố liên quan đến lịng tin
và bất kỳ ai cũng có thể tham gia.
Self-Governing: Lấy người dùng làm trọng tâm, bản thân người dùng có tồn
quyền với thơng tin và tài sản của mình.
Distributed: Quyền lực được phân phối cho người dùng và các quyết định sẽ
được đưa ra và thực hiện bởi các tổ chức tự trị phi tập trung (DAO). Tất cả đều
khơng thể bị kiểm sốt bởi một bên tổ chức tập trung nào đó.
Native built-in payments: Các ứng dụng của Web 3.0 không yêu cầu người dùng
phải cung cấp thông tin cá nhân và không thể ngăn cản việc thanh tốn, giao dịch
của người dùng
Nhìn vào các đặc điểm trên anh em có thấy tương sự tương đồng giữa những thứ
mà Web 3.0 mang lại và blockchain mang lại khơng? Khơng phải ngẫu nhiên blockchain
có thể phát triển mạnh mẽ như vậy, chúng là một phần không thể thiếu trong sự hình
thành của Web 3.0. Có thể nói nhờ blockchain mà có Web 3.0 và nhờ Web 3.0 mà
blockchain có thể phát triển.
14 | P a g e
2.2.2Tiềm năng
Những đột phá của Web 3.0 đã và đang mở ra những cánh cổng lớn giúp tạo ra
những mô hình kinh doanh và ngành nghề mà trước đây ta khó có thể tưởng tượng tới.
Minh chứng điển hình nhất vào thời điểm hiện tại chính là Crypto. Việc áp dụng
cơng nghệ blockchain với việc loại bỏ yếu tố lịng tin, loại bỏ sự cần thiết của bên thứ ba
trong giao dịch đã tạo ra những trải nghiệm và những sản phẩm thực sự tuyệt vời.
Chỉ cần một chiếc ví Non-Custodial, ta có thể gửi tiền cho bất kỳ ai ở bất kỳ đâu
trên thế giới.
-
-
-
Nhờ DeFi ta có thể gửi tiền trong ngân hàng mà không cần phải đến ngân hàng
trong khi lãi suất tốt hơn, ta có thể vay mà khơng cần nhìn mặt chủ nợ, ta có thể tối
ưu lợi nhuận bằng cách xoay vòng vốn hoặc farming.
Nhờ các game Play to Earn và NFT mà tài sản trong game của người chơi là của
người chơi và không thể bị phá hủy, đồng thời cũng tạo ra một nguồn thu nhập từ
game.
Ngồi ra cịn rất nhiều những đột phá khác đang chờ được khám phá.
2.2.3Hạn chế
Tuy có một tiềm năng rất to lớn nhưng phải thừa nhận rằng Web 3.0 vẫn còn ở
giai đoạn khá sơ khởi.
Một vài hạn chế có thể kể đến như:
-
-
-
Tính mở rộng: Vẫn còn một khoảng cách lớn giữ Web 2.0 và Web 3.0 nếu xét về
tính mở rộng, tốc độ xử lý, chi phí,...
UX: Trải nghiệm người dùng vẫn chưa thực sự tốt vì để tham gia các sản phẩm
của Web 3.0 như Crypto, người dùng cần phải học những kiến thức mới, tải những
phần mềm mới và thao tác nhiều bước khác nhau. Đây là một rào cản để tiến tới
mass-adoption.
Tính tiếp cận: Các ứng dụng hầu hết được build độc lập chứ khơng được tích hợp
với các ứng dụng phổ biến và quen thuộc của Web 2.0, làm giảm tính tiếp cận đến
với người dùng.
Chi phí: Chi phí để phát triển một dự án là rất đắt đỏ, những dapps thường gặp
khó khăn trong việc đưa code lên blockchain vì phí gas của Ethereum hay chi phí
phải bỏ ra trong việc audit cũng rất cao.
Tuy có những hạn chế nhưng tất cả đều đang được khắc phục dần. Việc còn ở giai
đoạn sớm và còn nhiều vấn đề cần giải quyết cũng đồng nghĩa với việc mở ra nhiều cơ
hội cho những con người tin tưởng vào tương lai của Web 3.0 và phát triển những sản
phẩm liên quan.
15 | P a g e
2.3 Flutter là gì ?
Như chúng ta đã đề cập đến trong phần giới thiệu, nền tảng này được dùng để phát
triển phần mềm điện thoại. Nhưng đó chưa phải là định nghĩa hoàn chỉnh về nền tảng
này. Flutter được biết đến là nền tảng hỗ trợ phát triển phần mềm, ứng dụng di động.
Những ứng dụng đa nền cho hệ điều hành IOS và Android do tập đoàn Google phát triển.
Nó được sử dụng rất phổ biến hiện nay trong giới lập trình. Nhiệm vụ của Flutter chính là
tạo ra các ứng dụng gốc dành cho Google. Đây chính là định nghĩa đầy đủ nhất giải đáp
Flutter là gì?
2.3.1Thành phần chính
Flutter gồm 2 thành phần quan trọng:
-
-
Một SDK (Software Development Kit): Một bộ sưu tập các công cụ sẽ giúp bạn
phát triển các ứng dụng của mình. Điều này bao gồm các công cụ để biên dịch mã
của bạn thành mã máy gốc (mã cho iOS và Android).
Một Framework (UI Library based on widgets): Một tập hợp các thành phần UI có
thể tái sử dụng (button, text inputs, slider, v.v.) giúp bạn có thể cá nhân hóa tùy
theo nhu cầu của riêng mình.
16 | P a g e
Đây chính là hai thành phần chính trả lời cho câu hỏi thành phần quan trọng nhất
của Flutter là gì. Hầu hết các nền tảng xây dựng web hay ứng dụng hiện nay đều có chứa
framework. Tùy theo mục đích của nền tảng và người sử dụng mà framework này có thể
thay đổi khác nhau. Tuy nhiên nhìn chung, những tính năng mà nó đem lại thật sự hiệu
quả.
2.3.2Tính năng
Sau khi đã tìm hiểu về định nghĩa cũng như thành phần của Flutter chúng tơi nghĩ
rằng tính năng cũng rất quan trọng. Các lập trình viên trước khi sử dụng nền tảng này
cũng nên biết tính năng của Flutter là gì?
Đối với các chuyên gia về lập trình, Flutter được coi như như một react
framework. Nó thật sự mạnh mẽ và tiện lợi khi sử dụng để phát triển ứng dụng nền cho
Google. Nền tảng này còn sử dụng một dạng ngơn ngữ lập trình khá dễ hiểu chính là
Dart. Ngay cả những bạn lập trình viên mới cũng có thể nắm bắt và sử dụng ngơn ngữ lập
trình này.
17 | P a g e
Khơng chỉ vậy, Flutter hỗ trợ phát triển nhanh chóng các phần mềm ứng dụng một
cách linh hoạt. Giao diện dành cho người dùng dễ hiểu và đẹp mắt. Đây cũng chính là
điểm được đánh giá cao trong các tính năng của Flutter. Ngồi ra, khi nhắc đến tính năng
của Flutter là gì. Chúng ta khơng thể khơng kể đến việc nó có thể hỗ trợ nhiều widget
khác nhau. Flutter cịn có thể được thể hiện trên một nền tảng hồn tồn khác.
Tính năng cuối cùng chúng ta phải kể đến đó chính là hiệu năng làm việc cao và
nhanh chóng. Các lập trình viên đều đánh giá cao về các tính năng này của Flutter đem
lại. Nó thật sự hữu hiệu trong mảng phát triển ứng dụng gốc cho Google và các ứng dụng
nền. Có lẽ vì những tính năng nổi bật này, mà Flutter được lựa chọn sử dụng rất nhiều bởi
các nhà lập trình.
2.3.3Lý do nên sử dụng Flutter ?
Sau khi khảo sát những lập trình viên, chúng tôi đã rút ra được rất nhiều lý do để
sử dụng Flutter. Khơng chỉ chung chung bởi vì Flutter đem lại hiệu quả. Mà hơn cả, nó
có những lý do thuyết phục các nhà lập trình sử dụng.
2.3.4Tính năng phát triển nhanh chóng các ứng dụng
Đây là một trong số những tính năng chúng tơi đã kể đến phía trên. Tuy nhiên, nó
thực sự là một lý do thuyết phục người dùng lựa chọn. Flutter có rất nhiều tính năng hot
reload. Người dùng có thể trải nghiệm nhanh chóng và dễ dàng hơn rất nhiều so với nền
18 | P a g e
tảng khác. Đây chính là lời giải đáp cho câu hỏi lý do nên sử dụng Flutter là gì? Các bạn
nên cân nhắc về điều này.
Chưa kể đến, khả năng xây dựng giao diện và sửa lỗi nhanh cho người dùng. Đây
chính là những tính năng thuyết phục để giúp người dùng phát triển ứng dụng dễ dàng.
Những trải nghiệm về việc tải lại cũng rất dễ, không làm mất đi trạng thái ở trên
emulator, simulator và device cho cả iOS và Android.
19 | P a g e
3. Thiết kế cơ sở dữ liêu
3.1 Sơ đồ logic
3.2 Danh sách các quan hệ
3.2.1Bảng wallet : Thơng tin ví tiền mã hoá
STT
1
2
3
Thực thể
address
privateKey
isImportWallet
Kiểu dữ liệu
String
String
boolean
4
balanceToken
Token
5
Index
Int
6
Avatar
ImageData
20 | P a g e
Ghi chú
Địa chỉ ví
Chuỗi khơi phục ví
Loại ví được
import
Thơng tin số tiền
hiện có của ví
Thứ tự của ví trên
app
Lưu hình ảnh đại
diện của ví
3.2.2Bảng token : Thơng tin tiền mã hố
STT
1
2
3
4
Thực thể
address
Symbol
Decimal
imageUrl
Kiểu dữ liệu
String
String
Int
String
5
6
Balance
Avatar
Double
ImageData
7
Amunt
Double
Ghi chú
Địa chỉ token
Kí hiệu token
Giá trị nhị phân
Đường dẫn hình
ảnh
Số dư của token
Lưu hình ảnh đại
diện của token
Số dư quy đổi ra
tiền tệ
3.2.3Bảng transaction : Thông tin giao dịch
STT
1
Thực thể
Hash
Kiểu dữ liệu
String
2
From
String
3
4
5
To
Timestamp
Type
String
Int
Int
Ghi chú
Chuỗi hash đại
diện của giao dịch
Chuyển từ địa chỉ
ví
Đến địa chỉ ví
Thời gian giao dịch
Loại giao dịch
3.2.4Bảng nft : Thông tin vật phẩm
STT
1
2
Thực thể
Name
Image
Kiểu dữ liệu
String
String
3
4
Description
tokenId
String
Int
21 | P a g e
Ghi chú
Tên vật phẩm
Đường dẫn hình
ảnh đại diện
Chú thích vật phẩm
Số đại diện cho vật
phẩm
4. Thiết kế giao diện
4.1 Danh sách các màn hình
Màn hình
Chức năng
1
Màn hình đăng nhập
Đăng nhập vào ví thơng qua vân
tay (nếu có) hoặc mã pin
2
Màn hình Loading
Menu chứa các thơng tin như
address, chế độ chơi ,hướng dẫn
chơi,…
3
Màn hình Home
Màn hình hiển thị các thơng tin
chung của ví như địa chỉ ví, tên
ví, button nhận token và gửi/rút
token.
4
Màn hình chọn account
Thay đổi nhanh account hiện tại.
5
Dialog báo lỗi
Hiển thị dialog báo lỗi
6
Màn hình thêm ví từ
private key
Thêm ví từ private key
7
Màn hình ví token
Hiển thị avatar, tên ví, địa chỉ ví,
số dư hiện tại, tất cả token mà
người dùng đã thêm vào và số dư
của từng token.
8
Màn hình ví nft
Hiển thị avatar, tên ví, địa chỉ ví,
số dư hiện tại, tất cả collection
NFT mà người dùng đã thêm vào
(và đang sỡ hữu) và các NFTs
trong collection tương ứng.
9
Màn hình thêm token
Cho phép người dùng thêm token
hợp lệ vào ví
10
Màn hình chi tiết token
Hiển thị thông tin chi tiết của
token như tổng cung, số người
đang nắm, số lượng giao dịch,
địa chỉ của smart contract của
token,… trên Etherscan
11
Màn hình thêm nft
collection
Cho phép người dùng thêm NFT
collection hợp lệ vào ví
12
Màn hình lịch sử giao dịch
Hiển thị lịch sử giao dịch
(chuyển, nhận/rút, quy đổi) của
ví đang được chọn.
STT
22 | P a g e
13
Màn hình chi tiết giao dịch
Hiển thị thơng tin chi tiết của
giao dịch như tổng cung, số
người đang nắm, số lượng giao
dịch, địa chỉ của smart contract
của token,… trên Etherscan
14
Màn hình cài đặt
Hiển thị các tuỳ chọn cài đặt
người dùng có thể xem hoặc
chỉnh sửa như đăng xuất, thơng
tin app bảo mật và riêng tư, cài
đặt chung.
15
Màn hình cài đặt chung
Cho phép đổi đơn vị tiền tệ giữa
USD và VND, đổi ngơn ngữ
tiếng Anh và tiếng Việt
16
Màn hình bảo mật và riêng
tư
Hiển thị các tuỳ chọn cho phép
người dùng xem lại cụm từ bí
mật, thay đổi mật khẩu, xem lại
private key
17
Màn hình xác thực mật
khẩu
Yêu cầu xác thực mật khẩu
18
Màn hình xem cụm từ bí
mật của ví
Xem lại cụm từ bí mật của ví
19
Màn hình đổi mật khẩu
Đổi mật khẩu
20
Màn hình xem private key
của ví
Xem lại private key của tài khoản
đang chọn
21
Màn hình thơng tin về ứng
dụng
Xem thơng tin về ứng dụng
22
Màn hình chính sách bảo
mật
Xem chính sách bảo mật
23
Màn hình điều khoản sử
dụng
Xem điều khoản sử dụng
24
Màn hình nhận token
Hiển thị mã QR để người gửi
quét và hiển thị địa chỉ ví của
người dùng cho phép copy và
share
25
Màn hình rút token (chuyển
token)
Cho phép chuyển token hoặc rút
đến địa chỉ ví khác
26
Màn hình chuyển NFT
Cho phép chuyển NFT hoặc rút
đến địa chỉ ví khác
23 | P a g e
27
Dialog cảnh báo
Hiển thị dialog cảnh báo
28
Toast báo lỗi
Hiển thị toast báo lỗi
29
Toast thành cơng
Hiển thị toast thành cơng
30
Màn hình onboarding
Dẫn đến màn hình tạo ví hoặc
nhập ví
31
Màn hình tạo ví
Tạo ví mới
32
Màn hình nhập ví từ cụm
từ bí mật
Nhập ví
33
Màn hình qt mã QR
Qt mã để chuyển token nhanh
24 | P a g e