翻译:m-NFT 协议的动态交互扩展

,

翻译:m-NFT 协议的动态交互扩展

原文:Dynamic Interaction Extension for m-NFT Protocol

译注:本文作者为 Cipher,翻译内容如果有任何可以改进之处,恳请不吝赐教

介绍

m-NFT 是一个活跃的 NFT 标准草案,已被 Nervos CKB 上的一些社区驱动的产品和团队所采纳。NFT 作为一种社交代币,不应该是静态以及单向性的。想象一个动态的 NFT,允许持有人与发行人和其他持有人互动,形成一个更广泛的 NFT 概念和边界。

我已经观察到许多动态交互的 NFT 产品了,例如 PixEOS 1Open Satoshi 1async.art 等。然而,在动态交互接口和参数的标准方面却没有什么进展。没有具体的标准,第三方钱包和探索者就不能正确地访问和渲染 NFT,因此不能提供与原生应用程序相同的用户体验。

在这里,我们提出了一个动态交互标准,大大扩展了 m-NFT 的功能,以建立基于游戏的 NFT、多人合作艺术、生成艺术、社会实验和其他社区参与的作品。有了这个标准,钱包和其他应用程序可以很容易地访问 m-NFT,以提供各种用户动作和表达。

动态部分

NFT 的多媒体信息在某些条件下是否应该是可变的或改变的,这仍然是一个有争议的问题。由于区块链世界是如此不可预测,新技术新思想每天都在涌现,我们决定不在这个问题上做过多的挖掘。但相反,我们选择赋予 m-NFT 更多表达力的能力,使其更加强大。

每个 m-NFT 都有一个 renderer 字段,用来设置图像、视频、声音或其他媒体的显示。它可以是任何类型的 URI,包括中心化的 URL,去中心化的 ipfs 地址等。动态部分的想法很简单,显示层向 URI 提供各种上下文参数,以表明它分别返回可变的内容。上下文参数可以包括代币的发行指数、持有者的地址、持有时间、epoch 数、分布均匀性、周转次数等。

var format description
tid integer token index under same NFT class
holdsec integer holding time (UTXO live length in seconds)
char hex NFT characteristic bytes
state hex NFT state byte
configure hex NFT configure byte
subset string subset description defined in extinfo_data, optional

有了这些 context parameters,我们可以为已经分发的每个 NFT 创造一个变化的前景。这将会释放出巨大的可能性,例如根据持有期的不同而改变活体宠物的形象。

交互部分

由于 NFT 的主要特征之一是社会性,因此在设计协议时考虑 NFT 持有者之间的交互非常重要。m-NFT 协议中有一个 8 字节的characteristic属性,用于用户对发行者或其他持有人的反馈或互动。默认情况下,持有者可以根据自己的意愿将此参数更改为任何字节。所以用户可以设置不同的特征数据来互相交流他们的想法。

例如,如果我们将 characteristic 的前两个字节解释为 ISO Alpha-2 国家代码,第三个字节解释为灯光状态。每个持有者都可以设定他们最喜欢的国家,为她点燃一盏灯。通过链上收集的所有这些数据,我们可以生成一个动态的全球灯光地图,随着 NFT 持有人的选择变化而变化。

有时候,8 字节的characteristic对于某些动作描述来说是不够的,比如角色塑造。
有时发行者想把持有人的行为限制在一个小范围内。因此,我们引入extinfo_data 使交互部分更加强大,首先,作为惯例,我们将第一个extinfo_data字段设置为 json 字符串,它包含以下变量。

var present value description
"id" must "ce" identity bytes for characteristic extension
"vs" optional string subset description for characteristic, such as “face”, “location”, …
"va" optional hex for 8byte shield set characteristic = characteristic & va
"vo" optional hex for 8byte shield set characteristic = characteristic | vo

id 属性用于告诉应用程序应该如何解释它。vs 属性指的是 characteristic 所描述的内容。例如,如果我们铸造了 1 万个「crypto avatar」NFTs,其中 1 千个设置为「vs」=「face」,1 千个设置为「vs」=「body」,……,其余的设置为「vs」=「ornament」。由于我们有了单独的 characteristic 字段来描述一个 NFT 的不同细节,使得 NFTs 的表达力大大增强。vavo 字节被设置为约束用户交互。我们可以铸造一个具有面部整形能力的 avatar NFT,但持有者只能修改眉毛,而其他特征是预先定义和固定的。

// valid extinfo_data examples
{
    "id"  : "ce",
    "vs" : "nose",
    "va" : "ffff00000000000000",
    "vo" : "000018000000000000"
}
{
    "id"  : "ce",
    "va" : "ffff00000000000000"
}
{
// empty is also valid
}

最后,应用程序将解析 extinfo_data 字段,计算 c = (c & va) | vo,其中 c 表示 characteristic,然后将 characteristicsubset (设置为vs) 传递给渲染器 URI。

总结

通过动态交互扩展,我们可以让 NFTs 更具社交性、可玩性和不可预测性。期待在不久的将来出现的众多可能性。

3 Likes