以 NFT 发行的头像是一种唯一性的资源,唯一性通常意味着稀缺性,他们通常在市场上出售,通过稀缺度和价格的关联来完成稀缺资源的分配。这种类型的头像往往表现为一个不可更改的图像,AIT 当然轻松支持这种模式。但这样的头像包含了很多可分割的部分,仍不是原子化的,也因此带来了分配的公平性问题、市场失灵问题等等。AIT 可以将头像再次原子化。

这是一个最简单的头像铸币合约的属性示例,它包括帽子、头发等各种属性,他们的值是不可变的,并具有相应的稀缺度。

{
    "properties": [
        {
            "name": "hat",
            "data": 0,
            "rule": {
                "variable": "immut",
                "slot": {}
            }
        },
        {
            "name": "hair",
            "data": 0,
            "rule": {
                "variable": "immut",
                "slot": {}
            }
        },
    ]
}

通过此合约铸造的头像类似于:

{
    "issuer": "0x9ab5f62aaab8813c67d895901b8d4eba34461445",
    "id": "12",
    "metadata": "ipfs://XXX",
    "owner": '0xas2443544assd12092ad1028285549',
    "properties": [
        {
            "name": 'hat',
            "value": 133,
            "slot": [],
        },
        {
            "name": 'hair',
            "value": 654,
            "slot": [],
        }
    ],
}

渲染

想要渲染这些数据,一个最简单的方法是把所有属性的所有数值对应的图像 uri 放在 metadata 中,通过铸币合约的协议(链上和应用)来规范渲染,这样一来同一个 NFT 都能在不同的 Dapp 中渲染出同样的图像。这种最简单的方式正是目前头像类 NFT 的主流,相比之下,使用 AIT 协议将极大地减少链上资源,铸币合约没必要每个头像都生成一张图片并在链上存储其索引。

AIT 不仅仅止步于此,通过头像的 DAO 社区决定引入 renderer 属性来渲染头像,同时以为艺术家为此画了一套头像并发行了另一个 NFT ,头像铸币合约只要将其加入白名单即可,现在铸币合约的属性如下:

{
    "properties": [
        {
            "name": "hat",
            "data": 0,
            "rule": {
                "variable": "immut",
                "slot": {}
            }
        },
        {
            "name": "hair",
            "data": 0,
            "rule": {
                "variable": "immut",
                "slot": {}
            }
        },
        {
            "name": "renderer",
            "data": 0,
            "rule": {
                "variable": "protocol",
                "slot": {
                    "whitelist": ["0x21a31ee1afc51d94c2efccaa2092ad1028285549"],
                    "protocol": {
                        "name": "avatarrenderer",
                        "params": []
                    }
                }
            }
        },
    ]
}

avatarrenderer 协议规范了渲染的流程,保证了最终图像的一致性。NFT 的持有者现在领取渲染NFT,渲染 NFT 的领取规则可以都多样性,现在这个 NTF 看起来像这样:

{
    "issuer": "0x9ab5f62aaab8813c67d895901b8d4eba34461445",
    "id": "12",
    "metadata": "ipfs://XXX",
    "owner": '0xas2443544assd12092ad1028285549',
    "properties": [
        {
            "name": 'hat',
            "value": 133,
            "slot": [],
        },
        {
            "name": 'hair',
            "value": 654,
            "slot": [],
        },
        {
            "name": 'renderer',
            "value": '',
            "slot": [
                {
                    "issuer": "0x21a31ee1afc51d94c2efccaa2092ad1028285549",
                    "id": "29",
                    "metadata": "ipfs://XXX",
                    "protocol": 'avatarimage',
                    "properties": [
                        {
                            "name": "uri",
                            "value": "ipfs://XXX",
                            "slot": [],
                        }
                    ],
                }
            ],
        }
    ],
}

根据协议,渲染客户端会首先读取到avatarimage 协议,依照协议将从渲染 NFT 的 metadata 中获取元数据,将不同属性和值对应的元图像添加到画布中,最终形成图片。

升级

生态在不断的发展,当需要使用到 3D 类型的头像时,铸币合约通过 DAO 治理可以将协议更新为 3davatarrenderer ,并将带有 3D 元数据的 NFT 加入到白名单中。

合并

两个头像类 NFT 可以允许合并,数值保留稀缺度高的,这有点类似于真实世界中的整容,这就是 AIT 对人类文明的模拟能力。

角色

在一个更大的角色对战游戏中,不仅仅需要角色的技能和装备,还需要读取用户的头像,这时候只需要将头像 NFT 插入到角色的 NFT 中。这个角色可能是一个士兵,他又可以抵押给某个国家参与一场史诗般的战争中。