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, 铸造一个主体代币。
一般流程:
-
部署Metacore合约,
-
铸造一个主体NFT, 主属性是“Metaname”,属性id=1.
-
注册子代币
-
合并子代币
-
分解子代币
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的主要属性。 文章来源:https://www.toymoban.com/news/detail-461410.html
文章来源地址https://www.toymoban.com/news/detail-461410.html
到了这里,关于EIP-3664合约研究笔记04--Metacore平台功能分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!