【Substrate开发教程】06 - Subkey功能详解

 戴诗东   2020-10-15  来源:互联网  0 条评论
优质活动 币圈快讯 平台公告 行情分析
最新羊毛 最新空投 链圈挖矿 活动线报
新币上市 币圈空投 国外项目 币链屋
提醒:本站内容均转自网络,仅用于开发者下载测试,请明辨风险,若涉资金安全及隐私,请谨慎!谨慎!再谨慎!一切风险自担,涉及资金交易及个人隐私务必小心并远离,切记千万别投资,勿上当受骗。《本站免责申明》


Subkey是Substrate包含的命令行工具,主要用于生成和恢复Substrate密钥对,上一篇文章介绍了Subkey的安装和使用Subkey生成SS58地址的命令,这篇文章详细介绍Subkey的功能。

在终端输入subkey即可查看subkey的使用说明:


subkey v2.0.0版本所有子命令的用法如下图所示:


subkey各子命令有一些通用的标识(FLAGS)和选项(OPTIONS)。

通用标识(FLAGS)

  • --password-interactive:使用交互式的shell输入keystore使用的密码;

通用选项(OPTIONS)

  • --network <NETWORK>:指定Substrate网络类型,可选值有很多,下面详细介绍;
  • --output-type <FORMAT>:设置输出格式,默认值text,可选值:json、text;
  • --scheme <SCHEME>:设置椭圆曲线加密算法方案,默认值sr25519,可选值:ed25519、sr25519、ecdsa;
  • --keystore-path <PATH>:指定keystore文件路径;
  • --password <password>:指定keystore使用的密码;
  • --password-filename <PATH>:指定保存keystore使用的密码的文件;

subkey generate

subkey generate用于生成一个随机密钥对,默认生成Substrate通用SS58地址(以数字5开头)。

用法

subkey generate [FLAGS] [OPTIONS]

选项(OPTIONS)

  • --words <WORDS>:设置生成的密钥对助记词的单词数量,默认12个,可选值:12、15、18、21、24;

使用命令

subkey generate --output-type json

生成数据如下

{ "accountId": "0xa2f449b01b077aea2fd7932a542706798f3a6bd69cd30d4e2eb718cba294713a", "publicKey": "0xa2f449b01b077aea2fd7932a542706798f3a6bd69cd30d4e2eb718cba294713a", "secretPhrase": "steak artefact bottom chapter dolphin exhaust language atom amateur cross ozone siren", "secretSeed": "0x2e5b47a8dd06957262865c387a3d071cfa0c5cdd65d8eee8d3cc5067a6c7cbc6", "ss58Address": "5FkNBaJWsS6poi3GCzpEdsMJaKDVyFVXiXKbvRF26AxbFTP9" }

包含私钥(secretSeed)、公钥(publicKey/accountId)、助记词(secretPhrase)、SS58地址(ss58Address)。

通过配置--network选项,可以生成指定Substrate网络的密钥对,ss58-registry.json可以查看目前支持的Substrate网络,列表如下:

地址前缀网络名网络全称代币官网
0polkadotPolkadot Relay ChainDOThttps://polkadot.network
1reserved1保留
2kusamaKusama Relay ChainKSMhttps://kusama.network
3reserved3保留
4katalchainKatal Chainhttps://katalchain.com
5plasmPlasm NetworkPLMhttps://www.plasmnet.io
6bifrostBifrostBNChttps://bifrost.finance
7edgewareEdgewareEDGhttps://edgewa.re
8karuraAcala Karura CanaryKARhttps://acala.network
9reynoldsLaminar Reynolds CanaryREYhttp://laminar.network
10acalaAcalaACAhttps://acala.network
11laminarLaminarLAMIhttp://laminar.network
12polymathPolymathPOLYhttps://www.polymath.network
13substrateeSubstraTEEhttps://www.substratee.com
16kulupuKulupuKLPhttps://kulupu.network
17darkDark Mainnet
18darwiniaDarwinia NetworkRING、KTONhttps://darwinia.network
19geekGeekCashGEEKhttps://geekcash.org
20stafiStafiFIShttps://stafi.io
21dock-testnetDock TestnetDCKhttps://dock.io
22dock-mainnetDock MainnetDCKhttps://dock.io
23shiftShiftNrgSHIFThttps://shiftnrg.org
28subsocialSubsocialSMNhttps://subsocial.network
30phalaPhala NetworkPHAhttps://phala.network
32robonomicsRobonomics NetworkXRThttps://robonomics.network
33datahighwayDataHighwayDHXhttps://www.datahighway.com
36centrifugeCentrifuge ChainRADhttps://centrifuge.io
37nodleNodle ChainNODLhttps://nodle.io
42substrateSubstratehttps://substrate.dev
43reserved43保留
44chainxChainXPCXhttps://chainx.org
46reserved46保留
47reserved47保留

subkey inspect

subkey inspect用于检查密钥,可以检查给定的URI(助记词、私钥、公钥、地址)并恢复公钥和地址。

用法

subkey inspect [FLAGS] [OPTIONS] [uri]

参数(ARGS)

  • uri:密钥的URI,可以是私钥(secret seed)、加密URI(带路径和密码)、公钥、SS58地址。

使用助记词恢复密钥对的命令如下

subkey inspect 'trouble sunset debate school seminar alter pulse moon saddle impact okay spare'

恢复结果如下

Secret phrase `trouble sunset debate school seminar alter pulse moon saddle impact okay spare` is account: Secret seed: 0x582a3bef6a394c7a2a7858f2fc7ab088a5778a043d461e223414d9222c489013 Public key (hex): 0xeccac159b58d6147dc508688608424c720f8d82972d8a86c80b21b054bd93c68 Account ID: 0xeccac159b58d6147dc508688608424c720f8d82972d8a86c80b21b054bd93c68 SS58 Address: 5HRBPWLcswbH89eaFE4AToSS5ogCyHi5b6uPJMvPf7hxAsQJ


subkey generate-node-key

subkey generate-node-key用于生成一个随机libp2p节点的peer ID和密钥。

用法

subkey generate-node-key [OPTIONS]

选项(OPTIONS)

  • --file <file>:指定保存密钥的文件。

运行命令

subkey generate-node-key

输出

12D3KooWGBbnegnFKdWUaqyQEubSqmSpH2GBGGPUtEwZo662eaX2 269d18eb6e4f8e2248694d920a2472eef9e997585a3d6d09771265fdd6bad03e

需要保存密钥到文件时运行

subkey generate-node-key --file /home/songguo/key

输出

12D3KooWGvTG95oPodqn2Rt39Eksp9Ru134MkLsFva426YFPG2Ze

并创建/home/songguo/key文件用于保存密钥39d8cebab4262767cc4a5837b1810fa209d31a360c669f5c5e9a24257fe5c6b3。

subkey inspect-node-key

subkey inspect-node-key用于从节点密钥恢复peer ID,只能通过文件恢复。

用法

subkey inspect-node-key [OPTIONS] --file <file>

运行命令

subkey inspect-node-key --file /home/songguo/key

输出

12D3KooWGvTG95oPodqn2Rt39Eksp9Ru134MkLsFva426YFPG2Ze


subkey sign

subkey sign使用私钥或助记词给消息签名。

用法

subkey sign [FLAGS] [OPTIONS]

标识(FLAGS)

  • --hex:输入数据是十六进制编码的数据;

选项(OPTIONS)

  • --message <message>:需要签名的消息数据,如果没有通过选项设置,则会在控制台中输入; --suri <suri>:私钥或助记词,如果传入的是文件会读取文件的文本内容;

先通过工具把一句字符串转换成十六进制数据


然后运行命令

subkey sign --message 2268656c6c6f7375627374726174652122 --suri 'trouble sunset debate school seminar alter pulse moon saddle impact okay spare'

输出签名

4c2b17bad81916fd26bcca680ce8daea02657b6e4cf73b5c694e36a54fa390371354395a6c51151683bf6bdbcf02ee8995a3df83cbdd335b39e6e122fe1c1783


subkey verify

subkey verify使用公钥验证消息的签名。

用法

subkey verify [FLAGS] [OPTIONS] <sig> [uri]

选项(OPTIONS)

  • --message <message>:需要验证签名的消息数据;

参数(ARGS)

  • sig:十六进制编码后的签名;
  • uri:公钥,如果传入的是文件会读取文件的文本内容,如果没有配置该选项,控制台会提示输入;

运行命令

subkey verify --message 2268656c6c6f7375627374726174652122 e4c6a2af6f58db4cfd8138593f56005297d229167debd4071eb02b81e077f941acf79ad97dd82184ed30a3d3b1e45ccd7e27e5b08a21cd0c298e1cd2e32f2180 0xeccac159b58d6147dc508688608424c720f8d82972d8a86c80b21b054bd93c68

输出

Signature verifies correctly

如果公钥不匹配,会输出

Error: Other("Signature invalid.")


subkey vanity

subkey vanity是一个装饰器,可以生成指定模式的SS58地址。

用法

subkey vanity [OPTIONS] --pattern <pattern> 

OPTION(选项)

  • --pattern <pattern>:要匹配的模式;

运行命令,生成包含"666"的SS58地址

subkey vanity --pattern 666

结果如下

Generating key containing pattern '666' 100000 keys searched; best is 188/189 complete best: 189 == top: 189 Secret Key URI `0x0d692b67e4e58ed53302140f3d6fd6f526a9044b234a70cc0485d74f77a4ca9b` is account: Secret seed: 0x0d692b67e4e58ed53302140f3d6fd6f526a9044b234a70cc0485d74f77a4ca9b Public key (hex): 0xde3b44145df9dd05de37ca6341a4b9187887333b8384325b546199216d45ec1d Account ID: 0xde3b44145df9dd05de37ca6341a4b9187887333b8384325b546199216d45ec1d SS58 Address: 5H666Ms1Ck9PWDWzzX8oEgZevKa9EWGbBs4UfbrLbwzZTpmR


subkey module-id

subkey module-id用于检查模块ID的地址。

用法

subkey module-id [FLAGS] [OPTIONS] <id>

运行命令,检查py/trsry模块ID的地址

subkey module-id "py/trsry"

结果如下

Public Key URI `5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z` is account: Network ID/version: substrate Public key (hex): 0x6d6f646c70792f74727372790000000000000000000000000000000000000000 Account ID: 0x6d6f646c70792f74727372790000000000000000000000000000000000000000 SS58 Address: 5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z


subkey insert

subkey insert用于插入密钥到节点的密钥库。

用法

subkey insert [FLAGS] [OPTIONS] --key-type <key-type>

标识(FLAGS)

  • --dev:指定为开发模式区块链;

选项(OPTIONS)

  • --base-path <PATH>:指定节点默认路径;
  • --chain <CHAIN_SPEC>:指定链规范,可选值:dev、local、staging;
  • --key-type <key-type>:密钥类型,如:gran、imon、aura;
  • --log <LOG_PATTERN>...:设置自定义日志过滤器,语法是<target>=<level>,如-lsync=debug;
  • --suri <suri>:私钥或助记词,如果传入的是文件会读取文件的文本内容;

示例

subkey insert --suri 0x554b6fc625fbea8f56eb56262d92ccb083fd6eaaf5ee9a966eaab4db2062f4d0 --base-path /tmp/node01 --key-type aura

本文地址:http://bilianwu.com/81520.html
版权声明:项目均采集于互联网, 戴诗东 无法审核全面,且希望大家能赚钱,请谨慎切勿上当受骗!
温馨提示:★★★天上真会掉馅饼!天道酬勤,都是机会!不错过每个空投糖果!真假难以辨认,尽量0撸!
重要提醒:本站内容均转自互联网,请明辨各个项目风险,不构成投资建议,如涉及资金交易,请谨慎操作与自担风险!
《新人必看》 《本站免责申明》

评论已关闭!