Substrate账户生成文档咨询及导出账户文件encoded字段含义查询
导出的账户文件内容如下:
{ "address":"5CVVapxEBkvGnK2t1xMd2rbg2P1EekRnNNzPZPWFxwpzcJbv", "encoded":"0xbf3c994369b9d481cb42e25e7a4e39961ef40c0c60d1bb0d6bcf589bbff62d69961c5c9baeca0c2c884c2fff6fea48665e24652d7c8078e505338ded954e41e2453f37937d4afbf84573178f511ae5b84e903ff989f852b70c967ddddbd223a7fd1985a25690cdd632521e45049ec882ca4ca01caf5691d4fd0fdc6375e1b3d74146e5ed9d40de4b32f35757d8685642ed6db0cabfd49b1bc09b369624", "encoding":{ "content":["pkcs8","ed25519"], "type":"xsalsa20-poly1305", "version":"2" }, "meta":{ "name":"aravind", "tags":["a"], "whenCreated":1637583415090 } }
问题解答
1. encoded键值的含义
encoded字段存储的是加密后的账户私钥载荷,不会明文存储私钥,完全依赖创建账户时设置的密码解密,具体含义结合同文件下的encoding字段参数可以拆解:
- 加密前的原始内容:是符合PKCS8标准序列化的ed25519类型私钥,对应
encoding.content的参数值 - 加密算法:使用
xsalsa20-poly1305对称加密算法对私钥明文加密,对应encoding.type的参数值。该算法除了加密之外还会生成校验标签,防止密文被篡改,解密时会先校验标签合法性,校验通过才会执行解密逻辑 - 格式说明:开头的
0x是十六进制标识,后面的完整字符串是加密密文+校验标签的组合编码结果
2. Substrate账户创建逻辑说明
Substrate账户的完整创建流程可以梳理为4个核心步骤:
- 第一步:生成加密算法对应的明文公私钥对,常见的算法包括ed25519、sr25519两种,私钥是账户控制权的唯一凭证
- 第二步:对公钥执行SS58编码,得到用户日常使用的5开头的链上地址,也就是文件中
address字段的内容。SS58编码会加入对应Substrate链的专属前缀,不同链的前缀不同,生成的地址格式也会有差异 - 第三步:用户设置钱包密码后,系统会用密码通过密钥派生函数生成加密密钥,对序列化后的明文私钥执行对称加密,加密后的结果就是
encoded字段的内容 - 第四步:将链上地址、加密后的私钥载荷、加密参数、用户自定义的元信息(账户名、创建时间、标签等)打包,就得到了完整的可导出账户文件
内容的提问来源于stack exchange,提问作者Makam Aravind
相关产品推荐
相关产品推荐

