Polkadot SS58アドレス変換ツール:公開鍵 ↔ 任意のプレフィックス

Polkadotの1…、KusamaのC…–J…、汎用の5…アドレスを貼り付けると、そのアカウントの公開鍵と、主要なSubstrateネットワークそれぞれでの表記が得られます。0x公開鍵を貼り付けてエンコードすることもできます。

Polkadot(1…)、Kusama(C…からJ…)、汎用Substrate(5…)、その他のSS58プレフィックス、または32バイトのhex公開鍵 / アカウントID。公開鍵のみです。シードフレーズはどこにも貼り付けないでください。

ブラウザ内のJavaScriptでチェックします。アドレスがアップロードや保存されることはありません。

SS58アドレスとは

SS58はPolkadot、Kusama、およびすべてのSubstrateベースのチェーンで使われるアドレス形式で、ネットワークプレフィックス、32バイトの公開鍵(アカウントID)、2バイトのチェックサムをBase58でエンコードしたものです。形式はPolkadot wikiに記載され、プレフィックスはSS58レジストリで割り当てられています。SS58アドレス変換ツールは文字列をデコードし、チェックサムを検証し、公開鍵を取り出して他のプレフィックスで再エンコードします。

SS58エンコーディングの仕組み

  1. プレフィックスバイト。プレフィックス0–63は1バイトです。それより大きいプレフィックス(最大16383)はパック形式の2バイトになり、1バイト目にプレフィックスのビット2–7とマーカー0b01、2バイト目にビット8–13とビット0–1が入ります。
  2. チェックサム。SS58PRE + プレフィックスバイト + 公開鍵に対してBLAKE2b-512を計算し、ダイジェストの先頭2バイトを付加します。
  3. Base58。バッファ全体(1または2 + 32 + 2バイト)をBitcoinのアルファベットでBase58エンコードします。プレフィックス0のアドレスは常に1で、プレフィックス2は大文字のCからJで、プレフィックス42は5で始まります。

変換例

よく知られた開発用アカウントAliceの公開鍵は 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d です。プレフィックス0でエンコードすると 15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5(Polkadot)、プレフィックス2では HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F(Kusama)、プレフィックス42では 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY(汎用Substrate)になります。いずれかを上に貼り付けると、この3つに加えてさらに14個のアドレスが表示されます。

プレフィックスと先頭文字

プレフィックスネットワークアドレスの先頭プレフィックスネットワークアドレスの先頭
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は2バイトのBLAKE2bチェックサムを追加しており、1文字の入力ミスはすべて、複数文字の誤りも大半を検出できます。チェックサムが不正なアドレスを受け付けるウォレットや取引所は実際には存在しません。このツールも同様に拒否し、推測するのではなくチェックサムが一致しなかったことを伝えます。チェックサムにはプレフィックスが含まれるため、中の鍵が同じでもKusamaアドレスは無効なPolkadotアドレスとして拒否されます。送信者は打ち直すのではなく、再エンコードする必要があります。

典型的な用途

公開鍵とアドレスのみを扱います。このページがシードフレーズや秘密鍵を求めることはなく、貼り付けた内容がブラウザの外に出ることもありません。他の形式については暗号資産アドレス検証ツールをご覧ください。

よくある質問

同じアカウントなのにPolkadotとKusamaでアドレスが違うのはなぜ?

SS58はエンコード前に32バイトの公開鍵へネットワーク識別子のプレフィックスを付けます。Polkadotは0、Kusamaは2、汎用Substrateは42です。鍵は同一で、プレフィックスとチェックサムが変わるためアドレス文字列が異なります。各チェーンの資金は鍵で管理されるので、アドレスを変換しても何も移動しません。

SS58チェックサムはどう計算される?

チェックサムは、ASCII文字列SS58PRE、プレフィックスバイト、公開鍵を続けたものに対するBLAKE2b-512の先頭2バイトです。このページはBLAKE2bをJavaScriptで実装し、使用前にRFC 7693のテストベクタで検証しています。

0x公開鍵とは?

32バイトのsr25519またはed25519公開鍵で、アカウントIDとも呼ばれます。Polkadot.jsはこれをhexのアカウント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バイトのEthereum式H160アカウントを使い、32バイトの鍵ではないため、通常の意味でのSS58形式はありません。貼り付けるとツールがその旨を説明します。

変換ツールにシードフレーズは必要?

決して必要ありません。すべてのアドレスに埋め込まれている公開鍵から動作します。アドレスの変換、検証、表示にシードフレーズを必要とするウェブサイトやツールは存在しません。