技术社区分享|Cadence NFT 新标准 MetadataViews 介绍

2022 年 1 月 5 日, Flow NFT 仓库合并了 metadata 的新标准,本次 metadata 标准是由 Versus 与 Find 创始人Bjarte S. Karlsen 和 DapperLabs 工程师 Joshua Hannan 共同在 Flip-Fest 活动中完成,经过了将近三个月的讨论和完善,最终合并至 Flow 官方的 NFT 标准库中,本文将从代码的细节介绍 MetadataView 相关的标准细节。

写在前面

  • 本次标准升级是非强制升级的,不会影响 NonFungibleToken 合约,也不会影响原有部署的合约的业务逻辑

  • 已经部署在主网的合约需要升级才能应用新的 Metadata 标准

  • 升级所覆盖的资源会影响到 Collection 继承的类型,也会影响 NFT 资源

  • Metadata 标准定义了一套灵活的接口实现,可以支持任意类型或自定义的 Metadata 格式

  • 支持一个 NFT 拥有多种 Metadata 类型,并提供统一的读取方式

  • Metadata 标准是用一个全新的合约来定义,想要实现标准的合约需要在 NonFungibleToken 之外引入新的名为 MetadataViews 的新合约。

MetadataViews 合约详解

MetadataViews 又两个接口定义和四个推荐的 Metadata struct 组成(后续可能还会增补):

Interface

  • Resolver —— 由 NFT 资源继承

  • ResolverCollection —— 由存储 NFT 集合继承

Struct

  • Display

  • File

  • HTTPFile

  • IPFSFile

■ MetadataViews.Resolver


// A Resolver provides access to a set of metadata views.

//

// A struct or resource (e.g. an NFT) can implement this interface

// to provide access to the views that it supports.

//
pub resource interface Resolver {

  pub fun getViews(): [Type] // getViews 返回 NFT 所支持的不同类型的 metadata 数据

  pub fun resolveView(_ view: Type): AnyStruct? // 根据具体的 View 类型获取到 NFT 所实现的 Struct

}

Resolver 需要由 NFT 或 NFT 的数据结构继承,并实现其中定义的两个函数

 MetadataViews.ResolverCollection

  • getViews —— 返回数组形式的 View 类型,也是 NFT 所支持的不同类型的 metadata 数据

  • resolveView —— 根据具体的类型,获得 NFT 的 struct数据

    
    // ExampleNFT
    // 1. 比原有的实现增加了 MetadataViews.Resolver 接口,并实现了其定义的两个函数
    pub resource NFT: NonFungibleToken.INFT, MetadataViews.Resolver {
    
      pub let id: UInt64
    
      // 2. 为实现 MetadataViews.Display 所添加的属性,如果需要实现其他类型的 metadata 需要添加相应的字段
      pub let name: String
    
      pub let description: 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值