Polkadot SS58 地址转换器:公钥 ↔ 任意前缀

粘贴 Polkadot 的 1…、Kusama 的 C…–J… 或通用的 5… 地址,即可得到该账户的公钥及其在各主要 Substrate 网络上的写法。也可以粘贴 0x 公钥进行编码。

Polkadot(1…)、Kusama(C… 到 J…)、通用 Substrate(5…)及其他 SS58 前缀,或 32 字节十六进制公钥 / 账户 ID。仅限公钥;切勿在任何地方粘贴助记词。

由浏览器中的 JavaScript 检查。地址绝不会被上传或存储。

什么是 SS58 地址?

SS58 是 Polkadot、Kusama 以及所有基于 Substrate 的链所使用的地址格式:网络前缀、32 字节公钥(账户 ID)和 2 字节校验和,以 Base58 编码。该格式记录在 Polkadot wiki 中,前缀则在 SS58 注册表中分配。SS58 地址转换器会解码字符串、验证校验和、提取公钥,并按其他前缀重新编码。

SS58 编码原理

  1. 前缀字节。前缀 0–63 占一个字节。更大的前缀(最大 16383)以打包形式占两个字节:第一个字节存放前缀的第 2–7 位加上标记 0b01,第二个字节存放第 8–13 位和第 0–1 位。
  2. 校验和。对 SS58PRE + 前缀字节 + 公钥计算 BLAKE2b-512,并追加摘要的前两个字节。
  3. Base58。整个缓冲区(1 或 2 + 32 + 2 字节)用比特币字符表进行 Base58 编码。前缀 0 得到的地址总是以 1 开头,前缀 2 以大写字母 C 到 J 开头,前缀 42 以 5 开头。

示例

著名的开发账户 Alice 的公钥是 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d。使用前缀 0 编码得到 15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5(Polkadot),前缀 2 得到 HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F(Kusama),前缀 42 得到 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY(通用 Substrate)。把其中任意一个粘贴到上方,即可看到这三个以及另外十四个地址。

前缀与首字符

前缀网络地址开头前缀网络地址开头
0Polkadot136Centrifuge4
2KusamaC, D, E, F, G, H, J38KILT4
5AstarV, W, X, Y, Z, a, b42Substrate(通用)5
6Bifrostb, c, d, e, f, g, h63Hydration7
7Edgewareh, i, j, k, m, n, o73ZeitgeistdD, dE
8Karurao, p, q, r, s, t, u2032Interlaywd
10Acala2, z2092Kintsugia3
12Polymesh210041BasiliskbX
30Phala3, 4

首字符只是 Base58 和前缀值共同作用的副产物,可作为快速的视觉提示,但并非保证。请始终以工具显示的解码前缀为准。

为什么校验和很重要

Base58 本身没有错误检测,因此 SS58 增加了两字节的 BLAKE2b 校验和,能捕获任何单字符输入错误和绝大多数多字符错误。实际上不存在会接受校验和错误地址的钱包或交易所;本工具同样会拒绝它,并告诉你校验和失败,而不是去猜测。注意校验和包含前缀,这就是为什么 Kusama 地址会被判定为无效的 Polkadot 地址,即使里面的密钥相同:发送方必须重新编码,而不是重新输入。

典型用途

仅限公钥和地址:本页绝不会要求输入助记词或私钥,你粘贴的任何内容都不会离开浏览器。其他格式请参见加密货币地址验证器。

常见问题

为什么同一个账户在 Polkadot 和 Kusama 上的地址不同?

SS58 在编码前会给 32 字节公钥加上网络标识前缀:Polkadot 为 0,Kusama 为 2,通用 Substrate 为 42。密钥完全相同;地址字符串不同是因为前缀和校验和变了。每条链上的资金都按密钥记录,所以转换地址绝不会转移任何资产。

SS58 校验和是如何计算的?

校验和是对 ASCII 字符串 SS58PRE、前缀字节和公钥依次拼接后计算 BLAKE2b-512 所得摘要的前两个字节。本页用 JavaScript 实现了 BLAKE2b,并在使用前用 RFC 7693 的测试向量进行自检。

什么是 0x 公钥?

32 字节的 sr25519 或 ed25519 公钥,也叫账户 ID。Polkadot.js 把它显示为十六进制账户 ID,多签派生、代理设置和大多数 RPC 调用都需要它。它是公开信息,可以安全分享;助记词则不行。

包含哪些前缀?

Polkadot(0)、Kusama(2)、Astar(5)、Bifrost(6)、Edgeware(7)、Karura(8)、Acala(10)、Polymesh(12)、Phala(30)、Centrifuge(36)、KILT(38)、通用 Substrate(42)、Hydration(63)、Zeitgeist(73)、Interlay(2032)、Kintsugi(2092)和 Basilisk(10041),均取自 SS58 注册表。使用其他前缀的地址会被解码并以其自身前缀显示。

可以转换 Moonbeam 地址吗?

不可以。Moonbeam 和 Moonriver 使用写成 0x 地址的 20 字节以太坊式 H160 账户,而不是 32 字节密钥,因此通常意义上没有 SS58 形式。如果你粘贴这样的地址,工具会给出说明。

转换器需要我的助记词吗?

绝不需要。它基于公钥工作,而公钥已包含在每个地址中。任何网站或工具都不需要助记词来转换、验证或显示地址。