Skip to content

Methodology

Metodologia de cripto

BigInt em toda parte — cada Wei vai e volta exatamente, independentemente da magnitude.

By Published

O cluster de cripto converte entre três denominações Ethereum — Wei (atômica), Gwei (unidade de preço de gas) e ETH (voltada para o usuário). A matemática é trivial em conceito (potências de dez) e complicada na implementação (números excedem a precisão nativa do JavaScript). Esta página explica as escolhas de implementação.

As relações de unidade

1 ETH = 10⁹ Gwei = 10¹⁸ Wei

A EVM armazena todos os saldos e a aritmética em Wei como inteiros não assinados de 256 bits. ETH e Gwei são puramente rótulos voltados para humanos sem representação on-chain — são convenções de divisão por potência de dez para exibição.

Por que BigInt é obrigatório

O tipo Number do JavaScript usa precisão dupla IEEE 754: ~15-17 dígitos decimais significativos. Number.MAX_SAFE_INTEGER é 2⁵³ − 1 ≈ 9,007 × 10¹⁵. Um saldo de 9 ETH é aproximadamente 9 × 10¹⁸ Wei — três ordens de magnitude além do limite de precisão.

Concretamente: se você armazenar 1.234567890123456789 ETH em um Number e converter para Wei, os últimos vários dígitos são arredondados. Bibliotecas de cripto em produção (ethers.js, viem, web3.js) todas usam BigInt ou um wrapper BigNumber para valores em Wei. Nosso conversor usa BigInt nativo em toda parte.

O caminho de análise de string decimal

Para uma entrada do usuário como 1,234 ETH:

  1. Dividir no ponto decimal. Parte inteira: 1; parte fracionária: 234.
  2. Preencher a parte fracionária com zeros até 18 dígitos (precisão do ETH): 234000000000000000.
  3. Concatenar: 1234000000000000000.
  4. Construir um BigInt a partir do resultado.
  5. Para converter para Gwei, dividir por 10⁹ (divisão BigInt é divisão inteira — correto porque Gwei tem 9 casas decimais a menos que Wei).

Garantia de ida e volta

  • ETH → Wei → ETH preserva todos os 18 dígitos fracionários.
  • Gwei → Wei → Gwei preserva todos os 9 dígitos fracionários.
  • Wei → ETH → Wei é exato porque valores Wei são inteiros.

Entradas com mais precisão do que a unidade suporta (ex.: “1,5 Wei”) são truncadas, não arredondadas — valores sub-Wei não existem.

Implementação de referência

function ethToWei(input: string): bigint {
  const [intPart, fracPartRaw = ""] = input.split(".");
  if (fracPartRaw.length > 18) throw new Error("over-precise");
  const fracPart = fracPartRaw.padEnd(18, "0");
  return BigInt(intPart) * 10n ** 18n + BigInt(fracPart);
}

Pressupostos e limitações

  • Aritmética pura, sem rede. A calculadora nunca lê um RPC de chain ou saldo de carteira.
  • Valores sub-Wei são truncados, não arredondados. Uma entrada de 0,5 Wei resolve para 0 Wei.
  • Sem preço ETH/USD em tempo real. Conversão de moeda fiduciária usa um serviço de preço em cache separado no cluster de câmbio.
  • Apenas tokens nativos de chain EVM. Tokens ERC-20 têm decimais configuráveis (USDC tem 6, DAI tem 18); use o valor de decimals() do contrato do token, não os 18 do ETH, para esses casos.
  • Sem assinatura, transmissão ou custódia de transações. Use uma carteira (Metamask, Rabby) para qualquer movimentação; o conversor apenas exibe números.

Frequently asked questions

Como o Convertitive converte entre Wei, Gwei e ETH?
As relações são exatas por definição no Yellow Paper do Ethereum: 1 ETH = 10⁹ Gwei = 10¹⁸ Wei. Toda a aritmética usa JavaScript BigInt para evitar perda de precisão de ponto flutuante IEEE 754. A conversão é: Wei = ETH × 10¹⁸ (multiplicação BigInt, sem perdas). Sem arredondamento, sem aproximação — cada Wei vai e volta exatamente.
Por que BigInt é obrigatório para conversão de unidades Ethereum?
O tipo Number do JavaScript é um double IEEE 754 (ponto flutuante de 64 bits) com mantissa de 53 bits, dando representação inteira exata apenas até 2⁵³ = 9.007.199.254.740.992 (cerca de 9 × 10¹⁵). Um único ETH = 10¹⁸ Wei já excede isso por 100×. Sem BigInt, até pequenos valores de ETH perdem precisão em nível de Wei. Por exemplo, 1,5 ETH = 1.500.000.000.000.000.000 Wei — um inteiro de 19 dígitos que Number arredonda silenciosamente.
O que a Máquina Virtual Ethereum realmente armazena para saldos?
A EVM (Yellow Paper do Ethereum, §4.1) armazena saldos de contas como inteiros não assinados de 256 bits em unidades de Wei. Não há representação de ponto flutuante ou decimal na camada de protocolo. Gwei é uma denominação de conveniência legível por humanos usada para preços de gas (a taxa base do EIP-1559 é denominada em Gwei); ETH é a denominação de exibição. Apenas Wei existe no nível da EVM.
Como funciona o caminho de análise de string decimal para entradas fracionárias de ETH?
ETH fracionário como '0,001' é analisado como uma string decimal, dividida no ponto decimal, e a parte fracionária é preenchida com zeros exatamente até 18 casas decimais antes de ser analisada como BigInt. Por exemplo, '0,001' → parte inteira '0', fracionária '001' + 15 zeros de preenchimento = '001000000000000000' → 1.000.000.000.000.000 Wei. Isso evita qualquer representação intermediária de ponto flutuante.
Quais são as limitações do conversor Wei / Gwei / ETH?
Três limitações: (1) o conversor não sabe o preço atual ETH/USD — ele converte unidades, não valor; (2) estimativa de gas não é realizada; (3) decimais de tokens ERC-20 não são suportados — muitos tokens usam 6 ou 8 casas decimais em vez de 18, e tratá-los como ETH daria resultados errados.

Related

Published May 14, 2026