首先MetaID是一个分布式的DID系统,如果不了解DID系统的可以看一下相关定义描述(https://www.w3.org/TR/did-core/),其次他是基于Metanet的二级协议,MetaID本质上是将区块链上离散的一条条交易,穿过钱包、应用等而直指个人,通过一个共识,DID从应用从钱包端剥离出来,将人的交易联系起来,同时又将控制权赋予用户,而不是钱包或者平台,这样才有给这些交易赋予更多价值。
这个协议的层级是 BSVMainnet --> matanet --> metaid --> subMetaProtocol ,每一层协议都基于他更底层的协议完成更多的抽象,也可以直接通过底层的设施完善和实现自身层级的功能。
所以我们先简单了解一下底层协议的情况。
首先BSV主网大家再熟悉不过了,独特的UTXO模型,创世升级之后重新添加回来的op_code,无限制的块上限,使得本身bsv主网有无限的可能,这边就不再多描述了。
而Metanet(https://nchain.com/app/uploads/2019/06/The-Metanet-Technical-Summary-v1.0.pdf),在推出这段时间内,对metanet的研究已经越来越多,metanet 提出一种将tx聚合的方案,方便我们将离散的tx聚合在一起,同时赋予了鉴权,版本替换等特性,我们将个人交易聚合在一起便更加方便了。一个更方便的共识在我们脑中成型了:
MetaID是一个应用间钱包间的一个共识,应用将个人数据控制权重新还给用户,应用间可以被授权获取需要获取的用户信息,应用间将通过被打破壁垒的信息做更多的服务。当前所有的用户可以选择不授权给不信任的应用,只使用最基本的Info信息。
MetaID (https://www.metaid.io/meta_protocol)
MetaID的目标
-
用户在BSV网络上只需一个主私钥对就可以使用所有支持MetaID的应用;
-
用户基本信息和应用交易数据记录在自己掌握的Metanet节点上,做到用户数据和钱包方和应用方无关,用户彻底掌握自己数据。
-
不同应用间的数据可以相互联通,消除应用间的信息孤岛状况;
-
不同协议的数据可以在MetaID关联下能相互组合,BSV应用开发工作大为减少;
-
MetaID具有灵活的扩展性,应用/协议制定方能方便地加入或修改其需要的协议,从而支持各种各样的应用;
MetaID的基本数据格式
<Metanet Flag><P(node)><TxID(parent)><MetaID Flag><node Name><data><encrypt><version><data Type><encoding>
MetaID基于metanet,所以开始的3个部分也是Metanet的基本协议要求,这边我们使用了pubkey当做Pnode的标识,这样可以方便后续应用加密使用。后面部分的取值如下
key | value |
---|---|
MetaID Flag | 固定为"MetaID" |
node_name | 节点标识名字,必须字段。 |
data | 存储节点所对应的数据内容 |
encrypt | 标识该节点内容是否加密。本协议版本支持两种方式:0为不加密;1为ECIES加密,即加密key为对应节点的公钥,采用对应节点路径的私钥解密。默认为0不加密。 |
version | 节点类型的版本号,不同版本号意味着data内容的格式不相同。 |
data_type | 可选项目。data对应的数据类型,可用数据类型请参考:https://www.iana.org/assignments/media-types/media-types.xhtmls。默认为text/plain |
encoding | 可选项目。data对应的编码格式,可用编码类型请参考:https://www.iana.org/assignments/character-sets/character-sets.xhtml。默认为UTF-8, |
MetaID的基本结构
MetaID的根节点下只有两个子节点,分别是"Info"和"Protocols"。
- 其中Root节点为用户的MetaID
-
Info 为用户基本信息节点。记录用户姓名、头像之类的基本信息。
-
Protocols 为协议节点。记录用户使用相关协议所产生的交易。
这样,第三方应用很容易得到用户的头像以及昵称,当然敏感的信息,都是加密存储的,应用只有获取了用户授权在可以获取用户私钥解密的真实数据。
而Protocols节点则约定存储用户的应用产生的数据,用户可以授权第三方插入数据(也就意味着如果用户不愿意自己的数据相互关联,可以选择不给这些应用授权,应用也可以做类似linux系统软连接的方式将交易关联隐藏)
从而达到数据属于用户,数据控制也属于用户,数据多了,也就能产生更大的价值,起到1+1>2的作用。
Protocols节点
Protocols节点为记录用户使用各种第三方协议的交易情况。Protocols节点下的子节点为第三方协议节点,其node_name应为协议名称,协议规定了之后,所有的协议可以互相关联,比如点赞协议可以点赞任何tx,也就意味着可以点赞其他协议/个人,而wallet或者提供推送的应用,便可以将任何操作推送到你的终端,就像传统互联网应用一样的体验。
说了那么多,应该如何创建MetaID呢,可以参照之前的blog https://blog.csdn.net/percyWangcn/article/details/106901024。
而下一篇,将会介绍一系列基于MetaID的服务。