Fundamentals·5 min de lectura

wei, gwei, ether: acertar con las unidades en producción

El error más común en los backends cripto es un fallo de unidad: mostrar wei como ether o, peor aún, enviarlo. La solución es aburrida y absoluta: nunca uses punto flotante para importes on-chain, y siempre sepas en qué unidad está un número.

La escala

El ether tiene 18 decimals. 1 ether = 10^9 gwei = 10^18 wei. El gwei (10^9 wei) es la unidad en la que se cotizan los precios de gas; el wei es la unidad base en la que se denomina cada valor de RPC. El equivalente de Bitcoin es el satoshi (10^-8 BTC), el de TRON es el sun (10^-6 TRX), el de TON es el nanoton (10^-9 TON). Cada cadena tiene una unidad base entera: trabaja en ella.

Por qué fallan los floats

Los doubles IEEE-754 tienen 53 bits de mantisa, unos 15–16 dígitos decimales significativos. Un valor en wei puede tener 19 o más dígitos, así que en el momento en que lo parseas a un número de JavaScript pierdes precisión, en silencio. El error de redondeo es minúsculo en términos relativos y catastrófico en un libro contable. Usa BigInt nativo, o una librería de big-decimal, de extremo a extremo.

Convierte solo en los bordes

Mantén los importes como enteros en la unidad base en todo tu sistema: almacenamiento, aritmética, comparaciones. Convierte a una cadena decimal legible por humanos solo en la frontera de presentación, y parsea la entrada del usuario de vuelta a la unidad base de inmediato al entrar. Si un float llega a tocar un importe entre esos dos bordes, trátalo como un bug.

1st Node Engineering

Preguntas frecuentes

¿Es seguro usar números de JavaScript para importes pequeños?

No: traza la línea en el tipo, no en el tamaño. En cuanto cualquier ruta de código use floats para importes, tarde o temprano fluirá por ella un valor grande. Usa BigInt para todos los importes on-chain sin importar la magnitud.

¿Cómo muestro un valor en wei como ether sin una librería?

Divide por 10^18 usando aritmética entera/BigInt para la parte entera y formatea el resto como los dígitos fraccionarios, nunca mediante división en punto flotante. Nuestras herramientas de conversión de unidades hacen exactamente esto.

Relacionado

Recarga, obtén tu clave y publica.

Autoservicio. Paga en cripto o con tarjeta. Medido por créditos: las primitivas pesadas cuestan más, las simples son baratas.

Obtener clave API