Metavrese资源铭文 Metavrese Resource Inscriptions

创新

现有Web3问题陈述

在Web3的世界里,所有的游戏都是碎片化的、互不兼容的。这就导致了这样一种情况,一旦用户购买了游戏资产,当游戏生命周期结束时,该资产就变得毫无价值。虽然该资产仍然存在于区块链上,但它不再具有任何价值。有些可能只是为了观赏而变成图像,而另一些则可能变成毫无意义的代码串。

解决方案构想

Web3的元宇宙急需一种通用的协议,用来定义和设置一个大家共用的资源,该资源通过共识,使各个游戏开发者,应用开发者共同遵守,共同使用。这样,当我拥有该资源,它便成为我在web3世界中纵横驰骋的资产,就像你拥有一辆车,你就可以开去任何地方,你拥有一个化身,你就可以用他出现在任何虚拟世界中。就算某一天,一款游戏的生命周期结束,也不影响你拥有的这份资产,他会继续存在于其他的元宇宙中,无穷无尽。

协议基础定义

基础资源铭文主要由三部分组成,分别是基础资源属性块,应用扩展属性块以及预览展示块组成

  • 基础资源属性块(baseData):负责存放和设置有关该资源的所拥有的基础属性,包含资源的相关图形资源铭文地址,比如图片,3D模型等。也包含一些资源所携带的比如大小,动画等相关设置属性。这些属性的设置满足最基本的应用要求,其所携带的属性可以被应用扩展属性块所扩展和引用。

  • 预览展示块(previewdata) :本模块由两个子部分组成,

    1. 一部分是存放展示模块的相关属性,它们可能包括帧大小、宽高比或为预览定制的特定设置等内容。

    2. 一部分是针对相关属性的展示代码(需上链)。这是需要上传到区块链以使显示属性起作用的实际代码。

    该模块是用于在ordi的生态,比如ordiscan等web网页中展示其资源的大致预览,此模块理论上是满足嵌套原则,并且可以随意设置展示效果的模块,可以高度定制。

  • 应用扩展属性块(appdata ):用于存放应用独占的相关属性,它包括:

    1. 自定义属性:每个应用程序都可以为资产定义自己的一组独特属性。

    2. 外部属性引用:应用程序可以引用其他应用程序中定义的属性,也可以构建自己独特的属性块进行扩展。

    这使得该资产能够在各种应用程序中具有高度的通用性和适应性,确保其在不同的用例中保留其价值和实用性。

通过定义这三个块,我们为 Web3 元宇宙中的资产管理创建了一个全面且灵活的框架,允许标准化和定制。

就上上图所示的一样,资源一次上链,所有遵循该协议的游戏和应用中,均可以直接引用metaverse中的基础属性用于显示和获取该资源的初始属性与状态关键字。也可以通过AppData中的相关自定义属性来让相关资源符合特定app的要求。当然你也可以使用其他应用已经定义好的相关属性。这一方便是非常开放,游戏与应用开发者可以自由发挥。

你也可以在游戏或者app应用中使用铭文中的所有属性和资源,比如被建议只用于展示的metaversepreview模块属性等。这是你的自由,你完全可以这么做。

一个完整的资源铭刻应该最少包含metaverse和metaversepreview两块属性,缺少metaverse,这个协议将没有意义,缺少metaversepreview,他可能还能应用于游戏和应用中,但是可能将无法被展示和预览,链上web(比如ordiscan等)将无法正常显示其图像。

嵌套原则 Recursive Metaverse Inscriptions(实验开发中)

chapter1.3

如何构建?

铭文为适配网页显示以及存储数据,在可读性和可变性上考量,因为xml独有的相关特性,在支持自定义数据,以及可扩展嵌套的相关优势之上,最终选择了xml这种格式来用于铭刻上链。

最基础的相关格式完整示例如下

<metaverse
	p="brc-420"
	name="CuteDoge"
	src = "/content/4acc4304ab4b62855ad8540c4effd6f70410ce3gg50e7886109ad985dc2ba2642"
	collection="PixelDoge"
	serialnumber="103"
	description="This is a cute dog with animation, you can use it anywhere"
	...
>
	<someattribute attribute1="a1" attribute2="a2" />
	<someattribute attribute1="a1" attribute2="a2" />
	<otherattribute attributei="i1" attributej="j1" />
</metaverse>
	
<someappdata
	attributeyouwant1="abc"
	attributeyouwant2="cde"
>
	<multipleattribute attributeyouwant="" />
</someappdata>

<metaversepreview
	backgroundcolor="0b9db7"
	>
	<previewimg 
		src="/content/4acc4304ab4b62855ad8540c4effd6f70410ce3gg50e7886109ad985dc2ba2642"
	/>
	<previewimg 
		src="/content/2c777cc0756d5bb198153cdde9f00c779edi0ef0594ffa692ec18c4e5522a40c12"
		size="[1,1]"
		position="[0.5,0.25]"
	/>
	<previewimg 
		src="/content/1d98ab4bc17826462e8786f7c28806b5609fd4392i0090cf70df45ace0f4e498c2"
		size="[0.4,0.4]"
		position="[0.8,0.8]"
		rotation="-30"
	/>
</metaversepreview>
<script  src="/content/5a24d6d8d12794e88d2c76e321081939295ad73add3820834757b7914a34acfai0"></script>

metaversepreview中的代码为范例展示模版代码,其中所填写的属性具体以引用的script中所要求的规范去填写,开发者可以引用范例中已经上链的展示模版script来直接编辑展示图片,具体规则见chapter1.1.1,也可以参考范例脚本的编写方式自定义更加炫酷的展示模版script。

metaverse

<metaverse
	p="brc-420"
	name="CuteDoge"
	src = "/content/4acc4304ab4b62855ad8540c4effd6f70410ce3gg50e7886109ad985dc2ba2642"
	collection="PixelDoge"
	serialnumber="103"
	description="This is a cute dog with animation, you can use it anywhere"
	...
>
	<someattribute attribute1="a1" attribute2="a2" />
	<someattribute attribute1="a1" attribute2="a2" />
	<otherattribute attributei="i1" attributej="j1" />
	<otherattribute attributei="i1" attributej="j1" />
</metaverse>

此代码中相关单属性写在"<metaverse" 与 ">" 之间以空格分开,当然你也可以按照标准格式每一个属性一行进行设置

什么是单属性,什么是多项属性?

单属性:在属性中有且仅含有一个属性key类别的属性,比如名称,编号等。这种属性无法赋予多个,我们称之为单属性。

多项属性:在属性中可能会有多个的属性,比如动画属性,资源可以携带多个动画。

metaverse标准基础单属性建议:

key
Required?

p

Yes

遵循的相关协议 建议填写brc-420

name

Yes

资源名称,是资源的标识名称。

src

Yes

资源依赖的已经上链的资源原始文件,比如2D资源的一张图片,3D资源的一个模型等。

srctype

Yes

原始资源的文件格式,比如图片资源有PNG,JPEG等,模型资源有OBJ、FBX、GLB等。

collection

No

合集名称

serialnumber

No

合集中序号

description

No

资源的相关描述

some key you want

No

你当然可以添加你愿意自定义的相关属性。 建议key格式为custom_yourtypename。 因为不带custom关键字的相关属性 为协议的创世属性或者后续社区投票相关属性。

代码中相关多属性写在"<metaverse...>" 与 "</metaverse>“之间。由多个属性名称一样的元素块构成

<!--属性名为 someattribute 的元素块,里面有attribute1 以及attribute2等子属性 -->
<!--当子属性较少是可以直接一行格式即可-->
<someattribute attribute1="a1" attribute2="a2" /> 
<someattribute attribute1="a1" attribute2="a2" />

<!--当子属性较多时你可以直接按如下格式经行处理以增加可读性-->
<otherattribute 
    attributei="i1" 
    attributej="j1"
/>
<otherattribute 
    attributei="i1" 
    attributej="j1"
/>

appdata

<someappdata
	attributeyouwant1="abc"
	attributeyouwant2="cde"
>
	<multipleattribute attributeyouwant="" />
</someappdata>

这一属性块区域是相关应用或游戏的自定义属性设置的地方,其格式规范可参考metaverse块的属性设置方式,同样分为单属性块和多属性块。

我们将在 rcsv生态中的Bitmap Explorer自定属性块中以实际用例详细介绍此属性块。

metaversepreview

这是关于显示相关的属性,其中包含了其资源在web端或者其他平台或载体的展示效果。其可与资源基础属性相关联,也可以完全独立,这取决你所设置的资源展示模版代码。

其属性结构方式可参考 上述metaverse的属性结构。也是分为单属性块和多属性块。

我们将在 2D Res Inscriptions 结合实例详细介绍此模块

Last updated