Skip to main content

多源NFT

资源 是NFT的一种输出类型:通常是媒体文件。资源可以是图像、电影、PDF文件,甚至是BASE(一种特殊的实体 - 请参见此处)。多源NFT是一种可以基于特定上下文信息输出不同资源的NFT,例如,如果加载到PDF阅读器中则加载PDF,同理,在虚拟画廊中加载图像。

一个资源 不是 一个NFT或者一个可以被你引用的独立实体。它是NFT的 一部分 —— NFT拥有的多个输出中的一个。

每个RMRK NFT有0个或者更多的资源。当它没有资源的时候,元数据为“根级别”。任何新添加到这个NFT的源将覆盖根元数据,使这个NFT变成 可揭示的(revealable)

译注:revealable,翻译为可揭示的,直白一点的解释就是盲盒。现有的很多NFT,mint时得到的NFT都是盲盒,到指定的开盒时间后,项目方会替换掉每个NFT元数据中媒体URI指向的资源。下文中对revealable的翻译也都将替代为“盲盒”,以助于理解。

RMRK NFT盲盒从用户角度上感受不到差异,然而,因为多资源特性的存在,盲盒的开盒过程在技术实现上变得更为自然优雅。因为一开始这个NFT实际上没有承载任何源,其媒体资源都继承自根元数据,开盲盒的过程,将不会是替换资源,而是直接为NFT增加一个资源。下方的示例1也再次说明了这个问题。

例子#

最好用一些例子来解释。

示例1:盲盒NFT#

NFT 可以有0个资源,在这种情况下,元数据(包括媒体文件的 URI)被放置在NFT的根级别,就像在ERC721等标准中一样。

在这种情况下,这样的RMRK NFT是完全与ERC721兼容的。

如果集合的 发行者 从这个集合中添加一个新资源到一个NFT,这个新资源如果被接受,将替换所有接口、渲染、钱包等中的根级元数据。

⚠️ 一个源的优先级 总是 高于根级别的元数据

这使得去中心化的盲盒机制成为可能,例如,NFT可以像鸡蛋一样被铸造,只需要根级元数据指向鸡蛋媒体。为了显示或“孵化”它们,将向每个元素添加新资源。一旦被接受,新的资源将取代鸡蛋元数据。

示例2:电子书#

一个电子书NFT可以使用三种资源进行铸造——PDF 文件、音频文件和书籍封面图像。

像市场这样的简单界面可以显示书籍封面,但是将 NFT 加载到 Kindle 设备中会自动显示 PDF,而将其加载到 Audible 应用程序中可以播放。

书籍将有不同的输出,每个输出都会加载到不同的上下文中。

示例3:游戏皮肤#

来自玩家的一个常见抱怨是,游戏内皮肤的NFT无法工作,因为皮肤不能映射到另一款游戏中的模型。这是一个有效的观点,但只在NFT的“旧世界”,就像乘坐马车去月球是不可能的。确实不可能,但我们有更好的技术。

使用多资源NFT,一个单独的NFT可以容纳用于Counterstrike的皮肤,以及另一个用于Fortnite的皮肤资源。单个NFT持有相同皮肤的两个模型,可以在游戏之间移植。

示例4:介质冗余#

许多NFT项目使用中心化的URI来存储他们的元数据。这种服务器的停机时间也意味着媒体文件的停机时间。

使用多资源NFT,一个NFT救可以使用每个资源指向不同的资源索引协议中的同一个媒体文件。

NFT可以有多个资源,而不是单个资源指向单个HTTPS URI,每个资源都指向其自己的协议目标,如Arweave、Sia、Filecoin等。

随着每一个新的冗余添加到NFT,这个NFT消失的几率呈指数级降低,因此可以确保寿命。

示例5:优先级#

多资源NFT的所有者可以设置这些资源在支持RMRK标准的用户界面中加载的优先级。

这可以是指在UI中以特定顺序呈现页面的漫画书NFT,也可以是指如果NFT具有可选输出,那么它应该如何设置呈现NFT的优先级。示例包括:

  • NFT在目录中与装备到另一个NFT时看起来不同(示例) - 所有者可以选择显示可装备版本或个性化版本。
  • NFT是多媒体:歌曲、视频和可组合的图像(示例),所有者选择他的偏好。由于 Singular 在探索页面和单一视图中支持音频、视频、PDF、图像和其他类型的媒体,因此所有者可以选择如何呈现此 NFT。
  • 只是外观不同的NFT,所有者可以选择在UI中优先考虑哪一个(示例)

示例6:进化#

如果将资源添加到 NFT 中,并通过资源ID提供了针对现有资源的额外参数,则该目标资源将 被替换

这使得NFT有可以随着时间的推移而增长或变化的良好 演化 机制。例如,一棵树从种子长到树苗,长到幼树,再到成熟树。此外,假设树NFT需要每周用💦 emoji浇水,否则它会死亡,那么另一种资源可能代表一棵树的死亡阶段。

其成长的每个阶段都是一种新资源,并取代前一个。

示例7:可装备能力与前向兼容性#

使用嵌套可装备NFT时,可以使多资源NFT与未来出现的集合兼容,从而为NFT项目增加实用性,否则该项目可能会在发布后因缺乏社区兴趣而死亡。

例如,与Skybreach中的Chunky兼容的镐将具有与Skybreach游戏引擎兼容的像素绘制版资源。

如果以后有新的3D游戏出现,同样的NFT可以很容易地与之兼容。发行者将为其添加新的3D资源,与新游戏的引擎兼容。每个在其NFT中接受这一新资源的所有者都会自动拥有一个更有价值的NFT - 不需要无关的空投,所有者钱包中没有token诈骗邮件。只是一个可以做更多的NFT。

这不仅为现有的NFT项目增添了更多活力,还引入了动态稀有性的概念,其中NFT兼容的collection越多,需求和价值就越大。

提议, 接受, 替换#

译注:标题是"Proposing, Accepting, Replacing"的翻译,表示资源要被添加到NFT时或者要被改变时需要的一些步骤。

将新资源添加到多资源NFT需要发行人和NFT所有者的同意。

具体来说,只有集合的发行者才能提出新的资源,只有所有者才能接受。如果发行者和所有者相同,则不需要这个接受步骤。

NFT的所有者不能将新资源添加到他们自己的NFT中。这可以防止模拟值被添加到NFT。

未经所有者批准,发行者不能向 NFT 添加新资源。此批准可以提前进行,也可以在提出新资源时按需进行。

Implementations#

下面的实现将直接指向代码。有关如何使用它们来铸造您自己的 NFT 的示例,请参阅侧边栏中每个子类型实现的章节。