Conversor de Endereço Cosmos: Trocador de Prefixo Bech32

Cole qualquer endereço do ecossistema Cosmos e veja a mesma conta recodificada para vinte cadeias comuns, além do hex bruto de 20 bytes. Também codifica uma conta 0x em bech32 para Injective, Evmos e similares.

Qualquer endereço bech32 (cosmos, osmo, juno, celestia, dydx, inj, sei, kava, akash, stars, axelar, noble, neutron, stride e outros), um endereço valoper / valcons, ou uma conta hex 0x de 20 ou 32 bytes.

Verificado no seu navegador com JavaScript. Os endereços nunca são enviados nem armazenados.

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

  1. 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).
  2. Converter os grupos de dados de 5 bits de volta para bytes sem permitir preenchimento, exigindo 20 ou 32 bytes.
  3. 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

PrefixoCadeiaDerivação de chavePrefixoCadeiaDerivação de chave
cosmosCosmos Hubsecp256k1celestiaCelestiasecp256k1
osmoOsmosissecp256k1dydxdYdX Chainsecp256k1
junoJunosecp256k1nobleNoblesecp256k1
starsStargazesecp256k1neutronNeutronsecp256k1
akashAkashsecp256k1strideStridesecp256k1
kavaKavasecp256k1evmosEvmosethsecp256k1
secretSecret Networksecp256k1creCrescentsecp256k1
axelarAxelarsecp256k1regenRegensecp256k1
injInjectiveethsecp256k1terraTerrasecp256k1
seiSeisecp256k1 (endereço EVM vinculado on-chain)kujiraKujirasecp256k1

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

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.

Perguntas frequentes

Endereços cosmos1… e osmo1… são a mesma conta?

Eles contêm os mesmos 20 bytes e, nas cadeias que usam a derivação secp256k1 padrão, a mesma frase de recuperação produz os dois. Mas cada cadeia é um livro-razão separado: tokens na Osmosis ficam sob o endereço osmo1, tokens no Cosmos Hub sob o cosmos1. Recodificar não move nada; só mostra como seu endereço fica em outra cadeia.

Por que meu endereço Injective ou Evmos não bate com a linha convertida?

Injective, Evmos e outras cadeias ethsecp256k1 derivam os bytes da conta como o Ethereum (keccak-256 da chave pública não comprimida), enquanto a maioria das cadeias Cosmos usa sha256 e depois ripemd160 da chave comprimida. A mesma frase de recuperação, portanto, gera bytes diferentes nas duas famílias. O conversor recodifica os bytes que você colar, então um endereço inj1 convertido para cosmos1 é uma string válida, mas não é o endereço que sua carteira mostra para o Cosmos Hub.

Para que serve a forma 0x?

Na Injective e na Evmos, a forma 0x é o endereço Ethereum da conta, usado pela MetaMask e pelas ferramentas EVM. Em outras cadeias são apenas os bytes brutos, úteis para depuração e para consultar contas de módulo. A ferramenta a mostra com checksum EIP-55.

O que são endereços valoper e valcons?

cosmosvaloper1… é o endereço de operador de um validador, os mesmos 20 bytes da carteira do operador sob outro prefixo; cosmosvalcons1… é o hash da chave de consenso do validador. Nenhum dos dois pode receber tokens. O conversor reconhece ambos e, para valoper, mostra o endereço de conta correspondente.

Por que meu endereço tem 59 caracteres?

É um endereço de 32 bytes: contas de módulo, contas interchain e endereços de contratos CosmWasm são derivados por sha256 e mais longos que endereços de carteira. A ferramenta os decodifica e recodifica sob outros prefixos, mas uma conta assim só existe na cadeia que a criou.

A ferramenta verifica o checksum bech32?

Sim. Endereços Cosmos usam o checksum bech32 original do BIP-173 (não bech32m), e a ferramenta o verifica antes de converter. Um checksum com falha significa erro de digitação; um checksum bech32m significa que a string é um endereço Taproot ou similar, não um endereço Cosmos.