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点:

/**

* @dev Interface of the NFT Synthetic.

*/

interface ISynthetic {

    function coreName() external view returns (string memory);


    function tokenTexts(uint256 tokenId) external view returns (string memory);


    function tokenAttributes(uint256 tokenId)

        external

        view

        returns (string memory);

}


/**

* @dev Interface of the NFT(ERC721) Synthetic.

*/

interface ISynthetic721 is ISynthetic, IERC721 {


}

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 具体实例数据:

tokenURI(1), 

{

    "name":"Metacore #1",

    "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",

    "image":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIG1lZXQiIHZpZXdCb3g9IjAgMCAzNTAgMzUwIj48c3R5bGU+LmJhc2UgeyBmaWxsOiB3aGl0ZTsgZm9udC1mYW1pbHk6IHNlcmlmOyBmb250LXNpemU6IDE0cHg7IH08L3N0eWxlPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImJsYWNrIiAvPjx0ZXh0IHg9IjEwIiB5PSIyMCIgY2xhc3M9ImJhc2UiPk1ldGFjb3JlICMxPC90ZXh0Pjx0ZXh0IHg9IjEwIiB5PSI0MCIgY2xhc3M9ImJhc2UiPm1ldGFjb3JlPC90ZXh0Pjwvc3ZnPg==",

    "attributes":[

        {

            "trait_type":"Metaname",

            "value":"metacore"

        },

        {

            "trait_type":"Legoot V2",

            "value":"1"

        },

        {

            "trait_type":"SYNTHETIC",

            "value":"true"

        }

    ]

}

image数据:

<svg

    xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">

    <style>.base { fill: white; font-family: serif; font-size: 14px; }</style>

    <rect width="100%" height="100%" fill="black" />

    <text x="10" y="20" class="base">Metacore #1</text>

    <text x="10" y="40" class="base">metacore</text>

</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的主要属性。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值