http://www.7klian.com

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

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.network1reserved1保留2kusamaKusama Relay ChainKSMhttps://kusama.network3reserved3保留4katalchainKatal Chainhttps://katalchain.com5plasmPlasm NetworkPLMhttps://www.plasmnet.io6bifrostBifrostBNChttps://bifrost.finance7edgewareEdgewareEDGhttps://edgewa.re8karuraAcala Karura CanaryKARhttps://acala.network9reynoldsLaminar Reynolds CanaryREYhttp://laminar.network10acalaAcalaACAhttps://acala.network11laminarLaminarLAMIhttp://laminar.network12polymathPolymathPOLYhttps://www.polymath.network13substrateeSubstraTEEhttps://www.substratee.com16kulupuKulupuKLPhttps://kulupu.network17darkDark Mainnet18darwiniaDarwinia NetworkRING、KTONhttps://darwinia.network19geekGeekCashGEEKhttps://geekcash.org20stafiStafiFIShttps://stafi.io21dock-testnetDock TestnetDCKhttps://dock.io22dock-mainnetDock MainnetDCKhttps://dock.io23shiftShiftNrgSHIFThttps://shiftnrg.org28subsocialSubsocialSMNhttps://subsocial.network30phalaPhala NetworkPHAhttps://phala.network32robonomicsRobonomics NetworkXRThttps://robonomics.network33datahighwayDataHighwayDHXhttps://www.datahighway.com36centrifugeCentrifuge ChainRADhttps://centrifuge.io37nodleNodle ChainNODLhttps://nodle.io42substrateSubstratehttps://substrate.dev43reserved43保留44chainxChainXPCXhttps://chainx.org46reserved46保留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

输出

12D3KooWGBbnegnFKdWUaqyQEubSqmSpH2GBGGPUtEwZo662eaX2269d18eb6e4f8e2248694d920a2472eef9e997585a3d6d09771265fdd6bad03e

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

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 completebest: 189 == top: 189Secret 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

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读