-
ERC721
是一個標準接口,用於非同質化代幣。每個代幣都是唯一的,適合用於表示遊戲中的虛擬資產。 -
mint
函數用於創建新代幣,將代幣分配給指定地址,並設置其URI(通常是鏈接到資產的元數據,如圖像、描述等)。 -
_setTokenURI
和tokenURI
函數用來管理和查詢代幣的URI,即該代幣對應的資產信息。
2. 去中心化市場
區塊鏈遊戲的另一個強大應用是去中心化市場,讓玩家能夠*交易他們的遊戲資產,而不需要第三方的干預。在這個市場中,智能合約用於確保交易的透明性和安全性。
以下是一個簡單的基於智能合約的遊戲資產市場示例:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Marketplace {
struct Item {
address seller;
address nftContract;
uint256 tokenId;
uint256 price;
}
Item[] public itemsForSale;
function listItem(address nftContract, uint256 tokenId, uint256 price) public {
IERC721(nft = IERC721(nftContract);
require(nft.ownerOf(tokenId) == msg.sender, "You are not the owner");
nft.transferFrom(msg.sender, address(this), tokenId);
itemsForSale.push(Item({
seller: msg.sender,
nftContract: nftContract,
tokenId: tokenId,
price: price
}));
}
function buyItem(uint256 itemId) public payable {
Item storage item = itemsForSale[itemId];
require(msg.value == item.price, "Incorrect price");
IERC721 nft = IERC721(item.nftContract);
nft.transferFrom(address(this), msg.sender, item.tokenId);
payable(item.seller).transfer(msg.value);
}
}