Um projeto muda para um novo contrato, publica uma razão e abre uma janela de troca. Sua carteira continua mostrando o saldo antigo, e o número que você vai acabar tendo não está escrito em lugar nenhum. Transformar uma razão anunciada em saldo creditado exige três verificações separadas, e a que dá errado raramente é a multiplicação que você esperava.
O que uma razão de conversão realmente estabelece
Uma razão de conversão é uma taxa de câmbio fixa entre dois registros: quantas unidades do token novo cada unidade do token antigo compra. O projeto a define, o contrato de troca a impõe e ela não se move com o mercado. Seja qual for o preço pelo qual os dois tokens mudem de mãos no dia da sua troca, a razão que você recebe é a que foi escrita.
A primeira coisa a resolver é a direção, porque uma razão anunciada como um para quatro se lê de duas maneiras. Pode significar uma unidade nova para cada quatro antigas, ou quatro unidades novas para cada uma antiga, e essas duas leituras diferem por um fator de dezesseis. Ancore a leitura em algo que você possa conferir por conta própria: compare a oferta total nova com a antiga. Se a oferta nova for a menor das duas, cada unidade antiga tem de virar menos de uma unidade nova, e qualquer leitura que diga o contrário está invertida.
A segunda coisa a resolver é a qual saldo a razão se aplica. Uma migração define um conjunto elegível: saldos mantidos no momento de um snapshot, saldos que ainda estão no contrato antigo, ou saldos apresentados ao contrato de troca antes de ele parar de pagar. A razão é idêntica para todos dentro desse conjunto, então tudo o que vem a seguir pressupõe que o seu saldo está nele. Se a janela de troca ainda está aberta é uma pergunta distinta da de quanto a razão pagaria se estivesse.
De onde vem esse número
A razão é uma decisão, e a decisão tem um esqueleto aritmético. Um projeto fixa primeiro o tamanho do registro novo e depois o divide pelas unidades antigas que a migração precisa absorver. O quociente é a razão, e é por isso que a razão e os dois números de oferta fecham: multiplique a oferta antiga elegível pela razão e você recupera a oferta nova reservada para a troca.
Tome um projeto que fixa uma oferta nova de 400.000.000 unidades e tem 1.000.000.000 unidades antigas elegíveis para migrar. A razão é o primeiro número dividido pelo segundo, então cada unidade antiga vira 40% de uma unidade nova. Lido ao contrário, são necessárias cinco unidades antigas para produzir duas novas.
Essa derivação lhe dá uma verificação que serve para qualquer anúncio. Se um projeto publica os dois números de oferta e uma razão, os três têm de concordar. Quando não concordam, ou um dos três está errado ou o conjunto elegível é mais estreito do que você supôs, e descobrir qual dos dois importa mais do que recalcular o seu próprio saldo a partir de um número que não fecha.
Como calcular o que cabe a você
Resolvidas a direção e a razão, o seu número é uma única multiplicação: saldo antigo vezes a razão. Um saldo de 12.500 unidades antigas a uma razão de 40% vira 5.000 unidades novas. Nada nesse passo depende do preço, e nada nele depende do momento da janela em que você troca.
Faça essa multiplicação nas unidades que a sua carteira mostra, porque essa é a forma que você consegue comparar com o anúncio. O contrato faz a mesma multiplicação em outro sistema de unidades, e as duas só coincidem quando as casas decimais se alinham. Essa é a verificação seguinte, e é a que produz respostas erradas por potências inteiras de dez.
| O que você precisa | Onde ler | O que dá errado sem isso |
|---|---|---|
| A razão e em que direção ela corre | O anúncio, conferido contra os dois números de oferta | O resultado sai invertido |
| As casas decimais dos dois tokens | A função decimals em cada contrato de token | O resultado erra por uma potência de dez |
| A regra de arredondamento | A aritmética inteira dentro da função de troca | Sobra um resto no contrato antigo |
| Qual saldo é elegível | O anúncio, e o que o contrato aceita | Você conta unidades que a troca não vai levar |
As casas decimais são uma segunda conversão, e são as fáceis de pular
Contratos de token não guardam valores fracionários. Guardam inteiros, e um valor separado registra onde fica a vírgula. No padrão ERC-20, a função opcional decimals devolve o número de casas decimais que o token usa; a especificação ilustra isso com um token cujo valor oito significa que o montante armazenado é dividido por cem milhões para chegar à representação vista pelo usuário.
Justamente porque essa função é opcional, o padrão diz que interfaces e outros contratos não devem esperar que o valor esteja presente. Quando ele falta, o número de casas decimais é uma convenção que você precisa estabelecer por outra via, e preencher essa lacuna com um padrão que você supõe é como um saldo passa a ser lido com ordens de grandeza de erro.
Uma migração entre dois tokens com casas decimais diferentes coloca esse escalonamento por cima da razão. Se o token antigo usa dezoito casas e o novo seis, a mesma quantidade exibida é armazenada como inteiros que diferem por um fator de 1.000.000.000.000. O contrato de troca carrega esse escalonamento internamente, então uma carteira que tem os dois valores de decimals mostra o número certo. Inteiros crus copiados de um explorador de blocos são outra coisa: um valor lido direto de uma chamada ao contrato está em unidades base, e colocar um número em unidades base de um token ao lado de um número em unidades base do outro compara duas escalas diferentes.
Leia a razão no contrato em vez do anúncio
Um anúncio é prosa, e quem paga é o contrato de troca. Abra o código-fonte verificado dele e encontre as duas constantes pelas quais a função de troca multiplica e divide. Essas constantes são a razão na forma em que ela é imposta. Se elas divergem do anúncio, são elas que o seu saldo vai atravessar.
Leia de passagem o valor de decimals nos dois contratos de token. Duas constantes e dois valores de decimals são a conta inteira, e as quatro são leituras públicas que não custam nada.
Depois confirme o resultado antes de comprometer o saldo. Um contrato de troca precisa de uma aprovação de token para conseguir mover os seus tokens antigos, e uma aprovação pode ser concedida por um valor pequeno em vez do saldo inteiro. Trocar um valor pequeno, conferir o que chega contra a sua própria aritmética e só então aprovar o resto transforma a conta em algo que você observou e não em algo que você deduziu.
O arredondamento e as unidades que ficam para trás
O contrato trabalha com inteiros, e a divisão inteira trunca. Quando o seu montante antigo não é múltiplo exato do denominador da razão, a divisão descarta o resto em vez de arredondá-lo para cima. Com dezoito casas decimais, o pedaço descartado é uma fração pequena demais para ter representação na tela, e ainda assim é real.
O resto fica visível quando o pagamento é quantizado de forma mais grossa. Um saldo de 12.502 unidades antigas à mesma razão de 40% dá 5.000 unidades novas e uma fração; um contrato que credita unidades inteiras credita 5.000 e a fração fica onde estava. Resolva de antemão se o que sobra é um resto de arredondamento que você pode ignorar ou um saldo antigo que você ainda vai ter depois que a janela fechar.
O que a razão não diz sobre valor
Uma razão de conversão fixa quantidades e não afirma nada sobre valor. O número de unidades que você tem muda, e isso é tudo o que a razão garante. Ler uma razão abaixo de um como perda, ou uma razão acima de um como ganho, é tratar uma conversão aritmética como um movimento de preço.
O que uma migração muda é qual registro o mercado precifica. Assim que os dois tokens existem, eles são negociados separadamente, e os preços deles vêm da demanda que encontram, não da razão que liga as suas ofertas. O token ERC-20 que você recebe é um contrato novo com mercado próprio, e a razão é a única coisa fixa que atravessa.
| O que a razão fixa | O que ela deixa para o mercado |
|---|---|
| Em quantas unidades novas o seu saldo se converte | Quanto vale uma unidade nova |
| A relação entre os dois números de oferta | Se o token novo é negociado acima ou abaixo do antigo |
| A aritmética que o contrato de troca executa | O valor da sua posição depois da troca |
Em resumo
Uma razão de conversão é uma multiplicação embrulhada em três verificações. Resolva em que direção a razão corre conferindo-a contra os dois números de oferta, leia as casas decimais dos dois tokens para que o escalonamento não desloque a sua resposta por uma potência de dez, e ache a regra de arredondamento para saber o que fica para trás.
Depois verifique em vez de confiar: as constantes dentro do contrato de troca são a razão que de fato será aplicada, e uma troca pequena de teste transforma a sua aritmética em observação. Para continuar aprendendo os fundamentos, acompanhe mais conteúdos da Bitbase Academy.
Leituras relacionadas
Outros artigos da Bitbase sobre este tema:
- Como revogar uma delegação de governança
- Por que uma migração de token pede uma aprovação na carteira
- Migração de tokens concluída mas os novos tokens não aparecem
- Sinais de alerta de wash trading em NFT
- O ADX e a medição da força da tendência
Aviso: Este artigo é conteúdo educacional da Bitbase Academy, fornecido apenas para fins informativos. Não constitui aconselhamento de investimento, negociação, tributário ou financeiro. Criptoativos são voláteis; avalie seu próprio risco. Escrito em setembro de 2026; consulte as informações oficiais mais recentes.
Fontes
[1] Ethereum Improvement Proposals, ERC-20: Token Standard (EIP-20, Final), método decimals eips.ethereum.org
[2] Documentação para desenvolvedores do ethereum.org, ERC-20 Token Standard ethereum.org






