Una aplicación encuentra un contrato y necesita saber si ofrece una interfaz determinada. Podría intentar llamar a una función y observar qué sucede, pero existe un mecanismo pensado para declarar esa compatibilidad: ERC-165. Su utilidad está en orientar la interacción. No convierte una respuesta afirmativa en un certificado de calidad.
La especificación ERC-165 define supportsInterface y un identificador de cuatro bytes para la interfaz. Este identificador se construye mediante XOR de los selectores de sus funciones. Un contrato que implementa el estándar debe reconocer la propia interfaz ERC-165 y rechazar el identificador 0xffffffff, siguiendo las condiciones de la especificación.
Qué pregunta se ha contestado realmente
Imagina una herramienta que muestra un panel adicional cuando detecta una interfaz. Si recibe true, puede decidir qué controles ofrecer. Eso no demuestra que las funciones hagan lo que el usuario espera en todas las circunstancias, que no existan privilegios administrativos peligrosos o que el contrato haya sido auditado.
Es parecido a leer la lista de formatos que un programa declara poder abrir: permite escoger una operación razonable, pero no prueba que el archivo sea fiable ni que la operación vaya a producir el resultado deseado. La analogía ayuda a separar compatibilidad de confianza; no describe el funcionamiento técnico del contrato.
Tres resultados que conviene conservar
- Respuesta afirmativa: el contrato declara soporte para el identificador consultado. Guarda qué dirección, red y bloque utilizaste.
- Respuesta negativa: no ha declarado ese soporte mediante esta consulta. No equivale automáticamente a que toda interacción posible sea inútil.
- Error o respuesta no interpretable: registra el fallo como tal. No lo transformes silenciosamente en una afirmación de compatibilidad.
La detección completa tiene condiciones específicas, incluido un límite de gas para las comprobaciones descritas en el estándar. Copiar únicamente una llamada de un ejemplo puede omitir parte del procedimiento. Para implementar el mecanismo, consulta la especificación y una biblioteca mantenida; una explicación editorial no sustituye sus pruebas.
Una nota técnica que no exagera
En un informe de prueba puedes escribir: “En esta red y este bloque, la consulta de esta interfaz devolvió true”. Después, en otra línea, anota las pruebas de comportamiento que realmente realizaste. Esa separación evita convertir un dato pequeño en una conclusión enorme.
Tampoco extrapoles el resultado a una dirección idéntica en otra red, ni a un estado futuro de un contrato actualizable. La pregunta útil al cerrar la prueba es concreta: ¿qué operación permite preparar esta respuesta y qué parte de su comportamiento sigue pendiente de comprobar?
Ilustración editorial generada con IA; no es una fotografía documental.

