Solo con fines educativos; no es asesoramiento de inversión ni de seguridad. Los decimales no demuestran la identidad, el valor, el respaldo ni la seguridad de un token.
Respuesta directa
En un token ERC-20, decimals() es un metadato opcional que indica a las interfaces cómo mostrar unidades enteras. Si devuelve d, el importe mostrado por convención es raw / 10^d. No modifica la aritmética del contrato ni autentica el token. Antes de confiar en el resultado, verifica la red, la dirección exacta, el código o implementación del proxy y el bloque.
Lee decimals() directamente mediante un RPC independiente en un bloque concreto, decodifica el resultado ABI como uint8 y compáralo con el registro oficial del emisor y un explorador fiable. Después contrasta la escala con valores brutos de balanceOf, transferencias, autorizaciones, recibos y eventos. No supongas 18 si la llamada no existe, revierte, devuelve datos malformados o contradice otras pruebas.
Cómo funciona
ERC-20 almacena y transfiere cantidades enteras sin signo. La capa de visualización inserta la coma decimal; el contrato sigue recibiendo enteros. Convierte la entrada con cadenas decimales o enteros de precisión arbitraria, nunca con coma flotante binaria. Una cantidad solo es representable si al multiplicarla por 10^d se obtiene un entero.
Como decimals() es opcional, un token conforme puede omitirlo. Una implementación personalizada o actualizable puede devolver un valor inesperado o cambiar tras una actualización. En un proxy ERC-1967, inspecciona la dirección proxy, implementación o beacon, administrador y eventos de actualización; consulta el estado en la dirección proxy y fija todas las comparaciones al mismo bloque.
Las autorizaciones y los valores ERC-2612 permit también son enteros brutos. Que una transferencia se muestre bien no prueba que una autorización, mínimo del router, importe del puente o base contable use la misma escala. Los contratos de origen y destino de un puente pueden tener distintos decimales: compara valor legible y unidades brutas en cada lado según sus reglas documentadas de conversión y redondeo.
Sigue este proceso:
- Fija ID de red o dominio, contrato del token, número de bloque, endpoint RPC y hora de observación.
- Confirma la dirección en el registro oficial del emisor; nombre, símbolo, icono y resultados de búsqueda no son pruebas autorizadas.
- Comprueba el código desplegado y si la dirección es un proxy; registra implementación o beacon, administrador y actualizaciones recientes.
- Llama a
decimals(), decodificauint8por ABI y registra éxito, reversión, vacío o salida malformada sin sustituir un valor predeterminado. - Lee
balanceOf,totalSupply, autorización, calldata, recibo y eventos brutos en bloques compatibles; formatéalos con la escala observada. - Recalcula transferencias, autorizaciones, cotizaciones y puentes con enteros, incluyendo comisiones, redondeo, residuos, rebases o impuestos de transferencia.
- Simula y envía una operación pequeña y concilia saldos brutos antes y después; detente ante cualquier desacuerdo entre interfaz, RPC, evento o saldo.
Ejemplos
- Un valor bruto, dos escalas. Con
raw = 123456789,d = 6muestra123.456789; cond = 18,0.000000000123456789. La diferencia es un factor de10^12. - Importa que sea representable. Con
d = 6,1.25tokens son1250000unidades brutas.0.0000001token es menor que una unidad y debe rechazarse o redondearse con una regla explícita. - Autorización mal escalada. Una autorización de
100tokens cond = 6es100000000. Codificarla cond = 18produce100000000000000000000, una autorización10^12veces mayor. - Reescalado en un puente. Si una ruta documentada
1:1convierte un token origen cond = 6a una representación destino cond = 18,2500000bruto representa2.5tokens y2500000000000000000en destino representa2.5. Aun hay que verificar comisiones, límites, residuos y saldo recibido.
Riesgos
- Se consulta la dirección correcta en la red equivocada.
- Un nombre, símbolo o icono copiado oculta otro contrato.
- La implementación proxy o el beacon cambia después de la revisión.
- El RPC o explorador entrega estado antiguo, no finalizado o incoherente.
- Los metadatos ausentes o malformados se sustituyen silenciosamente por
18. - La coma flotante binaria redondea una cantidad grande o precisa.
- La cartera formatea bien una transferencia pero mal una autorización o permit.
- Una base de datos mezcla unidades brutas con importes legibles.
- Un puente supone decimales iguales u oculta el redondeo de residuos.
- Comisiones de transferencia, rebase, acuñación, quema, pausa o congelación rompen la conciliación simple.
- Calldata, eventos, recibos y cambios reales de saldo no coinciden.
- La revisión de decimales se confunde con prueba de emisor, reservas, liquidez o seguridad.
Errores comunes
- Todos los ERC-20 tienen
18decimales. El metadato es opcional y una implementación puede devolver otro valor. - Los decimales son bits de precisión del EVM. Son una convención decimal de visualización; la aritmética sigue siendo entera.
- El saldo formateado del explorador es una confirmación independiente. Puede depender de la misma llamada y compartir el mismo error.
- Símbolo y decimales iguales identifican el mismo activo. También hacen falta la red correcta, el contrato exacto y pruebas del emisor.
- Una transferencia pequeña valida todas las integraciones. Autorizaciones, routers, puentes, exchanges y contabilidad pueden escalar por separado.
Temas relacionados
- Verificación del contrato del token
- Decodificación de calldata en la cartera
- Verificación de tokens de puente
- Riesgo de tokens con comisión de transferencia
- Contrato proxy
Fuentes
- ERC-20: Token Standard - Ethereum Improvement Proposals (consultado: 2026-08-21)
- ERC-20 - OpenZeppelin Docs (consultado: 2026-08-21)
- JSON-RPC API - ethereum.org (consultado: 2026-08-21)
- ERC-1967: Proxy Storage Slots - Ethereum Improvement Proposals (consultado: 2026-08-21)
- ERC-2612: Permit Extension for EIP-20 Signed Approvals - Ethereum Improvement Proposals (consultado: 2026-08-21)