Blockchain y tecnología Guía 6 de 6

Cómo comprobar un contrato inteligente antes de interactuar

Comprobaciones prácticas que puede hacer alguien sin conocimientos de programación antes de aprobar una transacción: estado de verificación, funciones privilegiadas, alcance de la aprobación y revocación.

Illustration: a solid slab with a window revealing gears, for checking a smart contract before interacting

En resumen

No necesitas leer Solidity para evitar la mayoría de los desastres con contratos. Comprueba que el contrato está verificado, busca funciones privilegiadas del propietario, entiende exactamente qué concede una aprobación, y revoca las autorizaciones antiguas con regularidad.

Conceptos clave

  • Un contrato sin verificar debería tratarse como hostil
  • Funciones del propietario como mint, pause y blacklist son señales de alerta
  • Una aprobación de token no es un inicio de sesión: puede ser ilimitada y permanente
  • Revoca las aprobaciones antiguas; persisten indefinidamente
  • Auditado es una señal débil, no una garantía

No necesitas leer código para evitar la mayoría de los desastres con contratos. La mayor parte de las pérdidas viene de un pequeño número de condiciones fáciles de comprobar.

1. ¿Está verificado el contrato?

Un contrato verificado tiene código fuente publicado que un explorador de bloques ha confirmado que compila hasta el bytecode desplegado. No verificado significa que nadie fuera de quien lo desplegó sabe qué hace.

Trata un contrato sin verificar como hostil. No hay ninguna razón legítima para que un proyecto que te pide dinero oculte su código fuente. Esta única comprobación elimina muchísimo.

2. ¿Qué puede hacer el propietario?

Incluso en código verificado, alguien sin conocimientos de programación puede buscar las funciones que importan. Fíjate en:

  • mint — ¿puede el propietario crear tokens nuevos sin límite? Eso te diluye a cero cuando quiera.
  • pause / blacklist — ¿pueden impedirte vender, o bloquear tu dirección concreta? Los tokens honeypot funcionan exactamente así: puedes comprar y luego no puedes vender.
  • setFee / setTax — ¿se puede cambiar la comisión de transferencia después de comprar? Una comisión subida al 99% es una trampa.
  • onlyOwner — ¿cuántas funciones están restringidas a una sola dirección, y esa dirección es una clave única o una multifirma?

Muchos exploradores ya muestran esto automáticamente. Si el propietario puede acuñar, pausar o gravar a voluntad, las reglas del token son las que decida mañana.

3. Entiende qué estás aprobando

Aquí es donde ocurre la mayoría de los vaciados de wallet. Para dejar que un contrato mueva tus tokens, concedes una autorización. Dos cosas sorprenden a la gente:

  • Las autorizaciones suelen ser ilimitadas. Muchas interfaces aprueban por defecto el importe máximo posible, así que el contrato puede mover cada token de ese tipo que tengas, ahora y cualquiera que adquieras después.
  • Persisten indefinidamente. La aprobación se mantiene después de que termines, hasta que la revoques. Un protocolo comprometido un año más tarde puede seguir actuando sobre una autorización que concediste hoy.

Lee la pantalla de aprobación. Tu wallet te muestra qué contrato y qué cantidad. Si dice ilimitado y estás haciendo un intercambio puntual, fija en su lugar una cantidad concreta.

4. Reconoce una solicitud de firma maliciosa

No toda firma es una transacción. Algunas solicitudes te piden firmar un mensaje que concede permisos fuera de la cadena, una técnica muy usada en sitios falsos de minteo y airdrop.

Señales de alerta: una solicitud de firma que no iniciaste tú; una solicitud que aparece justo después de hacer clic en un enlace de un mensaje directo o un anuncio; una solicitud cuyo contenido tu wallet no puede descifrar en algo legible; o cualquier aviso en un sitio al que llegaste desde una fuente no solicitada. En caso de duda, recházala. Una acción legítima siempre se puede repetir.

5. Revoca las aprobaciones antiguas

Conviértelo en hábito. Usa una herramienta de revocación de confianza, a la que llegues escribiendo la dirección directamente, ya que existen sitios de revocación falsos y son exactamente el tipo de trampa que atrapa a usuarios preocupados por la seguridad, y elimina las autorizaciones que ya no necesites, especialmente las ilimitadas y las de protocolos que ya no uses.

6. Trata «auditado» con cuidado

Una auditoría es una revisión puntual hecha por personas falibles, a menudo de una versión que después cambió. Muchos protocolos auditados han sido explotados.

Preguntas útiles: ¿quién la hizo?, ¿el informe es público?, ¿qué problemas de gravedad se encontraron?, ¿se corrigieron?, ¿se ha modificado el contrato desde entonces? «Auditado por» sin un informe enlazado es marketing.

7. Prefiere contratos puestos a prueba por el tiempo

La señal más fuerte disponible es la supervivencia. Un protocolo que ha mantenido un valor significativo durante años sin ser explotado ha estado bajo ataque continuo de adversarios con buenos recursos, y ha aguantado. Esa es una prueba más dura que cualquier auditoría.

Los contratos nuevos no están probados por definición, sin importar lo bueno que parezca el código.

Una lista de comprobación previa

  • Contrato verificado en un explorador de bloques
  • Sin funciones de minteo ilimitado, pausa, lista negra o comisión mutable, o propiedad renunciada
  • Alcance de la aprobación entendido, y limitado cuando sea práctico
  • Solicitud de firma iniciada por mí, en un sitio al que llegué directamente
  • El protocolo tiene un historial operativo significativo y valor en juego
  • Usando una wallet que solo tiene lo que puedo permitirme perder

Qué leer a continuación

Has terminado la ruta de Ganancias y DeFi, y las cuatro rutas. El glosario cubre cualquier término que quieras repasar, y el centro de aprendizaje muestra tu progreso.

Fuentes

Únete a la conversación

¿Tienes una pregunta o has visto un error?

Los comentarios están abiertos a los miembros y se moderan antes de publicarse. Las preguntas y correcciones son siempre bienvenidas; la promoción y las predicciones de precio, no.

  • Gratis: una dirección de correo y una contraseña, nada más
  • Guarda guías y sigue tu progreso
  • Leer nunca requiere una cuenta

Únete gratis Iniciar sesión