O que é um conversor de endereço Cosmos?
Um conversor de endereço Cosmos decodifica um endereço bech32 de qualquer cadeia do Cosmos SDK para seus bytes de conta brutos (20 bytes para carteiras, 32 para contas de módulo e de contrato) e recodifica esses bytes com um prefixo legível diferente. Todas as cadeias do Cosmos SDK usam a mesma codificação, descrita na documentação de contas do Cosmos SDK: prefixo, o separador 1, os dados no alfabeto de 32 caracteres do bech32 e um checksum de seis caracteres. Só o prefixo muda entre cadeias, então endereços cosmos1…, osmo1… e juno1… com os mesmos bytes pertencem à mesma chave.
Como a conversão funciona
- Verificar o checksum bech32 sobre a string inteira, incluindo o prefixo. A ferramenta usa o mesmo polymod dos endereços SegWit, com a constante bech32 1 (o Cosmos não usa bech32m).
- Converter os grupos de dados de 5 bits de volta para bytes sem permitir preenchimento, exigindo 20 ou 32 bytes.
- Para cada prefixo da tabela, reagrupar os bytes em valores de 5 bits e calcular um novo checksum com aquele prefixo.
Exemplo prático
O endereço cosmos15c20sqakl4uqnp4y93uwe8rlwlnda5futtjxsl decodifica para os 20 bytes 0xa614f803b6fd780986a42c78ec9c7f77e6ded13c. Recodificar esses bytes com o prefixo da Osmosis produz um endereço osmo1… com os mesmos 32 caracteres de dados e um checksum de seis caracteres diferente, porque o prefixo faz parte da entrada do checksum. A forma 0x, com checksum EIP-55, é o que uma cadeia compatível com EVM exibiria para os mesmos bytes.
Prefixos da tabela
| Prefixo | Cadeia | Derivação de chave | Prefixo | Cadeia | Derivação de chave |
|---|---|---|---|---|---|
| cosmos | Cosmos Hub | secp256k1 | celestia | Celestia | secp256k1 |
| osmo | Osmosis | secp256k1 | dydx | dYdX Chain | secp256k1 |
| juno | Juno | secp256k1 | noble | Noble | secp256k1 |
| stars | Stargaze | secp256k1 | neutron | Neutron | secp256k1 |
| akash | Akash | secp256k1 | stride | Stride | secp256k1 |
| kava | Kava | secp256k1 | evmos | Evmos | ethsecp256k1 |
| secret | Secret Network | secp256k1 | cre | Crescent | secp256k1 |
| axelar | Axelar | secp256k1 | regen | Regen | secp256k1 |
| inj | Injective | ethsecp256k1 | terra | Terra | secp256k1 |
| sei | Sei | secp256k1 (endereço EVM vinculado on-chain) | kujira | Kujira | secp256k1 |
Um endereço com prefixo fora desta lista também é decodificado e mostrado no topo da tabela sob o seu próprio prefixo.
Quando o endereço convertido é seu, e quando não é
Carteiras como Keplr e Leap derivam uma chave por cadeia a partir da sua frase de recuperação. Nas cadeias que compartilham o coin type padrão 118 e a derivação secp256k1, o endereço derivado em cada cadeia é exatamente o recodificado, e é por isso que transferências IBC para "seu próprio endereço na outra cadeia" funcionam. Cadeias com coin type 60 e chaves no estilo Ethereum (Injective, Evmos) derivam bytes diferentes, e a Sei vincula um endereço EVM separado à conta sei1 por meio de uma associação on-chain, em vez de compartilhar bytes. Antes de enviar para um endereço convertido, confirme-o na carteira daquela cadeia.
Usos típicos
- Encontrar seu endereço de depósito na Osmosis ou na Celestia a partir de um endereço do Cosmos Hub quando a carteira só mostra uma cadeia.
- Transformar um endereço 0x da MetaMask na forma
inj1…ouevmos1…que o formulário de saque de uma exchange espera. - Verificar se um endereço
valopernão foi colado onde deveria estar um endereço de conta.
Para strings bech32 brutas com prefixos arbitrários, use o codificador / decodificador bech32; para verificar uma forma EIP-55, use o conversor de checksum Ethereum.