如何创建一个MetaID(一)

在了解了什么是MetaID之后,今天分享一下如何简单快速的创建属于自己的MetaID。

首先还是再回顾一下 MetaID的协议,明确MetaID就是user创建metanet的root节点的TX, 根据

MetaID

目标需要创建root,Info和Protocols节点

第一步我们需要准备好一个hd钱包,根据白皮书

3.1 Root节点

Root节点是MetaID的顶点,根据Metanet协议,构建Metanet交易时TxIDparent为空即为顶点。

我们的root节点使用 1PatywWnevyAfHQyH8QcEYRG2Q637qdbnh 对应的pubkey作为Pnode ,再根据协议数据

OP_0 OP_RETURN meta <P(node)> NULL MetaID Root NULL NULL NULL NULL NULL NULL

我们构建的数据如下

"parts": [
      "OP_0",
      "OP_RETURN",
      "meta",
      "02490c096854c803a2705f525c166fd6975bf572f935799cac7ffffa93a7222bed",
      "NULL",
      "metaid",
      "Root",
      "NULL",
      "NULL",
      "NULL",
      "NULL",
      "NULL"
    ]

然后广播 https://whatsonchain.com/tx/97a8a6878ee9977f78626b2c0ce9d377dca818896b54fd6867bbf20ca91c705a

这样我们的root节点就创建好了。

随后我们创建Info节点,同样我们看一下

OP_0 OP_0 OP_RETURN meta <P(node)> <Root TxID> MetaID Info NULL NULL NULL NULL NULL NULL

这边我使用的工具最后2个part 带了默认编码,null默认值也是默认编码,所以不影响,同样构建part

    "parts": [
      "OP_0",
      "OP_RETURN",
      "meta",
      "03f879e0512217d3aed8fe71de080824051f2499fa88b1c88bdd37c917923ad6d3",
      "97a8a6878ee9977f78626b2c0ce9d377dca818896b54fd6867bbf20ca91c705a",
      "metaid",
      "Info",
      "NULL",
      "0",
      "NULL",
      "text/plain",
      "UTF-8"
    ]

这边注意,需要遵循metanet的鉴权原则,需要root的address解锁授权。

构建好的交易

006a046d657461423033663837396530353132323137643361656438666537316465303830383234303531663234393966613838623163383862646433376339313739323361643664334039376138613638373865653939373766373836323662326330636539643337376463613831383839366235346664363836376262663230636139316337303561066d657461696404496e666f044e554c4c0130044e554c4c0a746578742f706c61696e055554462d38

进行广播

https://whatsonchain.com/tx/a426c2fb1d19311c32cecb9af565199f1e5474982168d4c0de9000b55edb04e2

类似的我们也构建了Protocols

https://whatsonchain.com/tx/8b7a1f4f18aead2a35a999ec38776ecaddcb00f1f6ad19d783ccfa8cb3bf1766

自此

MetaID

我们已经有了这样一个metaid tree了。

然后我们补充上Info节点下用户基本信息

node节点

Name 节点: node_name为 ”name“ 指定parts部分如下

"parts": [
      "OP_0",
      "OP_RETURN",
      "meta",
      "038bba0bae2bbe7cfae103182d0db718d764899501860632e59849ceb9cc8482ae",
      "a426c2fb1d19311c32cecb9af565199f1e5474982168d4c0de9000b55edb04e2",
      "metaid",
      "name",
      "Test",
      "0",
      "0.0.9",
      "text/plain",
      "UTF-8"
    ]

同样创建了Name节点

https://whatsonchain.com/tx/afc256f42273d943941d6c1dc9761c35ed8512ede30325e0ac0832451a9f9358

email节点

email信息是敏感信息,一般我们需要加密上链,加密的key是对应使用的节点公钥,解密使用对应的节点私钥,通过ecies (https://github.com/moneybutton/bsv/tree/bsv-legacy/lib/ecies)加解密。

我们使用公钥加密的结果为

”4249453140eb6bbb577f0574ed8e6ec2bb92a655eadc02d5ca53a566087e3808c70af86dc050326a5623938019628a900dd8022c59adb581985678ce01ca1a8d9c8ffb53“

然后根据白皮书构建交易

"parts": [
      "OP_0",
      "OP_RETURN",
      "meta",
      "02c78b4b2c67a5868481654707c3945e93c67419fa2a5d9c278581d0ab189868d8",
      "a426c2fb1d19311c32cecb9af565199f1e5474982168d4c0de9000b55edb04e2",
      "metaid",
      "email",
     "4249453140eb6bbb577f0574ed8e6ec2bb92a655eadc02d5ca53a566087e3808c70af86dc050326a5623938019628a900dd8022c59adb581985678ce01ca1a8d9c8ffb53",
      "1",
      "0.0.9",
      "text/plain",
      "UTF-8"
    ]

交易hash:https://whatsonchain.com/tx/62d8cb2f757f0f678dad0953c763ec4a4fe1aed3af06f71b386e98bc12def74b

这样在钱包等地方,用户可以通过私钥导入的方式解密email,再通过授权给第三方使用的模式来获取通过私钥解密的email。

在这里插入图片描述
我们简单添加完成name和email 的节点,其他节点添加也是类似。

下一篇我们将简单的构建Protocols下的节点,更好的感受一下用户拥有并且控制自己数据的优势。

猜你喜欢

转载自blog.csdn.net/percyWangcn/article/details/107151776