在了解了什么是MetaID之后,今天分享一下如何简单快速的创建属于自己的MetaID。
首先还是再回顾一下 MetaID的协议,明确MetaID就是user创建metanet的root节点的TX, 根据
目标需要创建root,Info和Protocols节点
第一步我们需要准备好一个hd钱包,根据白皮书
3.1 Root节点
Root节点是MetaID的顶点,根据Metanet协议,构建Metanet交易时TxIDparent为空即为顶点。
我们的root节点使用 1PatywWnevyAfHQyH8QcEYRG2Q637qdbnh 对应的pubkey作为Pnode ,再根据协议数据
OP_0 OP_RETURN meta
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
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 tree了。
然后我们补充上Info节点下用户基本信息
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信息是敏感信息,一般我们需要加密上链,加密的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下的节点,更好的感受一下用户拥有并且控制自己数据的优势。