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

Tìm hiểu Blockchain và xây dựng web game NFT cơ bản

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 (4.76 MB, 32 trang )

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 web game NFT cơ bản
Giảng viên:
ThS.Huỳnh Tuấn Anh
Sinh viên:
19521779 – Dương Hoàng Long
19521693 – Lê Nguyễn Minh Khoa

TPHCM, 06 - 2022


Đánh giá
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...


…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...

…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...
…………………………………………………………………………………………...

2|Page


LỜI CẢM ƠN
Trân trọng 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 đỡ em trong q trình phát triển và hồn
thiện đồ án mơn học nghiên cứu này. Trong thời gian qua, nhờ sự hướng dẫn từ
thầy em đã có được những kiến thức quan trọng và nhất định để hoàn thiện báo cáo
một cách hồn chỉnh nhất.
Cũng xin cảm ơn thầy cơ và bạn bè trong khoa Cơng nghệ phần mềm đã nhiệt tình
hỗ trợ, tạo điều kiện cho nhóm em làm bài báo cáo này. Trong quá trình học tập,
cũng như là trong q trình làm đồ án, nhóm em đã cố gắng hết sức mình, vì thời
gian và kiến thức có hạn nên nhóm em khơng thể tránh khỏi những thiếu sót.
Nhóm em mong nhận được sự thơng cảm, đóng góp và xây dựng từ cơ để nhóm
em có thêm nhiều kiến thức có ích và ngày càng hồn thiện hơn.

3|Page


Mục lục
1.

2.

3.


4.

Tổng quan đề tài ....................................................................................... 6

1.3.1

Phạm vi môi trường:…………… ............................................................ 7

1.3.2

Phạm vi chức năng:…………. ................................................................ 7

Cơ sở lý thuyết .......................................................................................... 8
2.1.1

Tổng quan…………………… ................................................................ 8

2.1.2

Smart Contract………………. .............................................................. 12

2.1.3

Token ERC-721 (Non-Fungible Token)................................................ 13

2.1.4

Token ERC-20……………… ............................................................... 14


2.1.5

Hardhat…………………………… ...................................................... 15

2.1.6

MetaMask………………………… ...................................................... 15

2.1.1

Giới thiệu về Reactjs………… ............................................................. 16

2.1.2

Giới thiệu về JSX………………........................................................... 17

2.1.3

Giới thiệu về Components…….. ........................................................... 17

2.2.1

Giới thiệu về Nodejs………… .............................................................. 17

2.2.2

Giới thiệu về Express………................................................................. 18

Thiết kế cơ sở dữ liệu ............................................................................. 20


3.2.1

Bảng player: Thông tin người chơi........................................................ 20

3.3.1

Bảng NFT: Thông tin NFT

............................................................... 21

Thiết kế giao diện.................................................................................... 22

4|Page


4.2.1

Màn hình đăng nhập………………. ..................................................... 22

4.2.2

Màn hình Menu………………….. ....................................................... 23

4.2.3

Màn hình chơi game…………… .......................................................... 24

4.2.4

Màn hình chức năng đang phát triển ..................................................... 27


4.2.5

Một số dialog hiển thị thông tin: ........................................................... 28

4.2.6

Màn hình hiển thị bộ thẻ bài…. ............................................................. 29

5.

Cài đặt và kiểm thử ................................................................................ 30

6.

Kết luận ................................................................................................... 31

5|Page


1. Tổng quan đề tài
Đề tài:
Hiện nay, phần lớn các trò chơi trực tuyến (game online) đều hoạt động theo mơ
hình tập trung (một máy chủ và nhiều máy con). Tất cả dữ liệu liên quan được lưu
trữ trên một cơ sở dữ liệu tại máy chủ và các nhà phát triển Game có thể tùy ý thay
đổi các thơng số của trò trò chơi trực tuyến này.
Dữ liệu của Game thủ bao gồm thông tin tài khoản, lịch sử hoạt động và tài sản
trong trò chơi được thu thập bởi người chơi (vật phẩm và tiền vàng).
Vì cơ sở dữ liệu được lưu trữ trên một máy chủ tập trung nên có nhiều hạn chế và
lỗ hổng:

• Sự cố máy chủ do bị quá tải đường truyền
• Hệ thống bị xâm nhập bởi tin tặc
• Trị chơi ngừng hoạt động khi bảo trì và nâng cấp
• Thiếu minh bạch
Các game được hoạt động với mơ hình kinh doanh là chính
Nói cách khác, quyền lực điều hành ln nằm trong tay các cơng ty game. Nhưng
cơng nghệ Blockchain có thể loại bỏ hoặc giảm thiểu được vấn đề này.
Blockchain xuất hiện 10 năm nay và nở rộ trong vài năm gần đây khi được ứng
dụng vào tiền mã hóa, tài sản kỹ thuật số không thể thay thế (NFT), GameFi (kết
hợp giữa game và tài chính phi tập trung). Các “ông lớn” công nghệ của thế giới
như Microsoft, Meta, Google, Tencent, Amazon, IBM… đang đầu tư mạnh cho
lĩnh vực này.
Tại Việt Nam, blockchain được biết đến nhờ trở thành “cái nơi” của game
blockchain, tài chính phi tập trung, với hàng loạt dự án như Axie Infinity, Kyber
Network, Tomochain, Coin98…
Nắm bắt được xu thế hiện nay và trên cơ sở các kiến thức được học trong nhà
trường, nhóm em đã quyết định chọn đề tài “Tìm hiểu Blockchain và xây dựng
web game NFT cơ bản” để xây dựng thử một web game xử dụng cơng nghệ block
chain. Người dùng có thể dễ dàng truy cập trang web, chơi game và hoàn thành
nhiệm vụ để nhận các token.
Game được truyền cảm hứng từ trị chơi oẳn tù tì (kéo búa bao),thay vì cách chơi
như truyền thống thì game cung cấp thêm các level cho các item kéo, búa, bao, từ
đó mở rộng lối chơi, và cách chơi của trò chơi.
Luật chơi của game như sau:
• Vẫn sử dụng nguyên tắc kéo-búa-bao.
• Nếu người chơi ra cùng 1 item (vd:búa) thì sẽ quyết định thắng thua bằng
level của thẻ (level từ 1-5)

6|Page



• Một bộ bài (deck) cơ bản gồm 15 thẻ bài với 3 item, mỗi loại item sẽ có 5
level (1-5)
• Mỗi trận game sẽ tuân theo nguyên tắc (BO5- ai thắng 3 round trước sẽ là
người thắng cả trận).Trong mỗi round người chơi sẽ luôn nhận được 3 loại
item (kéo - búa - bao) nhưng sẽ có ngẫu nhiên level.Sau khi hết round 3 thẻ
đó sẽ bị bỏ và sẽ không bao giờ xuất hiện lại trong cả game.Vậy nên khi
trường hợp xấu nhất là 5 trận hòa liên tục (tức bỏ 3x5=15 thẻ) thì kết quả
chung cuộc của game đấu đó là hịa.

Đối tượng sử dụng
Tất cả mọi người đã đăng kí, sử dụng và cài đặt ví metamask đều có thể tham gia
vào web và chơi trị chơi.

Phạm vi nghiên cứu
1.3.1

Phạm vi môi trường:

- Ứng dụng web và blockchain

1.3.2

Phạm vi chức năng:

- Có thể liên kết với ví MetaMask để tương tác tác blockchain
- Cho người dùng mint NFT trước khi vào chơi game, giúp người chơi thu thập được
các NFT của game
- Cho người dùng thu thập các Tokens từ việc chơi game.
- Có thể cho người dùng thấy được số dư Tokens từ ví của mình.


7|Page


2. Cơ sở lý thuyết
BlockChain

2.1.1

Tổng quan
Blockchain là gì ?

Blockchain là một cơ sở dữ liệu phân tán mà nó sẽ được chia sẻ trong các nodes của một
mạng máy tính. Là một cơ sở dữ liệu, blockchain lưu trữ thông tin điện tử ở dạng kỹ
thuật số. Blockchains được biết đến nhiều nhất với vai trò quan trọng trong hệ thống
tiền điện tử, như là Bitcoin, để duy trì tính an toàn và phi tập trung của các giao dịch.
Sự đổi mới của blockchain là nó đảm bảo tính trung thực và bảo mật của dữ liệu và tạo
ra sự đáng tin cậy mà không cần bên thứ ba.
Một điểm khác biệt giữa cơ sở dữ liệu truyền thống và blockchain là cách dữ liệu được
cấu trúc. Một blockchain thu thập thơng tin với nhau theo nhóm, được gọi là blocks (các
khối), nó sẽ chứa thơng tin ở đó. Blocks (các khối) có khả năng lưu trữ nhất định và khi
được lấp đầy dữ liệu sẽ được đóng lại và liên kết với khối đã được lấp đầy trước đó, tạo
thành một chuỗi dữ liệu được gọi là blockchain (chuỗi khối). Tất cả thông tin mới theo
sau khối mới thêm đó được biên dịch thành một khối mới, sau đó cũng sẽ được thêm
vào chuỗi sau khi được lấp đầy.
Một cơ sở dữ liệu thường cấu trúc dữ liệu của nó thành các bảng, trong khi đó
blockchain, giống như tên gọi của nó, blockchain cấu trúc dữ liệu của nó thành các khối
(blocks) và được xâu chuỗi lại với nhau. Cấu trúc dữ liệu theo cách này tạo ra một dịng
thời gian khơng thể thay đổi của dữ liệu khi được thực hiện theo bản chất phi tập trung.
Khi một khối được lấp đầy, nó sẽ được đặt vào trong chuỗi và trở thành một phần của

dòng thời gian này. Mỗi khối trong chuỗi được cấp một dấu thời gian chính xác khi nó
được thêm vào chuỗi.

8|Page


Công nghệ 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.
Các phiên bản của cơng nghệ Blockchain
- Công nghệ Blockchain 1.0 – Tiền tệ và Thanh tốn: Ứng dụng chính của phiên bản
này là tiền mã hoá: bao gồm việc chuyển đổi tiền tệ, kiều hối và tạo lập hệ thống thanh
toán kỹ thuật số. Đây cũng là lĩnh vực quen thuộc với chúng ta nhất mà đôi khi khá

nhiều người lầm tưởng Bitcoin và Blockchain là một.
- Cơng nghệ Blockchain 2.0 – Tài chính và Thị trường: Ứng dụng xử lý tài chính và
ngân hàng: mở rộng quy mô của Blockchain, đưa vào các ứng dụng tài chính và thị
trường. Các tài sản bao gồm cổ phiếu, chi phiếu, nợ, quyền sở hữu và bất kỳ điều gì có
liên quan đến thỏa thuận hay hợp đồng.
- Công nghệ Blockchain 3.0 – Thiết kế và Giám sát hoạt động: Đưa Blockchain vượt
khỏi biên giới tài chính, và đi vào các lĩnh vực như giáo dục, chính phủ, y tế và nghệ
thuật.

Các đặc điểm nổi bật của Blockchain
- Không thể làm giả, không thể phá hủy các chuỗi Blockchain: theo như lý thuyết thì
chỉ có máy tính lượng tử mới có thể giải mã Blockchain và cơng nghệ Blockchain biến
mất khi khơng cịn Internet trên tồn cầu.
- Bất biến: dữ liệu trong Blockchain khơng thể sửa (có thể sửa nhưng sẽ để lại dấu vết)
và sẽ lưu trữ mãi mãi.
- Bảo mật: Các thông tin, dữ liệu trong Blockchain được phân tán và an toàn tuyệt đối.
- Minh bạch: Ai cũng có thể theo dõi dữ liệu Blockchain đi từ địa chỉ này tới địa chỉ
khác và có thể thống kê tồn bộ lịch sử trên địa chỉ đó.
- Hợp đồng thơng minh: là hợp đồng kỹ thuật số được nhúng vào đoạn code if-thisthen-that (IFTTT), cho phép chúng tự thực thi mà không cần bên thứ ba.

9|Page


Cách Blockchain hoạt động
Mục tiêu của blockchain là cho phép thông tin kỹ thuật số được ghi lại và phân phối,
nhưng không được chỉnh sửa. Bằng cách này, blockchain là nền tảng cho các sổ cái bất
biến hoặc các bản ghi của các giao dịch khơng thể thay đổi, xóa hoặc phá hủy. Đây là lý
do blockchain còn được gọi là công nghệ số phân tán (distributed ledger technology –
DLT).
Lần đầu được đề xuất như một dự án nghiên cứu vào năm 1991, khái niệm blockchain

có trước ứng dụng rộng rãi đầu tiên của nó: Bitcoin, vào năm 2009. Trong những năm
sau đó, việc sử dụng blockchain đã bùng nổ thông qua việc tạo nhiều loại tiền điện tử
khác nhau, ứng dụng tài chính phi tập trung (decentralized finance DeFi), non-fungible
tokens (NFTs) và hợp đồng thơng minh (smart contracts).
v

Q trình giao dịch

1. Một giao dịch mới được thêm vào.
2. Giao dịch sau đó được truyền tới một mạng lưới các máy tính ngang hàng nằm rải
rác trên thế giới.
3. Mạng máy tính này sau đó giải các bài tốn để xác nhận tính hợp lệ của giao dịch.
4. Ngay khi được xác nhận là giao dịch hợp lệ, chúng được nhóm lại với nhau thành
các khối.
5. Các khối này sau đó được xâu chuỗi lại với nhau tạo thành một lịch sử lâu dài cho
tất cả các giao dịch và nó tồn tại vĩnh viễn.
v

Các thuộc tính của tiền điện tử

Trong khi blockchains chủ yếu được sử dụng để lưu trữ lịch sử giao dịch tiền điện tử,
thì blockchains vẫn có thể lưu trữ những thứ khác như hợp đồng pháp lý hay sản phẩm
tồn kho.
1. Tiền điện tử có giá trị bên trong vì đây cách đáng tin cậy, an tồn và nhanh chóng để
thực hiện các giao dịch với chi phí thấp hoặc miễn phí.
2. Khơng có dạng vật chất vì nó chỉ tồn tại trên blockchain
3. Các thuộc tính của tiền điện tử, như là tổng cung của nó, được quyết định bởi phần
lớn các thành viên trong mạng lưới phi tập trung của nó thay vì một ngân hàng.
v


Phân quyền

Tưởng tượng rằng một công ty sở hữu một nơi với 10.000 máy tính được sử dụng để
duy trì cơ sở dữ liệu chứa tất cả thơng tin tài khoản của khách hàng. Công ty này sở hữu
một tịa nhà kho chứa tất cả các máy tính ở cùng một nơi và có tồn quyền kiểm sốt
từng máy tính này và tất cả thơng tin chứa trong chúng. Tuy nhiên, điều này sẽ gây ra
nguy cơ lỗi rất cao. Điều gì xảy ra nếu điện tại địa điểm đó bị mất? Điều gì sẽ xảy ra
nếu kết nối Internet của nó bị ngắt? Điều gì sẽ xảy ra nếu một người nào đó xóa mọi thứ
chỉ với một lần nhấn phím? Trong mọi trường hợp, dữ liệu bị mất hoặc bị hỏng.
Những gì một blockchain làm là cho phép dữ liệu được lưu giữ trong cơ sở dữ liệu đó
được trải ra giữa một số nút mạng tại các vị trí khác nhau. Điều này duy trì tính trung
thực của dữ liệu được lưu trữ trong đó — nếu ai đó cố gắng thay đổi bản ghi tại một

10 | P a g e


phiên bản của cơ sở dữ liệu, các nút khác sẽ khơng bị thay đổi và do đó sẽ ngăn chặn
được việc thay đổi đó. Nếu một người dùng giả mạo bản ghi giao dịch của Bitcoin, tất
cả các nút khác sẽ tham chiếu chéo lẫn nhau và dễ dàng xác định nút có thơng tin khơng
chính xác. Hệ thống này giúp thiết lập một thứ tự chính xác và minh bạch của các sự
kiện. Bằng cách này, không một nút nào trong mạng có thể thay đổi thơng tin được lưu
giữ bên trong nó.
Do đó, thơng tin và lịch sử (chẳng hạn như các giao dịch của tiền điện tử) là không thể
thay đổi được. Bản ghi như vậy có thể là danh sách các giao dịch (chẳng hạn như với
tiền điện tử), nhưng blockchain cũng có thể lưu giữ nhiều loại thông tin khác như hợp
đồng pháp lý, danh tính tiểu bang hoặc kho sản phẩm của cơng ty.
v

Minh bạch


Do tính chất phi tập trung của blockchain, tất cả các giao dịch có thể được xem một cách
minh bạch bằng cách có một nút cá nhân hoặc sử dụng các trình khám phá chuỗi khối
cho phép bất kỳ ai cũng có thể xem các giao dịch đang diễn ra trực tiếp. Mỗi nút có bản
sao của chuỗi riêng của nó được cập nhật khi các khối mới được xác nhận và thêm vào.
Điều này có nghĩa là nếu bạn muốn, bạn có thể theo dõi thơng tin của blockchain ở bất
cứ đâu.
Ví dụ, các sàn giao dịch đã từng bị tấn công trong quá khứ, nơi những người giữ Bitcoin
trên sàn giao dịch đã mất tất cả. Mặc dù tin tặc có thể hồn tồn ẩn danh, nhưng Bitcoin
mà họ trích xuất có thể dễ dàng theo dõi. Nếu Bitcoin bị đánh cắp trong một số vụ hack
này được chuyển đi hoặc sử dụng ở một nơi nào đó, thì điều đó sẽ được biết. Tất nhiên,
các bản ghi được lưu trữ trong blockchain đều được mã hóa. Điều này có nghĩa là chỉ
chủ sở hữu của một bản ghi mới có thể giải mã nó để tiết lộ danh tính của họ (sử dụng
cặp khóa cơng khai-riêng tư). Do đó, người dùng blockchain có thể ẩn danh trong khi
vẫn giữ được tính minh bạch.

11 | P a g e


2.1.2

Smart Contract

Một Smart Contract (hợp đồng thông minh) đơn giản là một chương trình chạy trên
blockchain. Nó là tập hợp mã (các chức năng của nó) và dữ liệu (trạng thái của nó) nằm
tại một địa chỉ cụ thể trên blockchain.
Smart Contract là một loại account trên blockchain. Có nghĩa là nó có số dư và có thể
gửi các giao dịch qua mạng. Tuy nhiên, chúng khơng được kiểm sốt bởi người dùng,
thay vào đó chúng được triển khai vào mạng và chạy như được lập trình. Các account
của người dùng có thể tương tác với smart contract bằng cách gửi các giao dịch mà nó
thực hiện một chức năng được xác định trên smart contract. Smart contracts có thể định

nghĩa các quy tắc giống như một hợp đồng bình thường và tự động thực thi chúng thông
qua mã. Theo mặc định smart contracts khơng thể bị xóa và các tương tác với chúng là
không thể thay đổi.

12 | P a g e


2.1.3

Token ERC-721 (Non-Fungible Token)

Non-Fungible Token là gì ?
Một Non-Fungible Token (NFT) được sử dụng để xác định một thứ gì đó hoặc một vật
nào đó theo một cách riêng biệt. Loại Token này hoàn hảo để sử dụng trên các nền tảng
cung cấp các vật phẩm sưu tầm, chìa khố truy cập, vé số, chỗ ngồi được đánh số cho
các buổi hoà nhạc và trận đấu thể thao,... Loại Token đặc biệt này có khả năng giải quyết
các vấn đề đó.

ERC-721 là gì ?
ERC-721 giới thiệu một tiêu chuẩn cho NFT trên Ethereum Blockchain, nói cách khác,
loại Token này là duy nhất và có thể có giá trị khác với một Token khác từ cùng một
Smart Contract (hợp đồng thông minh), nó có thể dựa vào tuổi tác, độ hiếm hoặc một
thứ gì đó như là hình ảnh. Tất cả NFTs đề có một biến uint256 được gọi là tokenId, vì
vậy đối với bất kỳ ERC-721 Contract nào thì contract address và uint256 tokenId đều
phải là duy nhất. Theo đó, một dApp có thể có một “bộ chuyển đổi” sử dụng tokenId
làm đầu vào và đầu ra là một hình ảnh gì đó thú vị như zombies, vũ khí,…
ERC-721, được đề xuất bởi William Entriken, Dieter Shirley, Jacob Evans, Nastassia
Sachs vào tháng 1 2018, là một tiêu chuẩn của Non-Fungible Token, triển khai một API
cho các tokens trong Smart Contracts. Nó cung cấp các chức năng như chuyển tokens
từ account này sang account khác, lấy số dư token của một account, lấy được địa chỉ của

chủ sở hữu của token cụ thể và cả tổng nguồn cung cấp tokens có sẵn trên mạng. Bên
cạnh những chức năng này, nó cũng có một số chức năng khác như chấp thuận một
lượng token từ một account được chuyển bởi một account bên thứ ba. Nếu một Smart
Contract triển khai các phương pháp và sự kiện như trên, nó có thể được gọi là một
ERC-721 Non-Fungible Token Contract và sau khi được triển khai, nó có trách nhiệm
theo dõi các token đã tạo trên Ethereum blockchain.

13 | P a g e


2.1.4

Token ERC-20

ERC-20 giới thiệu một tiêu chuẩn cho Fungible Tokens, nói cách khác, nó có một thuộc
tính làm cho mỗi Token giống hệt nhau (về loại và giá trị) với token khác. VD: Token
ERC-20 hoạt động giống như ETH, có nghĩa là 1 Token đang và sẽ luôn bằng với tất cả
các Token khác.
ERC-20, được đề xuất bởi Fabian Vogelsteller vào tháng 11 2015, là một Token tiêu
chuẩn triển khai API cho các token trong Smart Contracts.
Các chức năng mẫu mà ERC-20 cung cấp:
v
Chuyển các token từ account này qua account khác.
v

Lấy số dư token hiện tại của một account.

v

Lấy tổng nguồn cung của token có sẵn trên mạng.


v

Xét duyệt account bên thứ ba có thể sử dụng token từ một tài khoản hay
không

Nếu một Smart Contract triển khai các phương pháp và sự kiện như trên, nó có thể được
gọi là một ERC-20 Non-Fungible Token Contract và sau khi được triển khai, nó có trách
nhiệm theo dõi các token đã tạo trên Ethereum blockchain.

14 | P a g e


2.1.5

Hardhat

Hardhat là một môi trường phát triển để compile, deploy, test, và debug Ethereum
software. Nó giúp developers quản lý và tự động hóa các tác vụ lặp lại vốn có trong quá
trình xây dựng smart contract và dApps, cũng như giới thiệu thêm chức năng xung quanh
quy trình làm việc này. Điều này có nghĩa là nó giúp developers compiling, running và
testing smart contracts ở cốt lỗi.
Hardhat được tích hợp sẵn với mạng Hardhat, một mạng Ethereum cục bộ được thiết kế
để phát triển. Chức năng của Hardhat tập trung vào gỡ lỗi Solidty, console.log() và thông
báo lỗi khi giao dịch khơng thành cơng.

2.1.6

MetaMask


MetaMask là gì ?
MetaMask là một ví tiền điện tử chp phép người dùng tương tác với blockchain một
cách đơn giản. Trong thực tế, chúng ta cần một chiếc ví để giữ ví tiền của mình, số tiền
này sẽ được sử dụng để mua nhiều thứ khác nhau như hàng hóa, vật phẩm, tài sản,…

15 | P a g e


Tương tự, trên blockchain, chúng ta cần một chiếc ví như MetaMask để lưu trữ tiền điện
tử của mình, nó có thể được sử dụng trong nhiều ứng dụng phi tập trung như DeFi, NFT,
GameFi,…

Ưu điểm của MetaMask
v

Nổi tiếng: MetaMask là một trong những ví tiền điện tử nổi tiếng nhất tại
thời điểm hiện tại.

v

Dễ sử dụng: Người dùng có thể dễ dàng tương tác với blockchain bằng cách
sử dụng MetaMask vì nó có giao diện thân thiện với người dùng.

v

Tích hợp: MetaMask đã được tích hợp với hơn 4000 dApps. Chúng ta có thể
dễ dàng sử dụng bất kỳ ứng dụng Crypto nào với MetaMask.

Nhược điểm
v


Bảo mật: MetaMask là một ví nóng, nghĩa là nó được kết nối với Internet.
Do đó, nó dễ bị tấn cơng và bảo mật kém hơn so với ví lạnh.

v

Khả năng tương thích: Trên máy tính, MetaMask hoạt động như một tiên ích
mở rộng của trình duyệt thay vì một ứng dụng độc lập. Điều này làm cho
MetaMask trở nên lag và đôi khi ngừng hoạt động.ReactJS

ReactJS

2.1.1

Giới thiệu về Reactjs

React.js là một thư viện Javascript đang nổi lên trong những năm gần đây với xu
hướng Single Page Application. Trong khi những framework khác cố gắng hướng
đến một mơ hình MVC hồn thiện thì React nổi bật với sự đơn giản và dễ dàng
phối hợp với những thư viện Javascript khác. Nếu như AngularJS là một
Framework cho phép nhúng code javasscript trong code html thông qua các
attribute như ng-model, ng-repeat...thì với react là một library cho phép nhúng
code html trong code javascript nhờ vào JSX, bạn có thể dễ dàng lồng các đoạn
HTML vào trong JS.Tích hợp giữa javascript và HTML vào trong JSX làm cho các
component dễ hiểu hơn

16 | P a g e


2.1.2


Giới thiệu về JSX

JSX là một dạng ngôn ngữ cho phép viết các mã HTML trong Javascript. Đặc
điểm: Faster: Nhanh hơn. JSX thực hiện tối ưu hóa trong khi biên dịch sang mã
Javacsript. Các mã này cho thời gian thực hiện nhanh hơn nhiều so với một mã
tương đương viết trực tiếp bằng Javascript. Safer: an toàn hơn. Ngược với
Javascript, JSX là kiểu statically-typed, nghĩa là nó được biên dịch trước khi chạy,
giống như Java, C++. Vì thế các lỗi sẽ được phát hiện ngay trong q trình biên
dịch. Ngồi ra, nó cũng cung cấp tính năng gỡ lỗi khi biên dịch rất tốt. Easier: Dễ
dàng hơn. JSX kế thừa dựa trên Javascript, vì vậy rất dễ dàng để cho các lập trình
viên Javascripts có thể sử dụng (tham khảo tại />
2.1.3

Giới thiệu về Components

React được xây dựng xung quanh các component, chứ không dùng template như
các framework khác. Trong React, chúng ta xây dựng trang web sử dụng những
thành phần (component) nhỏ. Chúng ta có thể tái sử dụng một component ở nhiều
nơi, với các trạng thái hoặc các thuộc tính khác nhau, trong một component lại có
thể chứa thành phần khác. Mỗi component trong React có một trạng thái riêng, có
thể thay đổi, và React sẽ thực hiện cập nhật component dựa trên những thay đổi
của trạng thái. Mọi thứ React đều là component. Chúng giúp bảo trì mã code khi
làm việc với các dự án lớn. Một react component đơn giản chỉ cần một
method render. Có rất nhiều methods khả dụng khác, nhưng render là method chủ
đạo.

Nodejs
2.2.1


Giới thiệu về Nodejs

Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng trên V8
JavaScript Engine – trình thơng dịch thực thi mã JavaScript giúp chúng ta có thể
xây dựng được các ứng dụng web như các trang video clip, các forum và đặc biệt
là trang mạng xã hội phạm vi hẹp một cách nhanh chóng và dễ dàng mở rộng.
NodeJS có thể chạy trên nhiều nền tảng hệ điều hành khác nhau từ Window cho tới
Linux, OS X nên đó cũng là một lợi thế. NodeJS cung cấp các thư viện phong phú
ở dạng Javascript Module khác nhau giúp đơn giản hóa việc lập trình và giảm thời
gian ở mức thấp nhất.

17 | P a g e


2.2.2

Giới thiệu về Express

Khi nói đến các framework Node.js phổ biến nhất, Express là lựa chọn đầu tiên
của các nhà phát triển vì nó được 73% các nhà phát triển yêu thích và sử dụng.
Express là một trong những Node.Js Framework động cung cấp sự linh hoạt hoàn
toàn và sự tự do cho các nhà phát triển trong việc tùy chỉnh giao diện của ứng
dụng.
Vì nó nhẹ, do đó, nó cực kỳ nhanh và giúp định hướng các máy chủ và bộ định
tuyến. Ngoài ra, khung này lý tưởng cho các ứng dụng web một trang, trang web
hoặc các API HTTP cơng khai.
Lợi ích của Express
• Cung cấp hỗ trợ cho các plugin và tiện ích mở rộng khác nhau để tăng
cường chức năng của nó
• Tích hợp dữ liệu liền mạch

• Một đường cong học tập dễ dàng cho các nhà phát triển đã quen thuộc với
Node.Js
• Cơ chế định tuyến dựa trên URL sử dụng HTTP
• Mạnh mẽ, có thể mở rộng và hồn tồn có thể tùy chỉnh
• Đi kèm với MVC giúp tạo các ứng dụng tập trung

MongoDB

MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và
được hàng triệu người sử dụng.

18 | P a g e


MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ
trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ
rất nhanh.
Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như
MySQL hay SQL Server...) sử dụng các bảng để lưu dữ liệu thì với MongoDB
chúng ta sẽ dùng khái niệm là collection thay vì bảng
So với RDBMS(relational database management system) thì trong
MongoDB collection ứng với table, còn document sẽ ứng với row , MongoDB sẽ
dùng các document thay cho row trong RDBMS.
Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu
lưu trữ không cần tuân theo một cấu trúc nhất định.
Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua
ngôn ngữ truy vấn MongoDB

Ưu điểm của MongoDB
• MongoDB mang đến cho người dùng khá nhiều lợi ích:

• Linh hoạt trong lưu trữ các kích cỡ dữ liệu khác nhau. Nhờ chúng được lưu
dưới dạng JSON nên bạn thoải mái chèn bất kỳ thơng tin nào tùy theo nhu
cầu sử dụng.
• Tiết kiệm thời gian trong việc kiểm tra sự tương thích về cấu trúc khi thêm,
xóa hoặc cập nhật dữ liệu. Nhờ MongoDB khơng có sự ràng buộc trong một
khn khổ, quy tắc nhất định nào.
• Bạn dễ dàng mở rộng hệ thống thông qua việc thêm node vào cluster. Cụm
các node này đóng vai trị như thư viện chứa các dữ liệu giao tiếp với nhau.
• Tốc độ truy vấn của MongoDB nhanh hơn so với RDBMS do toàn bộ dữ
liệu truy vấn đã được ghi đệm lên bộ nhớ RAM. Nhờ thế, những lượt truy
vấn sau sẽ được rút ngắn thời gian vì chúng khơng cần đọc từ ổ cứng.
• Trường dữ liệu “_id” (đại diện cho giá trị duy nhất trong mỗi document)
được tự động đánh chỉ mục nên hiệu suất ln đạt mức cao nhất.

Nhược điểm của MongoDB
• Bên cạnh các ưu điểm, MongoDB vẫn còn tồn tại một số điểm hạn chế mà
bạn cần chú ý khi cài đặt và sử dụng:
• Vì dữ liệu khơng bị ràng buộc nên trong quá trình sử dụng, bạn cần cẩn thận
trong mọi thao tác nhằm tránh xảy ra những điều khơng mong muốn, làm
ảnh hưởng đến dữ liệu.
• Chương trình MongoDB tiêu tốn khá nhiều dung lượng bộ nhớ do dữ liệu
được lưu dưới dạng key và value. Bên cạnh đó, một số collection chỉ có sự
khác biệt về value nên việc lặp lại key là điều khó tránh khỏi. Điều này dẫn
đến thừa dữ liệu.
• Thơng thường, thời gian để dữ liệu chuyển đổi từ RAM xuống ổ cứng
khoảng 60s nên nguy cơ bị mất dữ liệu nếu xảy ra mất điện là điều có thể
xảy ra.

19 | P a g e



3. Thiết kế cơ sở dữ liệu
Sơ đồ logic

Danh sách các quan hệ
3.2.1

Bảng player: Thông tin người chơi

STT
1
2

Thực thể
player_id
address

Kiểu dữ liệu
varchar(24)
varchar(42)

3

is_minted

boolean

4

match_in_day


int

Ghi chú
Địa chỉ ví
MetaMask
Kiểm tra xem
người chơi đã mint
NFT hay chưa
Xem người chơi đã
chơi bao nhiêu trận
trong ngày

Bảng mission: Thông tin nhiệm vụ
STT
1
2
3

Thực thể
mission_id
mission_name
num_match

Kiểu dữ liệu
varchar(24)
varchar(30)
boolean

4


reward

float

Ghi chú
Nhiệm vụ cần bao
nhiêu trận để hoàn
thành
Phần thưởng khi
hoàn thành nhiệm
vụ

20 | P a g e


3.3.1

Bảng NFT: Thông tin NFT

STT
1
2
3

Thực thể
token_id
token_name
owner


Kiểu dữ liệu
int
varchar(30)
varchar(42)

4
5

rarity
level

int
int

Ghi chú
Address MetaMask
của người sở hữu
NFT
Độ hiếm của NFT
Cấp của NFT khi
chơi game

21 | P a g e


4. Thiết kế giao diện
Danh sách các màn hình
STT

Màn hình


1

Màn hình đăng nhập

2

Màn hình Menu

3

Màn hình chơi
Màn hình thơng báo tính năng
đang phát triển

4
5

Dialog hướng dẫn hoặc báo lỗi

Chức năng
Đăng nhập vào hệ thống thơng qua ví
MetaMask
Menu chứa các thơng tin như address,
chế độ chơi ,hướng dẫn chơi,…
Chơi game
Hiển thị màn hình tính năng đang phát
triển
Dialog hướng dẫn cách chơi hoặc báo
lỗi


Mơ tả màn hình
4.2.1

Màn hình đăng nhập

Khi ấn vào nút ”Play Now” sẽ hiện giao diện của ví metaMask cho người dùng đăng
nhập.

22 | P a g e


Màn hình đăng nhập sử dụng ví MetaMask để đăng nhập vào hệ thống.

4.2.2

Màn hình Menu

Màn hình Menu chứa các thơng tin như:
• Địa chỉ tài khoản
• Số lượng RPS tài khoản đang có
• Nhiệm vụ hằng ngày
• Các chế độ chơi

23 | P a g e


4.2.3

Màn hình chơi game

Giao diện bắt đầu chơi

Giao diện chơi game chứa các thẻ để người dùng chọn, số máu cịn lại, số thẻ cịn
lại,có nút để mở dialog hướng dẫn chơi game.

24 | P a g e


Giao diện khi chiến thắng round

Giao diện khi thua round

Giao diện khi hòa round

25 | P a g e


×