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 愛好者社區。