• EIP-3664合约研究笔记04--Metacore平台功能分析


    DRepublic 团队创作的 MetaCore 系统是集身份系统、无限拼接、无限组合、属性可变 NFT 于一身的一站式平台,MetaCore 让所有用户及项目方都能够创造自己的可拆分可组合 NFT,并将它们挂载到 MetaCore 身份系统上。只需要持有一个 MetaCore,即可将所有组件式 NFT 组织起来,让它们不再是钱包里零散的 NFT,而是分门别类的挂载,组合在不同位置。

    1 官网  MetaCore | First Metaverse Identity

     https://www.metacorelabs.io/

    首页右上角 分别是 Opensea、Contract。

    Opensea: https://opensea.io/collection/metacore-v2

    区块链浏览器,智能合约:https://polygonscan.com/address/0x28fe1ab4e3811fbf59a2f02df0aed4518f2da048

    罗列的三个项目: Metacore、Dragontar、Legoot, 现在都不能操作了。

    区块链浏览器的操作:

    部署合约Metacore: 

      Polygon Transaction Hash (Txhash) Details | PolygonScan

    声明Metacore: 实际就是铸造一个MTC

      Polygon Transaction Hash (Txhash) Details | PolygonScan

    合并Legoot NFT:

      Polygon Transaction Hash (Txhash) Details | PolygonScan

    分解一个:

      Polygon Transaction Hash (Txhash) Details | PolygonScan

    2 Metacore.sol 

    分解一个:separateOne:分解出一个子代币,转给原主人

    全部分解:separate 所有子代币分别转给原主人

    代币合并:combine, 子代币合并入主代币中,所有者是Metacore合约,即主代币合约。

    注册:setAuthNFTs,普通NFT必须先注册后才能在主代币合约中合并+分解。

    铸造: claim,   铸造一个主体代币。

    一般流程:

    1. 部署Metacore合约,

    2. 铸造一个主体NFT, 主属性是“Metaname”,属性id=1.

    3. 注册子代币

    4. 合并子代币

    5. 分解子代币

    3 对子代币合约要求

      强制要求子代币合约具备ISynthetic721接口, 具体的功能有3点:

    1. /**
    2. * @dev Interface of the NFT Synthetic.
    3. */
    4. interface ISynthetic {
    5.     function coreName() external view returns (string memory);
    6.     function tokenTexts(uint256 tokenId) external view returns (string memory);
    7.     function tokenAttributes(uint256 tokenId)
    8.         external
    9.         view
    10.         returns (string memory);
    11. }
    12. /**
    13. * @dev Interface of the NFT(ERC721) Synthetic.
    14. */
    15. interface ISynthetic721 is ISynthetic, IERC721 {
    16. }

    ISynthetic.sol  合成接口, 定义三个函数

        coreName()  查询核心名称

        tokenTexts()  根据代币的主属性查询属性名称

        tokenAttributes()  查询属性值

    Legoot.sol文件示例如下:

    coreName()            return    Legoot  

    tokenTexts(8001)      return    Quarterstaff

    tokenAttributes(8001) return    {"trait_type":"WEAPON NAME","value":"Quarterstaff"},{"trait_type":"WEAPON ID","value":"8001"}

    4 具体实例数据:

    1. tokenURI(1), 
    2. {
    3.     "name":"Metacore #1",
    4.     "description":"MetaCore is an identity system which can make all metaverse citizens join into different metaverses by using same MetaCore Identity. The first modular NFT with MetaCore at its core, with arbitrary attributes addition and removal, freely combine and divide each components. Already adapted to multiple metaverse blockchain games. FUTURE IS COMMING",
    5.     "image":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIG1lZXQiIHZpZXdCb3g9IjAgMCAzNTAgMzUwIj48c3R5bGU+LmJhc2UgeyBmaWxsOiB3aGl0ZTsgZm9udC1mYW1pbHk6IHNlcmlmOyBmb250LXNpemU6IDE0cHg7IH08L3N0eWxlPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImJsYWNrIiAvPjx0ZXh0IHg9IjEwIiB5PSIyMCIgY2xhc3M9ImJhc2UiPk1ldGFjb3JlICMxPC90ZXh0Pjx0ZXh0IHg9IjEwIiB5PSI0MCIgY2xhc3M9ImJhc2UiPm1ldGFjb3JlPC90ZXh0Pjwvc3ZnPg==",
    6.     "attributes":[
    7.         {
    8.             "trait_type":"Metaname",
    9.             "value":"metacore"
    10.         },
    11.         {
    12.             "trait_type":"Legoot V2",
    13.             "value":"1"
    14.         },
    15.         {
    16.             "trait_type":"SYNTHETIC",
    17.             "value":"true"
    18.         }
    19.     ]
    20. }

    image数据:

    1. <svg
    2.     xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    3.     <style>.base { fill: white; font-family: serif; font-size: 14px; }</style>
    4.     <rect width="100%" height="100%" fill="black" />
    5.     <text x="10" y="20" class="base">Metacore #1</text>
    6.     <text x="10" y="40" class="base">metacore</text>
    7. </svg>

    5  合并双方是否同一种NFT?

    限制如下: 

    (1)主体NFT必须是ERC3664CrossSynthetic类型的721合约, 子NFT就可以是符合ISynthetic721接口的任意合约。

    这种情况可以合并不是ERC3664类型合约的NFT。 灵活性较高。

    示例: Metacore.sol  是个通用平台,可以合并任意类型的nft,因此定义的父类型是ERC3664CrossSynthetic。

    (2)主体NFT是 ERC3664Synthetic  类型, 子NFT也必须是ERC3664Synthetic类型的合约。

    这样就可以合并双方。

    示例: Legoot.sol  是个游戏配置平台,可以合并同类型的装备,因此定义的父类型是ERC3664Synthetic  。

    6 对于属性的理解

    本来一个主体NFT通过attach附加了多种属性值,这时合并了一些子NFT,如何处理原有属性和新的子NFT属性呢?

    Metacore合约的策略: 完整属性 =   主体NFT的主要属性 + 子NFT的主要属性,

    重新理解下: 合并NFT操作在物理层面上是一个NFT转移到合约,记录成了子NFT;在属性层面,合并子NFT就是吸收了子NFT的主要属性。 

     

  • 相关阅读:
    XILINX FIR IP 详解、Verilog 源码、Vivado 工程
    函数节流,函数防抖
    文件管理系统----文件目录
    【day11.02】网络编程脑图
    使用CCS软件查看PID曲线
    WebView 以及如何测试
    Eureka高可用集群服务端和客户端配置
    spring学习第一天_Spring简介概览
    【编程语言发展史】SQL的发展历史
    什么是副业思维,副业应该怎么做,用创业思维分析副业的可行性
  • 原文地址:https://blog.csdn.net/u012084827/article/details/127119003