Các contract chính của CryptoKitties

Một phần của tài liệu Xây dựng game nuôi thú ảo ứng dụng công nghệ blockchain (Trang 27 - 31)

Trong đó, KittyAccessControl contract chứa các địa chỉ và ràng buộc đối với các hành động thực thi bởi những vai trò đặc biệt (CEO, CFO và COO). Các thành phần trong contract này không liên quan đến cơ chế game (game mechanics) mà phục vụ cho việc quản lý. Contract này chứa các phương thức “setters” phục vụ cho những vai trò đặc biệt kể trên trong việc phân quyền và điều khiển.

KittyBase contract định nghĩa những thành phần cơ bản nhất được sử dụng xuyên suốt những tính năng chính của trị chơi, bao gồm cơ sở dữ liệu chính, các hàm, kiểu dữ liệu, và hàm phục vụ cho việc quản lý chúng. Nói cách khác, gần như những dữ

liệu quan trọng nhất của trò chơi được lưu giữ ở đây. Chẳng hạn, kiểu dữ liệu Kitty bao gồm genes (mã gen của mèo), birthTime (là timestamp thể hiện thời gian mèo sinh ra), cooldownEndBlock (thời gian tối thiểu để mèo tiếp tục sinh, được tính bằng timestamp), matronId (ID của CryptoKitty mẹ), sireId (ID của CryptoKitty mẹ), siringWithId (dùng để kiểm tra xem mèo có đang mang thai hay khơng, và lưu giữ Id của mèo giao phối cùng, hoặc 0 trong trường hợp không mang thai), cooldownIndex (dùng để xác định thời gian cần thiết để hồi phục trong mảng cooldown) và generation (số thế hệ của mèo, bắt đầu từ 0). Bên cạnh việc định nghĩa kiểu dữ liệu Kitty, KittyBase cũng giữ dữ liệu của tất cả CryptoKitties trong trò chơi (trong mảng “kitties”) với chỉ số (index) là ID của mèo. Mặt khác, KittyBase cũng chứa nhiều phương thức mapping (key-value) để dễ dàng trích xuất dữ liệu (chẳng hạn lấy địa chỉ chủ sở hữu của một con mèo bất kì thơng qua ID).

Ngoài ra, phương thức được dùng để tạo Kitty mới cũng được định nghĩa trong KittyBase với tên gọi createKitty(). Đây là một phương thức tương đối nặng, do đó, các điều kiện liên quan đến Id bố mẹ và generation đều phải được thỏa mãn để tạo Kitty mới. Trong trò chơi CryptoKitties, cooldownIndex được xác định là giá trị generation của Kitty chia 2. Sau đó, Kitty mới sẽ được tạo và thêm vào tập hợp các Kitties (“kitties” collection), sự kiện Birth() được gọi và mèo được chuyển đến chủ của nó thơng qua phương thức _transfer().

Như đã trình bày ở trên, các NFT trong CryptoKitties thỏa mãn tiêu chuẩn ERC721, có nghĩa là smart contract quản lý việc chuyển nhượng hay sở hữu NFTs đều phải tuân thủ theo ERC721 interface (hay contract). Trong ERC721 có định nghĩa những phương thức phục vụ việc chuyển nhượng NFTs như totalSupply(), balanceOf(), ownerOf(), approve(), transfer(), transferFrom() và sự kiện (events) như Transfer() và Approval(). Nhờ tuân thủ theo ERC721, các NFTs của

CryptoKitties cũng có thể tương tác (theo cách tiêu chuẩn) với những ERC721 tokens khác.

KittyBreeding contract chứa các phương thức cần thiết để giao phối mèo, bao gồm: theo dõi đề nghị giao phối (siring offers) và dựa vào các contract tổ hợp gen khác (external genetic combination contract) như geneScience (có thể được sử dụng trong hàm giveBirth() để xác định DNA của mèo mới). Đặc biệt, geneScience được lưu giữ ở một địa chỉ khác và có thể được thay đổi (vì nó chứa các thơng tin quan trọng liên quan đến giải thuật di truyền (genetic algorithm). KittyBreeding cũng đồng thời định nghĩa phương thức thiết lập địa chỉ này. Hàm thiết yếu nhất trong KittyBreeding là giveBirth(). Nó nhận vào ID của mẹ để lấy giá trị CryptoKitty mẹ và kiểm tra. Sau đó, hàm này cũng lấy giá trị CryptoKitty cha (thơng qua thuộc tính siringWithId từ mèo mẹ). Giá trị generation của CryptoKitty con sẽ là giá trị liền sau của giá trị lớn nhất trong hai generation của mèo bố mẹ. Hàm mixGenes() trong geneScience sau đó được gọi để lấy mã gen của con. Đây có thể được coi như là “hộp đen” của trị chơi, nơi thuật tốn quyết định mã gene được giữ bí mật tuyệt đối. Cuối cùng, chú mèo mới được tạo, thêm vào cơ sở dữ liệu và trả về ID của mèo con. KittyAuction contract chứa những phương thức công khai (public) phục vụ việc đấu giá mèo hoặc dịch vụ phối giống. Chức năng đấu giá được triển khai trong hai contracts đồng thời (buôn bán - sales và phối giống - siring). Việc tạo đấu giá và đấu giá đa phần được thực thi thông qua trung gian là KittyCore contract. Cụ thể, KittyAuction chứa các phương thức thiết lập địa chỉ đấu giá bán (sale auction address), đấu giá phối giống (siring auction address) và geneScience contract (gene science address) được thực hiện bởi CEO.

Trong CryptoKitties, KittyCore contract cịn được gọi là contract chính, hay “the master contract”. Đây là contract chính trong CryptoKitties, tập hợp mọi thứ (các contracts khác) lại với nhau bởi nó kế thừa từ tất cả các contracts trước. Cùng với

đó, những phương thức cuối cùng cũng được thêm vào contract này, chẳng hạn lấy thông tin CryptoKitty thông qua ID (getKitty()).

Ngồi ra, CryptoKitties cịn có KittyMinting, có thể được coi là “nhà máy” sản xuất mèo gen-0. Những hàm sử dụng để tạo mèo gen-0 đều được định nghĩa ở đây. Nó có thể được sử dụng để tạo mèo quảng bá (promo cats) và tặng cho người chơi, hoặc tạo và đặt lên đấu giá với mức giá khởi điểm được tính bằng thuật tốn. Tuy nhiên, số lượng mèo gen-0 tối đa cũng được định nghĩa (ở mức 50,000 con) trong code.

2.2.2. Elemon: 2.2.2.1. Tổng quan: 2.2.2.1. Tổng quan:

Elemon là một game nhập vai được xây dựng và phát triển trên nền tảng Binance Smart Chain (BSC). Người chơi sẽ triệu hồi các Elemons, dẫn dắt các Elemons tham chiến đấu và nhận lại phần thưởng. Ngồi ra, người chơi có thể đặt cược Elemon (ELMON) để kiếm thêm lợi nhuận. Game được ra mắt vào quý 4 năm 2021.

Một phần của tài liệu Xây dựng game nuôi thú ảo ứng dụng công nghệ blockchain (Trang 27 - 31)

Tải bản đầy đủ (PDF)

(141 trang)