Web3学习之ERC721

· 4min · Paxon Qiao

Web3学习之ERC721

ERC721

加密猫

https://www.cryptokitties.co/

image-20240708161717117

加密猫(CryptoKitties)是一个建立在以太坊区块链上的区块链游戏和收藏品平台。它是最早将区块链技术应用于非同质化代币(NFT)的项目之一,并且对区块链游戏和NFT的普及起到了重要作用。

https://etherscan.io/token/0x06012c8cf97bead5deae237070f9587f8e7a266d#code

加密猫的关键特点

  1. NFT(非同质化代币)

    • 每只加密猫都是一个唯一的ERC-721代币,这意味着每只猫都有独特的属性和基因,无法被复制或替代。
    • NFT的特点使得每只猫在区块链上都是唯一的,这为数字收藏品提供了真正的稀缺性和所有权证明。
  2. 繁殖和遗传

    • 玩家可以通过繁殖两只猫来生成新的小猫,每只小猫的基因是父母基因的组合,这使得新生的小猫具有独特的属性和外观。
    • 繁殖过程中的基因组合是随机的,这为游戏增加了趣味性和不确定性。
  3. 市场交易

    • 玩家可以在市场上买卖加密猫,价格由市场需求决定。稀有和独特的猫通常会卖出高价。
    • 玩家也可以通过拍卖和直接交易等方式进行猫的买卖。
  4. 区块链技术

    • 加密猫是建立在以太坊区块链上的,所有交易和所有权记录都是透明和不可篡改的。
    • 由于使用区块链技术,玩家可以放心地进行交易和收藏,因为他们的猫的所有权是安全和受保护的。

示例代码:创建简单的ERC-721代币

以下是一个简单的ERC-721代币合约示例,展示了如何创建一个基本的NFT合约:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract CryptoKitty is ERC721, Ownable {
    uint256 public nextTokenId;
    
    constructor() ERC721("CryptoKitty", "CK") {}

    function createKitty() external onlyOwner {
        _safeMint(msg.sender, nextTokenId);
        nextTokenId++;
    }

    function getKitty(uint256 tokenId) external view returns (address) {
        return ownerOf(tokenId);
    }
}

加密猫对区块链和NFT的影响

  • 普及NFT概念:加密猫是最早的成功NFT项目之一,使得NFT的概念被更多人理解和接受。
  • 推动以太坊网络:由于加密猫的流行,一度导致以太坊网络拥堵,这也促使开发者和社区更关注区块链的扩展性和性能问题。
  • 激发更多创新:加密猫的成功激发了许多类似的区块链游戏和NFT项目的出现,如CryptoPunks、Axie Infinity等。

结论

加密猫(CryptoKitties)不仅是一个有趣的区块链游戏,更是NFT和数字收藏品领域的重要推动力。通过将区块链技术应用于游戏和收藏品,它为整个行业提供了一个新的视角和可能性。

ERC721标准

https://eips.ethereum.org/EIPS/eip-721

思考:从ERC20到ERC721的协议是怎么实现的?

转账的时候参数怎么设计

查询的时候参数怎么设计

授权批准的时候参数怎么设计

ERC1155

https://eips.ethereum.org/EIPS/eip-1155

查询

交易 transfer

授权 approve

https://www.lootproject.com/

RWA

图床