Blockchain Blockchain chuỗi khối, tên ban đầu block chain là một cơ sở dữ liệu phân cấp lưu trữ thông tin trong các khối thông tin được liên kết với nhau bằng mã hóa và mở rộng theo thời
Trang 1ĐẠ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 Tìm hiểu Binance Smart Chain và xây dựng game thể loại NFT
Giáo viên hướng dẫn: Th.S Đinh Nguyễn Anh Dũng
Sinh viên thực hiện: MSSV
Nguyễn Nhật Long 18520304 Tưởng Thành Long 18520227
Trang 2Nhận xét
………
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
Trang 3Lời cám ơn
Những trang đầu tiên của báo cáo này chúng em xin gửi lời biết ơn sâu sắc và chân thành nhất từ nhóm chúng em đến giáo viên Ths Đinh Nguyễn Anh Dũng vì đã tận tình hướng dẫn chúng em hoàn thành đồ án này tốt nhất có thể, nếu không có sự hướng dẫn của cô có
lẽ chúng em sẽ không thể hoàn thành được tốt đến vậy Trong quá trình hoàn thiện sản phẩm cũng như báo cáo khó tránh khỏi những sai sót, mong nhận được góp ý từ các thầy
cô để chúng em có thể cải thiện bản thân trong những dự án lần sau Một lần nữa xin chân thành cám ơn mọi người đã ủng hộ chúng em trong dự án lần này
Trang 4Lịch sử chỉnh sửa
28/12/2021 Nguyễn Nhật Long Tạo tài liệu
29/12/2021 Nguyễn Nhật Long Thêm và cấu trúc các mục của tài liệu29/12/2021 Tưởng Thành Long Bổ sung tài liệu
30/12/2021 Nguyễn Nhật Long Thêm phần tài liệu thiết kế game3/1/2022 Tưởng Thành Long Thêm phần Thiết kế smart contract8/1/2022 Nguyễn Nhật Long Kiểm tra và chốt tài liệu
Trang 5Mục lục
CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 1
CHƯƠNG 2: NGHIÊN CỨU CÔNG NGHỆ SỬ DỤNG 7
Trang 6CHƯƠNG 4: THIẾT KẾ SMART CONTRACT 22
Giai đoạn nghiên cứu và lên kế hoạch 33
Trang 8CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI
1.1 Giới thiệu đề tài
Với đề tài hướng đến 1 thể loại có thể gọi là mới đối với thế giới những năm gần đây, đó
là thể loại “Play to earn” - nghĩa là chơi game kiếm tiền Thuật ngữ “Play to earn” bắt đầubùng nổ khi nào cơn sốt tiền điện tử nóng dần lên ở giai đoạn 2018 - 2021, các đồng tiền
số tăng giá liên tục cùng với sự ứng dụng công nghệ blockchain ngày càng rộng rãi thì việc ra đời thể loại Play to earn là điều tất yếu
Vậy với 1 chủ đề mang tính tầm nhìn và mới mẻ trong xã hội 4.0 hiện nay, nhóm em đã quyết định nghiên cứu, thử nghiệm và ứng dụng những công nghệ, kiến thức tìm hiểu được để có thể tạo ra 1 game Play to earn của riêng mình
1.2 Khái niệm Play to earn
Play to Earn là một mô hình trong đó một nền tảng cung cấp cho người chơi cơ hội kiếm được bất kỳ dạng tài sản trong trò chơi có thể chuyển sang thế giới thực như một tài nguyên có giá trị
Đặc biệt là trong vũ trụ blockchain và NFT Play to Earn mang lại cho player một cơ hội hiệu quả để tạo ra doanh thu bằng cách tham gia vào game Player tạo ra giá trị cho những người chơi và nhà phát triển khác bằng cách tham gia vào hệ sinh thái trong trò chơi và kiếm tài sản cho những đóng góp của họ
1.3 Play to earn đã phát triển thế nào?
Như những ngành công nghiệp khác, chơi game online cũng chứng kiến vô số xu hướng như game đấu trường chiến đấu online nhiều người chơi (MOBA) Hàng loạt cái tên được nêu lên và danh sách này không ngừng tăng
Trang 9Theo statista, người ta ước tính rằng thị trường trò chơi toàn cầu sẽ lên tới 268,8 tỷ USD vào năm 2025, tăng từ mức 178 tỷ đô la Mỹ vào năm 2021 Việc xem xét chơi game thực
sự được khuyến khích ở nhiều quốc gia
Ngành công nghiệp tiền điện tử đã nhận ra tiềm năng của phân khúc đang phát triển này
mà công nghệ dựa trên blockchain có thể tác động tích cực lên nó Điều này phần lớn có thể xảy ra thông qua sự bùng nổ của Non Fungible Token (NFT) Các nhà phát triển hiểu rằng họ có thể tạo và chuyển giao giá trị hữu hình trong hệ sinh thái gaming, cung cấp thêm động lực cho những ai dành thời gian chơi game
Đây là cách mô hình Play to Earn và đặc biệt liên quan đến tiền điện tử ra đời và bắt đầu phát triển nhanh chóng
Trong bài viết này, mình và mọi người chủ yếu khám phá mô hình Play to Earn trong ngành công nghiệp tiền điện tử, một số khái niệm cần quan tâm và các game Play to Earnnổi tiếng hàng đầu
Trang 101.4 Khái niệm Blockchain
1.4.1 Blockchain
Blockchain (chuỗi khối), tên ban đầu block chain là một cơ sở dữ liệu phân cấp lưu trữ thông tin trong các khối thông tin được liên kết với nhau bằng mã hóa và mở rộng theo thời gian Mỗi khối thông tin đều chứa thông tin về thời gian khởi tạo và được liên kết tới khối trước đó, kèm một mã thời gian và dữ liệu giao dịch Blockchain được thiết kế để chống lại việc thay đổi của dữ liệu: Một khi dữ liệu đã được mạng lưới chấp nhận thì sẽ không có cách nào thay đổi được nó
Một chuỗi khối giống như một nơi để lưu trữ dữ liệu bán công cộng trong một không gian chứa hẹp (khối) Bất cứ ai cũng có thể xác nhận việc bạn nhập thông tin vào vì khối chứa có chữ ký của bạn, nhưng chỉ có bạn (hoặc một chương trình) có thể thay đổi được
dữ liệu của khối đó vì chỉ có bạn cầm khóa bí mật cho dữ liệu đó
Vì thế chuỗi khối hoạt động gần giống như một cơ sở dữ liệu, ngoại trừ một phần của
Trang 11thông tin được lưu trữ - header của nó là công khai.
Dữ liệu lưu trữ có thể là một giá trị hoặc một số dư tiền mã hóa Một chuỗi khối hoạt động như một hệ thống lưu chuyển giá trị thay thế mà không một cá nhân hay tổ chức bên thứ ba nào có thể thay đổi được nó (vì quá trình lưu trữ dữ liệu đã được mã hóa) Nó dựa trên quyền công khai và bí mật, nhìn công khai nhưng kiểm soát bí mật
1.4.2 Tiền điện tử
Tiền điện tử là một loại tiền tệ kỹ thuật số, được thiết kế với mục đích làm phương tiện trao đổi thay thế cho tiền pháp định Tiền điện tử sử dụng thuật toán để bảo mật và xác nhận các giao dịch cũng như kiểm soát việc thành lập các đơn vị mới trong một mạng lưới tiền điện tử nhất định Về cơ bản, tiền điện tử là một dạng cơ sở dữ liệu giới hạn đầu vào, không ai có thể thay đổi nếu không đáp ứng đủ một số điều kiện xác định sẵn
Một trong những vấn đề quan trọng nhất mà bất kỳ mạng lưới thanh toán nào cũng phải giải quyết đó chính là “lặp chi” (double spending) Đây là một kỹ thuật lừa đảo bằng cáchthực hiện hai giao dịch để chi tiêu cùng số dư của một tài khoản Giải pháp truyền thống
là dựa vào “bên thứ ba” – một máy chủ trung tâm – lưu giữ thông tin số dư và chi tiết giao dịch Tuy nhiên, phương pháp này đòi hỏi người có thẩm quyền để giữ và kiểm soát thông tin cá nhân của bạn trong tay
Trong một mạng lưới phi tập trung như Bitcoin, mỗi thành phần tham gia đều phải làm công việc này Mọi thứ đều được vận hành qua Blockchain – một sổ cái công cộng ghi chép mọi giao dịch trong một mạng lưới mà bất cứ thành phần tham gia nào cũng có thể tiếp cận Vì đó, mọi người trong mạng lưới có thể truy vấn số dư của tất cả các tài khoản.Mọi giao dịch đều có dạng một tệp tin có chứa key công khai của người gửi và người nhận (các địa chỉ ví) và số lượng coin được dịch chuyển Các giao dịch cũng cần được xác nhận bởi người gửi bằng một “mã khóa cá nhân” – private key Tất cả những điều trên là lý thuyết căn bản của thuật toán crypto Cuối cùng, giao dịch sẽ được đưa lên mạng lưới nhưng vẫn cần được xác nhận
Trang 12Trong mạng lưới tiền điện tử, chỉ có những thợ đào mới có thể xác nhận các giao dịch bằng cách giải các bài toán được mã hóa Họ sẽ nhận các giao dịch, đánh dấu hợp lệ và phát tán ra toàn mạng lưới Sau đó, mọi node của mạng lưới sẽ bổ sung vào cơ sở dữ liệu.Một khi giao dịch đã được xác nhận thì sẽ không thể xóa và đảo ngược quy trình Thợ đào sẽ nhận được phần thưởng cộng với phí giao dịch.
Về cơ bản, mạng lưới tiền điện tử dựa vào sự đồng thuận tuyệt đối của tất cả các thành phần trong không gian để xác nhận tính hợp lệ của số dư và giao dịch Nếu các node của mạng lưới không chấp nhận, hệ thống sẽ dừng hoạt động Tuy nhiên, có rất nhiều luật lệ được xây dựng và lập trình vào trong hệ thống để giúp ngăn chặn rủi ro này
Tiền điện tử có chứa tiền tố crypto chính là vì quy trình đồng thuận của cộng đồng được đảm bảo bởi một thuận toán crypto (mã hoá) an toàn Cùng với những yếu tố đã được nêutrên, tiền điện tử trở thành một khái niệm khiến việc “đặt niềm tin vào bên thứ ba” trở nên hoàn toàn dư thừa
1.4.3 Binance Smart Chain
Binance Smart Chain (BSC) là một nền tảng blockchain chạy trên máy ảo của Ethereum,
nó đồng thời chạy song song với Binance Chain, mô phỏng mô cấu trúc mạng máy ảo bên dưới như sau:
Trang 13Bản chất chất của Binance Smart Chain là nhân bản blockchain của Ethereum khởi tạo chuỗi khối bằng kết hợp hai thuật toán bằng chứng cổ phần (Proof of Stake) và thuật toánbằng chứng ủy quyền (Proof of Authority) Thiết kế này cho phép khả năng tương thích chuỗi chéo (cross-chain) đồng thời từ cả ba mạng BCS, BNB và Ethereum.
Ưu điểm của blockchain này giúp các tài sản có thể được di chuyển nhanh chóng giữa các mạng, do đó kết hợp được khả năng giao dịch nhanh với chức năng hợp đồng thông minh lại với nhau Điển hình là token BEP-2 và BEP-8 của Binance Chain cũng có thể được hoán đổi với token BEP-20 của Binance Smart Chain và có thể Swap các token ERC20 của Ethereum sang Binance Smart Chain Bên cạnh đó các tính năng trên dApp trên Ethereum có thể chuyển đổi trên Binance Smart Chain đồng thời cả Binance Chain
Trang 14CHƯƠNG 2: NGHIÊN CỨU CÔNG NGHỆ SỬ DỤNG 2.1 Unity
2.1.1 Giới thiệu
Hình 2.1.1.1 Logo của Unity
Unity là một game engine đa nền tảng được phát triển bởi Unity Technologies, chủ yếu
để phát triển video game cho máy tính, consoles và điện thoại
Unity hỗ trợ đồ họa 2D và 3D, các chức năng được viết chủ yếu qua ngôn ngữ C# Tuy nhiên, bạn luôn có thể sử dụng hệ thư viện rộng lớn của Unity thay vì tự code chúng, và chỉ thực hiện lập trình kéo thả, không cần 1 dòng code nào
Unity nổi tiếng với giá rẻ, tính năng đa nền tảng, và hỗ trợ cộng đồng lớn Vì những lý donày và nhiều lý do khác, Unity là một trong những game engine được sử dụng rộng rãi nhất
2.1.2 Chainsafe
Hình 2.1.2.1 Logo của Chainsafe
ChainSafe là một công cụ để kết nối Unity với Blockchain ChainSafe cho phép ta kết nốitrực tiếp với blockchain và thực hiện các lời gọi hàm trên smart contract Đây là điểm ưu việt của ChainSafe so với các công cụ blockchain khác trên Unity như Enjin và tránh được các trung gian
ChainSafe có 3 tính năng chính:
- Đọc smart contract
- Kết nối với Metamask
Trang 15- Thông qua Metamask, gọi hàm trên smart contract
2.2 Blockchain
2.2.1 Tiền điện tử
Tiền điện tử, crypto, tiền ảo, tiền mã hóa, … là nhưng tên gọi khác nhau của một loại tài sản, có thể dùng để giao dịch, mua bán, trao đổi ở trong cùng cộng đồng những người sử dụng loại tiền đó Tiền ảo không giống như tiền pháp định (hay tiền fiat, được ban hành
và kiểm soát bởi chính phủ), nó được kiểm soát bởi thị trường nơi mà ai cũng có thể trao đổi và giao dịch 24/7 Hoạt động dựa trên công nghệ Blockchain, tiền điện tử hiệnn đang trở thành xu thế cho các dự án cũng như nhà đầu tư mới nổi tham gia
2.2.2 Metamask
Metamask là ví điện tử, ban đầu được sử dụng để tương tác với các chuỗi khối Ethereum nhưng hiện nay metamask đã cho phép người dùng thêm các mạng lưới riêng vào để sử dụng hoặc thử nghiệm
2.2.3 Binance Smart Chain
Có thể coi nó là 1 mạng lưới riêng độc lập với sàn Binance chúng ta hay nhắc đến BSC
là 1 blockchain sử dụng thuật toán Proof of Staked Authority (PoSA), là mô hình kết hợp giữa Poof of Authority và Proof of Stake BSC phục vụ tất cả những lập trình viên mong muốn xây dựng ứng dụng với tính năng Smart Contract, nhất là những dApp chú trọng vào tài sản kỹ thuật số có thể giao dịch được, vì Binance Smart Chain cũng cho phép pháthành token kỹ thuật số và giao dịch trên cả hai chuỗi
2.2.4 Play 2 earn
Play to earn là tên gọi đầy đủ cho thể loại game “chơi để kiếm tiền”, tiền được nhắc đến ởđây có thể là token, sau khi nhận được token đó người chơi có thể giữ hoặc đem nó lên sàn để bán với giá thị trường từ đó có thể quy đổi ra tiền pháp định Game play 2 earn cuốn hút vì có thêm NFT, khiến cho các vật phẩm của người chơi sở hữu là độc nhất và nhà phát hành game không thể điều chỉnh cũng như định giá bán của nó hay đột nhiên thêm nó vào túi của mình để kiếm lời
2.2.5 NFT
NFT (Non-fungible token) là một loại tài sản số sử dụng công nghệ blockchain (chuỗi khối) - tương tự như Bitcoin - để tạo ra một chuỗi mã độc nhất đại diện cho một vật phẩm
Trang 16nào đó và không thể thay thế Các chuỗi mã này thường được dùng để định danh phiên bản số của các tác phẩm nghệ thuật, bài hát hay hiện tượng mạng
2.2.6 Smart contract
Smart Contract là một giao thức đặc biệt nhằm xử lý, xác minh hoặc thực thi các hợp đồng kỹ thuật số Smart Contract có khả năng tự động thực hiện các điều khoản, các thoả thuận giữa các bên trong hợp đồng một cách đáng tin cậy mà không cần bên thứ ba đảm bảo
Smart contract được xây trên blockchain, và là một trong những sáng kiến của
Blockchain 2.0 Smart contract có thể được sử dụng để lưu trữ thông tin, và là nền tảng của các cryptocurrency mới và của NFT
Về lập trình, smart contract cũng tương tự một lớp bình thường Khác với lớp bình
thường, smart contract cũng có một số tính chất đặc biệt:
- Hàm view, pure là các hàm không làm thay đổi dữ liệu của smart contract và vì vậy, không tốn phí để gọi Khác với hàm thường, sẽ phải trả phí để đồng bộ hoá dữliệu trên mọi máy
- Modifier cho phép định nghĩa các điều kiện được người dùng định nghĩa
- Smart contract chỉ được có 1 constructor
- Smart contract có quyền tạo ra smart contract khác
- Ngoài ra, có nhiều hàm được định nghĩa sẵn trong ngôn ngữ
2.2.7 Proof of stake
Proof of stake là một biện pháp để tin tưởng rằng một block mới trong blockchain được tạo ra với hàm ý tốt, không có giao dịch nào sai hoặc giả mạo Cách hoạt động là Miner (người đào coin) sẽ khoá một lượng tiền để stake Khi được hệ thống blockchain yêu cầu một Miner nào đó tạo một block mới, Miner đó có nghĩa vụ tạo block đó Nếu Miner không tạo block, blockchain sẽ xoá lượng tiền mà Miner dùng để stake Tương tự, nếu Miner tạo block giả và bị các Verifier (người kiểm chứng) phát hiện, blockchain sẽ xoá lượng tiền được stake đó Khi Miner tạo block, Miner sẽ thu về phí giao dịch và phí block Vì vậy, Miner có động lực rõ ràng tạo block có càng nhiều phí giao dịch càng tốt Biện pháp này tốn ít tài nguyên xử lý hơn Proof of work cũ, và các blockchain đang
Trang 17chuyển đổi sang sử dụng biện pháp này.
Trang 18CHƯƠNG 3: TÀI LIỆU THIẾT KẾ GAME
3.1 Giới thiệu
3.1.1 Bối cảnh
Game lấy bối cảnh ngoài không gian với các nhân vật là những chú chuột, là 1 người chơi, bạn có thể mua 2 chú chuột giống và lai chúng ra nhiều chú chuột đẹp hơn, hiếm hơn, từ đó tiếp tục lai và bán để kiếm Token, sau đó có thể đem đổi ở sàn giao dịch để lấytiền định danh
3.1.2 Tham chiếu
Crytokitties có lẽ không phải là một cái tên quá xa lạ với những ai đang yêu thích và đầu
tư dòng game crypto, play to earn Cryptokitties có thể nói là một trong những game đầu tiên áp dụng công nghệ blockchain và sử dụng tiền điện tử như tiền tệ chính thức cho tựa game này
Với mô hình play 2 earn mới mẻ và bắt kịp xu thế, crypto kitties đã khẳng định được vị thế của mình khi doanh thu vừa ra mặt đạt hàng triệu đô, được các quỹ đầu tư lớn chú ý tới và tranh giành,
Trang 193.1.3 Áp dụng
Vậy để áp dụng vào game, chúng em đã quyết định giữ nguyên mô hình của cryptokittes,
tự tạo ra một game NFT của riêng mình Thay vì làm về các chú mèo, nhóm em sẽ lấy chủ đề là các chú chuột ngoài không gian, cách chơi cũng giống như cryptokitties, người chơi có thể lai và bán các nhân vật đó trên chợ, tạo ra những giống chuột mới đẹp hơn và cảm hứng cho người chơi
3.1.4 Play to earn
Người chơi có thể kiếm tiền bằng cách bán những con thú lai được từ con vốn ra và bán lên thị trường, khi có người mua thì tiền sẽ được thanh toán và chuyển về cho chủ của con đó
Trang 20Sau đó dãy id 256bit được cắt ra từng phần và mỗi phần đảm nhiệm làm id cho 1 bộ phận, chiêu thức hoặc các thông số khác ảnh hưởng đến trò chơi
Trang 223 Furr
Trang 273.4 Lai nhân vật
Việc lai 2 nhân vật được thực hiện giống ngoài đời (chỉ có gen trội, không có gen lặn) vớimỗi phần của đoạn mã được kết nối với nhau, từ đó tạo ra 1 con mới mang các đặc điểm của 2 con giống, tạo ra các con mới với các đặc điểm đẹp hơn, nổi trội hơn, và quan trọng, những con này chính là NFT, nghĩa là nhà phát hành sẽ không thể can thiệp vào quá trình sản sinh ra các con này hay tạo ra thêm con mới, nghĩa là trong hệ sinh thái đó, con pet của bạn sẽ là duy nhất
3.5 Mô hình tạo doanh thu
Như đã nói ở trên, doanh thu chính của người chơi sẽ từ việc bán và lai những con nhân vật có các đặc điểm, bộ phận đẹp và quý hiếm và giá của nó sẽ thuộc vào thị trường khác nhiều
Trang 28CHƯƠNG 4: THIẾT KẾ SMART CONTRACT
4.1 Chuẩn thiết kế smart contract
Khi thiết kế smart contract, để thuận tiện cho các Dapp khác nhau hoạt động suôn sẻ, cần phải tuân theo các quy ước có sẵn khi lập trình smart contract Có các quy định lên tên hàm và nội dung gửi cho hàm, để tránh trường hợp một smart contract khai báo hàm transfer(address to, uint256 amount) và smart contract khác khai báo hàm send(uint256 amount, address to)
Khi tuân theo quy luật như vậy, các Dapp không cần thiết kế lại cho từng smart contract riêng, mà có thể đọc nhiều smart contract khác nhau
Tất nhiên, ta có thể lập trình không tuân thủ theo các quy ước này, nhưng điều đó sẽ khiến các Dapp có thể không nhận ra smart contract của mình Dù vậy, các Dapp vẫn có thể hoạt động nếu smart contract có thừa các hàm khác, chỉ không hoạt động nếu thiếu các hàm đã định nghĩa sẵn
4.1.1 ERC-20
20 là chuẩn thiết kế cho các token thuộc loại Fungible, có nghĩa là các token
ERC-20 giống nhau cả về loại và giá trị ERC-ERC-20 giống ETH, theo kiểu 1 đồng ETH luôn có giá trị y chang mọi đồng ETH khác
Các đồng theo chuẩn ERC-20 có thể có các hàm sau:
function name() public view returns (string)
function symbol() public view returns (string)
function decimals() public view returns (uint8)
function totalSupply() public view returns (uint256)
function balanceOf(address _owner) public view returns (uint256 balance)
function transfer(address _to, uint256 _value) public returns (bool success)
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
function approve(address _spender, uint256 _value) public returns (bool success)
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
Các đồng theo chuẩn ERC-20 có thể có các event sau: