发行方为 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"]
    }
}

max

NFT 的最大发行量。

issuer

NFT 的发行方,绝大多数情况下,它应该是一个铸币厂合约地址,但本标准并不限制,因为在某些情况下必须要使用验证方地址,例如中心化机构颁发的房产证。

owner

NFT 发行方的所有权,它可以是一个合约地址,具有在合约允许的范围内修改合约状态的权限,因此可以允许 DAO 来管理 NFT 的发行。

protocol

协议描述了该 NFT 为何物,是 NFT 之间交互的逻辑层。NFT 之间的交互首先由铸币合约处理,以保证满足相应的权限,以及属性的 variable 。如有必要,则调用协议合约接口处理数据。

协议的格式为 协议名称版本号合约地址的组合,在大多数场景下合约地址不是必须的,应优先选择通过协议名称自动寻址,避免重复的不必要部署带来的资源浪费,同时减轻了开发者的负担。对于社区来说,标准化的协议减轻了审计负担。

格式

协议的格式为 协议名称_版本号:协议地址 ,协议地址可以缺省,此时采用 MIM 的系统应当提供类似注册表的机制,以方便合约通过 协议名称_版本号 获得唯一性的协议合约地址。

完整的协议格式示例:

apple_1_1:0xaaa24678f36c28baa3beaf86bd065dd18a85df24

省去协议地址的格式示例:

apple_1_1

规则