技术|形式多样的 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

关于 GearFans

Gear 是波卡生态的计算组件,GearFans 是 Gear 爱好者社区。

目录
相关文章
|
8月前
|
存储 缓存 NoSQL
《Redis缓存:高性能数据存储的奥秘与多元应用》
Redis是一款基于内存的高性能键值对存储系统,凭借极快的读写速度成为提升应用性能的关键技术。它通过缓存热点数据减少数据库压力,结合LRU/LFU等淘汰策略优化内存使用。在电商领域,Redis加速商品详情页加载、保障秒杀活动高并发处理;在社交媒体中,支持实时点赞、评论和在线状态更新;游戏行业利用Redis管理玩家进度与排行榜;CDN场景下,Redis缓存热门内容降低延迟;分布式系统中,Redis实现数据共享与分布式锁功能。作为高效的数据管家,Redis正为数字化世界提供强大支撑。
180 2
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
718 4
|
应用服务中间件
解决在启动tomcat出现的The CATALINA_HOME environment variable is not defined correctly问题~
解决在启动tomcat出现的The CATALINA_HOME environment variable is not defined correctly问题~
1658 0
|
消息中间件 缓存 人工智能
RocketMQ 在业务消息场景的优势详解
RocketMQ 在业务消息场景的优势详解
22088 89
|
Python
【Python基础】reduce函数详解
【Python基础】reduce函数详解
1434 1
|
小程序 JavaScript Java
基于Java微信小程序火锅店点餐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java微信小程序火锅店点餐系统设计和实现(源码+LW+调试文档+讲解等)
|
编译器 C语言
mixing declarations and code is a C99 extension
mixing declarations and code is a C99 extension
809 0
|
数据采集 人工智能 PyTorch
极智AI | 昇腾CANN ATC模型转换
大家好,我是极智视界,本文介绍一下 昇腾 CANN ATC 模型转换。
778 0
|
开发框架 .NET API
.NET 体系概览图集 - 2024 最全总结
.NET Core 是一个免费、跨平台、开源的开发平台,用于一站式构建不同类型的应用程序。 .NET Core 是以 .NET Framework 为基础,但是经过重新设计、实现的的新一代框架,实现了原 .NET Framework 中的几乎所有功能,核心特点就是开源、跨平台。
923 0
.NET 体系概览图集 - 2024 最全总结
|
算法 数据可视化 数据处理
YOLOv5实现图片内目标检测
本文介绍了如何配置yolov5的运行环境、如何进行数据标注、如何通过yolov5训练数据集实现图片的目标检测。目标检测在计算机视觉领域中具有重要意义,yolov5(You Only Look One-level)是目标检测算法中的一种代表性方法,以其高效性和准确性备受关注,并且在各种目标检测任务中都表现出卓越的性能。
1220 1
YOLOv5实现图片内目标检测