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 愛好者社區。
- 官網: https://gear-tech.io/
- Twitter: https://twitter.com/gear_techs
- GitHub: https://github.com/gear-tech
- Discord: https://discord.com/invite/7BQznC9uD9
- Medium: https://medium.com/@gear_techs
- Telegram 群: https://t.me/gear_tech
- Telegram 中文群: https://t.me/Gear_CN
- Telegram 中文開發群: https://t.me/gear_dev_cn