
Metanet协议是一个比特币网络之上的二层协议,它提供了一种在BSV(Bitcoin SV)区块链上创建数据结构的方法。该协议利用节点和边来表示BSV账本上的有向无环图(DAG)数据结构。Metanet协议可用于构建各式各样的系统,如文件系统、互联网域名、所有权结构和代码库。
有一些工具可以用来编写和读取Metanet图,而且有越来越多的项目使用Metanet协议来构造他们应用里的数据结构。
一个典型的Metanet图
节点和边结构
Metanet协议是一个用于创建图结构的协议,这个图包由节点和边组成。Metanet协议中,节点和边的定义如下。
- Metanet节点:一个使用Metanet协议格式的交易。
- Metanet边:一个能够连接两个Metanet节点的输入签名。
Metanet节点是符合Metanet技术摘要中规定的Metanet交易格式的交易,这份文件是由nChain公司发布的。Metanet交易的基本组成部分包括一个协议标识、Metanet特定的数据属性,以及Metanet节点交易需要存储的交易内容数据。
协议标识是一个4字节的十六进制前缀字段,标志着一个交易正在使用Metanet协议的格式。该前缀的十六进制值在2019年6月5日的公开投票中被选为字符串“meta”的十六进制编码0x4d455441。
Metanet节点交易的特定数据属性包括以下内容:
- :定义节点的公钥。
- :节点交易的交易ID,它具有唯一性。
- :定义父节点的公钥。
- :使用私钥创建的签名,该签名与定义父节点的公钥相关联。
- :父节点交易的交易ID,它具有唯一性。
上面列出的Metanet中特有的数据属性共同定义了Metanet节点,以及该节点在多个Metanet节点构成的的更大图结构中的位置,此图被称为Metanet图。
一个节点可能没有任何父节点,这样的节点称为根节点。根节点的,和 属性都将是空值,因此可以在其输入中使用来自任何公钥的有效签名。
Metanet交易是包含OP_FALSE OP_RETURN的交易,OP_FALSE OP_RETURN中装载的内容包含:
- Metanet标识
- 一个节点公钥
- 一个父节点的交易ID即(如果是根节点,则为空值)
为了成为有效的 Metanet节点,交易还必须由与其父节点对应的公钥签名。
只要遵循了Metanet核心属性,任何内容数据及其编码都可以被包含在OP_FALSE OP_RETURN之中。Metanet协议没有指定内容数据和附加属性的应用方案,任何使用了 Metanet协议且有价值的应用交易都可以被认为是Metanet节点交易。
符合此格式的 Metanet 节点交易的基本示例如下图所示。
Metanet 节点交易
将父Metanet节点和子Metanet节点之间创建起来边,就构造出了Metanet图。在父节点和子节点之间创建边是通过使用父公钥在子节点中创建和插入签名 来实现的。
创建Metanet的边
该签名存在于交易输入中的这一事实意味着签名本身可以由矿工验证。这也就意味着可以通过显式验证签名或确认节点正在花费合适的过去的输出来降低欺骗Metanet节点的成功率。
Metanet协议规则
Metanet协议为创建Metanet图和数据结构指定了一个简单且可扩展的规则集。基本规则集如下:
- 节点是交易。
- 边是由签名创建的。
- 每个节点由一对属性唯一标识:: 和 。
- 每个节点必须明确其自身及其父节点的ID: 和
节点的唯一节点标识符在数学上定义为,其中H()是一个加密哈希函数。
可以单独使用此基本规则集创建Metanet图结构。还可以对 Metanet 图结构附加额外的规则,以实现数据结构的不同属性。
规则集的一个简单扩展是对其增加以下的约束:
- 节点的入度应该是 0(没有父节点)或 1(一个父节点)。
- 节点的出度应该是一个自由参数。
这些附加规则允许存在类似于域的结构,称为Metanet DAG,Metanet DAG可用于构建继承网站和文件系统,这些网站和文件系统具有Metanet图的权限结构。
一个简单的Metanet规则集