Конвертер Polkadot SS58-адресов: публичный ключ ↔ любой префикс

Вставьте адрес Polkadot 1…, Kusama C…–J… или универсальный 5… и получите публичный ключ аккаунта плюс его написание в каждой крупной сети Substrate. Или вставьте публичный ключ 0x, чтобы закодировать его.

Polkadot (1…), Kusama (C… – J…), универсальный Substrate (5…) и другие SS58-префиксы либо 32-байтовый публичный ключ / account ID в hex. Только публичные ключи; никогда и нигде не вставляйте сид-фразу.

Проверка выполняется в вашем браузере на JavaScript. Адреса никогда не загружаются и не хранятся.

Что такое SS58-адрес?

SS58 — формат адресов Polkadot, Kusama и всех сетей на базе Substrate: сетевой префикс, 32-байтовый публичный ключ (account ID) и 2-байтовая контрольная сумма в кодировке Base58. Формат описан в вики Polkadot, а префиксы назначаются в реестре SS58. Конвертер SS58-адресов декодирует строку, проверяет контрольную сумму, извлекает публичный ключ и перекодирует его для других префиксов.

Как работает кодирование SS58

  1. Байты префикса. Префиксы 0–63 занимают один байт. Более крупные префиксы (до 16383) занимают два байта в упакованном виде: первый байт содержит биты 2–7 префикса плюс маркер 0b01, второй — биты 8–13 и биты 0–1.
  2. Контрольная сумма. BLAKE2b-512 вычисляется над SS58PRE + байты префикса + публичный ключ, и первые два байта дайджеста добавляются в конец.
  3. Base58. Весь буфер (1 или 2 + 32 + 2 байта) кодируется в Base58 с алфавитом Bitcoin. Префикс 0 всегда даёт адрес, начинающийся с 1, префикс 2 — с заглавной буквы от C до J, префикс 42 — с 5.

Пример

У известного dev-аккаунта 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-байтовому публичному ключу сетевой идентификатор перед кодированием: 0 для Polkadot, 2 для Kusama, 42 для универсального Substrate. Ключ одинаков; строка адреса отличается, потому что меняются префикс и контрольная сумма. Средства в каждой сети учитываются по ключу, поэтому преобразование адреса ничего не перемещает.

Как вычисляется контрольная сумма SS58?

Контрольная сумма — это первые два байта BLAKE2b-512 над ASCII-строкой SS58PRE, за которой следуют байт(ы) префикса и публичный ключ. Эта страница реализует BLAKE2b на JavaScript и перед использованием сверяет его с тестовым вектором из RFC 7693.

Что такое публичный ключ 0x?

32-байтовый публичный ключ sr25519 или ed25519, также называемый account ID. Polkadot.js показывает его как hex account 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 используют 20-байтовые аккаунты H160 в стиле Ethereum, записываемые как 0x-адреса, а не 32-байтовые ключи, поэтому в обычном смысле у них нет SS58-формы. Инструмент объяснит это, если вы вставите такой адрес.

Нужна ли конвертеру моя сид-фраза?

Никогда. Он работает с публичным ключом, который содержится в каждом адресе. Ни одному сайту или инструменту не нужна сид-фраза, чтобы преобразовать, проверить или отобразить адрес.