技术|形式多样的 substrate 格式
在这次抽奖活动中,有很多小伙伴不太清楚如何获取 substrate 地址。我们录制了 1 个 短视频。
简单步骤是,通过 https://polkadot.js.org/extension/ 下载插件,插件安装到浏览器后,然后点击 "+" 号,
保存好助记词, 然后输入钱包名称、密码,钱包就创建成功了。
默认得到的是 substrate 类型的地址。这是什么意思,有很多类型的地址么?确实是,有很多类型的地址。
插件钱包生成的地址,默认就是 substrate 类型的地址。这个地址就是抽奖活动中需要提供的地址。
substrate 类型地址是个通用地址,所有的链都可以使用 substrate 类型地址。
SS58 地址
SS58 是一个简单的地址格式,设计用于基于 Substrate 开发的链。使用其他地址格式也是没有问题的,但 SS58 是一个默认项。SS58 基于比特币的 Base58-check 格式,并作了一些修改。
类型前缀
SS58 格式包含一个地址类型前缀,用来标识属于特定网络(平行链)的地址。不同的类型前缀,生成的地址的开头是不一样的。
polkadot 网络上已经有了多条平行链,每条平行链会规定 1 个前缀,这样会有自己特定的格式,就会跟其他平行链的地址区分开来。
举个例子:
通用的 substrate 地址总是以数字 5 开头 polkadot 地址总是以数字 1 开头 kusama 地址总是以大写字母开头,如 C、D、F、G、H、J
以下 4 个地址看似完全不一样,如果使用 subkey inspect 工具,就会发现它们有相同的 public key,即公钥。
5CCvtLnaPwk1cBo8wuayYAuwgCumHnssrY5Nxk7S7t1ruBU2 # substrate 类型地址
19E2g3eFj1V3ioeuYdygKk6XpuQz6S1w2os836nfy3P5bYL # polkadot 类型地址
CiYYf8T2JkwMqcaicQ2S8GwpoC16Th4Juv8MQPPbgEMe6dv # kusama 类型地址
211pcbTg6dkkcJrHxsSDTLQLzgLMXvjDpSMBGsXoJWzFtbPS # acala 类型地址
有技术背景的朋友可以尝试下 subkey inspect
,这个命令还会显示地址是哪个网络(平行链)的。
subkey inspect 5CyREBErNFhogptd92dtC8ybuoUczVYh2ijvdhTpS2PJGeq7
Network ID/version: substrate
Public key (hex): 0x28340716214bbe2fc67db7eec79ae267cb664fe74395ad9831dafa4d36d21716
Account ID: 0x28340716214bbe2fc67db7eec79ae267cb664fe74395ad9831dafa4d36d21716
SS58 Address: 5CyREBErNFhogptd92dtC8ybuoUczVYh2ijvdhTpS2PJGeq7
###########
subkey inspect 1uiNWVvE2yH8Mu96fgtLHokmRUGgo6q7DUQnzTAz7QpT5c5
Network ID/version: polkadot
Public key (hex): 0x28340716214bbe2fc67db7eec79ae267cb664fe74395ad9831dafa4d36d21716
Account ID: 0x28340716214bbe2fc67db7eec79ae267cb664fe74395ad9831dafa4d36d21716
SS58 Address: 1uiNWVvE2yH8Mu96fgtLHokmRUGgo6q7DUQnzTAz7QpT5c5
那这些网络(平行链)的类型前缀是如何规定的?可以去查看 ss58-registry。小编列出一个简单的表。
前缀 | 地址类型 | 地址开头 | 地址示例 |
---|---|---|---|
0 | polkadot | 1 | 19E2g3eFj1V3ioeuYdygKk6XpuQz6S1w2os836nfy3P5bYL |
2 | kusama | C、D、F、G、H、J 等 | CiYYf8T2JkwMqcaicQ2S8GwpoC16Th4Juv8MQPPbgEMe6dv |
42 | substrate | 5 | 5CCvtLnaPwk1cBo8wuayYAuwgCumHnssrY5Nxk7S7t1ruBU2 |
10 | acala | 2 | 211pcbTg6dkkcJrHxsSDTLQLzgLMXvjDpSMBGsXoJWzFtbPS |
30 | phala | 3 | 3zm1nSHjnTFHjUwa5X2h1MiqvPCEdbKdbFRoaYPpZct1XJgD |
不同类型地址转换
有 1 个 substrate 类型的地址 5CyREBErNFhogptd92dtC8ybuoUczVYh2ijvdhTpS2PJGeq7
,如何转换成 polkadot 类型的地址呢?
我们可以使用线上工具 https://polkadot-address-convertor.netlify.app/ 得到结果 1uiNWVvE2yH8Mu96fgtLHokmRUGgo6q7DUQnzTAz7QpT5c5
。
Subkey
Subkey 是跟随 Substrate 一起开发的密钥生成程序。它的主要功能是生成密钥对(当前支持 sr25519, ed25519 和 secp256k1),对 SS58 地址进行编码以及从助记符和原始种子还原密钥。它还可以在消息(包括编码后的交易)上创建和验证签名。
生成地址与密钥
generate 命令以生成密钥与地址
subkey generate # 默认生成sr25519密钥
输出结果
Secret phrase `spend report solution aspect tilt omit market cancel what type cave author` is account:
Secret seed: 0x554b6fc625fbea8f56eb56262d92ccb083fd6eaaf5ee9a966eaab4db2062f4d0
Public key (hex): 0x143fa4ecea108937a2324d36ee4cbce3c6f3a08b0499b276cd7adb7a7631a559
Account ID: 0x143fa4ecea108937a2324d36ee4cbce3c6f3a08b0499b276cd7adb7a7631a559
SS58 Address: 5CXFinBHRrArHzmC6iYVHSSgY1wMQEdL2AiL6RmSEsFvWezd
generate 还支持以下 子命令
subkey generate -n polkadot
subkey generate --scheme ed25519 # 生成 ed25519 类型密钥
subkey generate --words 12 # (支持12、15、18、21和24)
检验地址
inspect 命令可根据给定的密钥种子重新计算密钥对的公钥和地址。
subkey inspect 5CyREBErNFhogptd92dtC8ybuoUczVYh2ijvdhTpS2PJGeq7
输出结果
Network ID/version: substrate # 地址类型
Public key (hex): 0x28340716214bbe2fc67db7eec79ae267cb664fe74395ad9831dafa4d36d21716 #公钥
Account ID: 0x28340716214bbe2fc67db7eec79ae267cb664fe74395ad9831dafa4d36d21716
SS58 Address: 5CyREBErNFhogptd92dtC8ybuoUczVYh2ijvdhTpS2PJGeq7
如果提供 1 个无效的地址,inspect 会提示地址无效
subkey inspect 5GearBErNFhogptd92dtC8ybuoUczVYh2ijvdhTpS2PJGeq7
输出结果
Invalid phrase/URI given
历史文章
Gear 首次线上 Workshop 精彩回顾 Gear 上的开发案例有哪些? 是什么让 Gear 与众不同? 在 Gear 上部署有什么好处? Gear 的技术优势 Gear 11 月更新 Gear: 易于使用的波卡平行链
关于 GearFans
Gear 是波卡生态的计算组件,GearFans 是 Gear 爱好者社区。
官网:https://gear-tech.io/ Twitter:https://twitter.com/gear_techs GitHub:https://github.com/gear-tech Discord:https://discord.com/invite/7BQznC9uD9 Telegram 中文社区群:https://t.me/Gear_CN Telegram 中文开发者群:https://t.me/gear_dev_cn
小助手微信