发行方为 NFT 发行的控制机构,绝大多数情况下,它是一个合约。本页标准中的数据在该合约中必须全部可见,任何人都可以随时从合约获取这些数据。合约还必须实现本页所描述的所有交互接口。
以下为发行方 Json Schema :
{
"title": "",
"type": "object",
"properties": {
"max": {
"type": "integer",
"description": "NFT 的最大发行数量"
},
"issuer": {
"type": "string",
"description": "INFTs 的发行方唯一标识"
},
"owner": {
"type": "string",
"description": "发行方的所有权,它可以是一个合约地址"
},
"metadata": {
"type": "string",
"description": "描述性资源地址,HTTP(s) / IPFS URI 等"
},
"protocol": {
"type": "string",
"description": "该 NFT 采用的协议,格式为 协议名称:协议合约地址,地址可省略"
},
"properties": {
"type": "array",
"description": "NFT 的属性集规则",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "属性名称,需与协议中保持一致"
},
"data": {
"type": "integer" | "string" | "array",
"description": "属性的默认值"
},
"rule": {
"type": "object",
"description": "该属性应遵循的规则",
"properties": {
"variable": {
"type": "string",
"enum": ["immut", "conserves", "consume", "auto", "protocol"],
"description": "该属性的数据变化限制"
},
"slot": {
"type": "object",
"description": "插槽规则",
"properties": {
"whitelist": {
"type": "array",
"description": "允许添加进该 NFT 的发行发集合,[]则是不允许,[" * "]则是不限制",
"items": {
"type": "string",
"description": "允许添加进该 NFT 插槽的合约地址",
},
},
"protocol": {
"type": "object",
"description": "该插槽采用的协议以及与协议交互的数据",
"properties": {
"name": {
"type": "string",
"description": "属性协议,为空则使用默认,格式为协议名称:协议合约地址,地址可省略",
},
"params": {
"type": "array",
"description": "提交给协议合约的参数集",
}
}
}
}
},
},
"required": ["variable", "slot"]
},
},
"required": ["name", "data", "rules"]
}
},
"required": ["max", "issuer", "owner", "metadata"]
}
}
NFT 的最大发行量。
NFT 的发行方,绝大多数情况下,它应该是一个铸币厂合约地址,但本标准并不限制,因为在某些情况下必须要使用验证方地址,例如中心化机构颁发的房产证。
NFT 发行方的所有权,它可以是一个合约地址,具有在合约允许的范围内修改合约状态的权限,因此可以允许 DAO 来管理 NFT 的发行。
协议描述了该 NFT 为何物,是 NFT 之间交互的逻辑层。NFT 之间的交互首先由铸币合约处理,以保证满足相应的权限,以及属性的 variable
。如有必要,则调用协议合约接口处理数据。
协议的格式为 协议名称
、版本号
、合约地址
的组合,在大多数场景下合约地址不是必须的,应优先选择通过协议名称自动寻址,避免重复的不必要部署带来的资源浪费,同时减轻了开发者的负担。对于社区来说,标准化的协议减轻了审计负担。
协议的格式为 协议名称_版本号:协议地址
,协议地址可以缺省,此时采用 MIM 的系统应当提供类似注册表的机制,以方便合约通过 协议名称_版本号
获得唯一性的协议合约地址。
完整的协议格式示例:
apple_1_1:0xaaa24678f36c28baa3beaf86bd065dd18a85df24
省去协议地址的格式示例:
apple_1_1