O que é um endereço SS58?
SS58 é o formato de endereço da Polkadot, da Kusama e de toda cadeia baseada em Substrate: um prefixo de rede, a chave pública de 32 bytes (ID da conta) e um checksum de 2 bytes, codificados em Base58. O formato está documentado na wiki da Polkadot e os prefixos são atribuídos no registro SS58. Um conversor de endereço SS58 decodifica a string, verifica o checksum, extrai a chave pública e a recodifica para outros prefixos.
Como funciona a codificação SS58
- Bytes de prefixo. Prefixos de 0 a 63 ocupam um byte. Prefixos maiores (até 16383) ocupam dois bytes em forma compactada: o primeiro byte guarda os bits 2–7 do prefixo mais um marcador 0b01, o segundo guarda os bits 8–13 e os bits 0–1.
- Checksum. O BLAKE2b-512 é calculado sobre
SS58PRE+ bytes de prefixo + chave pública, e os dois primeiros bytes do digest são acrescentados. - Base58. O buffer inteiro (1 ou 2 + 32 + 2 bytes) é codificado em Base58 com o alfabeto do Bitcoin. O prefixo 0 sempre gera um endereço que começa com 1, o prefixo 2 com uma letra maiúscula de C a J, o prefixo 42 com 5.
Exemplo prático
A conhecida conta de desenvolvimento Alice tem a chave pública 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d. Com o prefixo 0 ela é codificada como 15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5 (Polkadot), com o prefixo 2 como HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F (Kusama) e com o prefixo 42 como 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY (Substrate genérico). Cole qualquer um deles acima para ver os três, e mais catorze.
Prefixos e primeiros caracteres
| Prefixo | Rede | Endereço começa com | Prefixo | Rede | Endereço começa com |
|---|---|---|---|---|---|
| 0 | Polkadot | 1 | 36 | Centrifuge | 4 |
| 2 | Kusama | C, D, E, F, G, H, J | 38 | KILT | 4 |
| 5 | Astar | V, W, X, Y, Z, a, b | 42 | Substrate (genérico) | 5 |
| 6 | Bifrost | b, c, d, e, f, g, h | 63 | Hydration | 7 |
| 7 | Edgeware | h, i, j, k, m, n, o | 73 | Zeitgeist | dD, dE |
| 8 | Karura | o, p, q, r, s, t, u | 2032 | Interlay | wd |
| 10 | Acala | 2, z | 2092 | Kintsugi | a3 |
| 12 | Polymesh | 2 | 10041 | Basilisk | bX |
| 30 | Phala | 3, 4 |
Os caracteres iniciais são um efeito colateral do Base58 e do valor do prefixo; são uma dica visual rápida, não uma garantia. Confie sempre no prefixo decodificado que a ferramenta mostra.
Por que o checksum importa
O Base58 não tem detecção de erros embutida, então o SS58 adiciona um checksum BLAKE2b de dois bytes que pega qualquer caractere digitado errado e a grande maioria dos erros de vários caracteres. Na prática não existe carteira ou exchange que aceite um endereço com checksum inválido; esta ferramenta também o recusa e informa que o checksum falhou, em vez de adivinhar. Note que o checksum inclui o prefixo, e é por isso que um endereço Kusama é rejeitado como endereço Polkadot inválido mesmo que a chave dentro dele seja a mesma: quem envia precisa recodificá-lo, não redigitá-lo.
Usos típicos
- Encontrar seu endereço Kusama, Astar ou Hydration a partir de um endereço Polkadot exibido por uma carteira de hardware que só mostra uma rede.
- Obter o ID da conta em hex para chamadas da API Polkadot.js, configuração de multisig ou contas de destino XCM.
- Verificar se um endereço de depósito de exchange está realmente na cadeia pela qual você pretende enviar, lendo o prefixo decodificado.
Somente chaves públicas e endereços: esta página nunca pede uma frase de recuperação ou chave privada, e nada do que você cola sai do seu navegador. Para outros formatos, veja o validador de endereço cripto.