8 minutos
Aug 22nd, 2023 - 17:34 pm

Tal vez hayas escuchado hablar de un contrato proxy, y es posible que te hayan dicho que es peligroso o que "no se puede confiar en ellos". ¿Quién o por qué alguien usaría un contrato proxy? ¿Va en contra de la filosofía de web3? ¿Realmente es tan peligroso? En este artículo buscamos responder a estas preguntas y compartir información importante sobre los contratos proxy y cómo deberías pensar y tratar con ellos, como un usuario normal de web3. ¡Comencemos!
Normalmente, los contratos en Ethereum son inmutables, lo que significa que no se pueden actualizar una vez que se despliegan. Después de todo, las cadenas de bloques generalmente se definen como un "registro público inmutable", pero los desarrolladores pueden sortear estas limitaciones utilizando el modelo de contrato proxy. Un contrato proxy envía (o delega) toda su funcionalidad a otro contrato inteligente, llamado contrato de implementación.
El propio contrato de implementación (el contrato que contiene todo el código que "hace cosas") puede cambiarse o "actualizarse" según sea necesario. Los desarrolladores simplemente despliegan otra versión del contrato de implementación en la cadena de bloques y actualizan el contrato proxy para enviar todas las solicitudes recibidas al segundo contrato de implementación (diagrama abajo). Un ejemplo de una de esas solicitudes podría ser transferir un activo como un token o NFT.
Una buena analogía para un contrato proxy sería comprar un terreno. El terreno actúa como el contrato proxy, delegando todas las funciones útiles a la casa en sí, donde los propietarios son libres de cambiar el techo, remodelar la cocina, etc. Sin embargo, no importa cuánto remodelen o pongan una casa completamente nueva en el terreno, ¡la dirección no cambia!

¿Los contratos proxy son peligrosos? ¿Deberías invertir en proyectos de NFT que utilizan contratos proxy? ¿Y qué hay de los marketplaces, tokens o incluso protocolos DeFi? Antes de responder a esas preguntas, echemos un vistazo a un par de ejemplos de contratos proxy en acción:
10KTF - Este contrato inteligente es quizás uno de los contratos inteligentes de NFT más destacados que utiliza el modelo de contrato proxy para permitir la capacidad de actualización. Pueden actualizar sus contratos para integrar características como la delegación de billeteras, hacer cumplir royalties o aplicar nuevos elementos/estándares.
USDC - Una de las stablecoins más grandes, también utiliza el modelo de contrato proxy. De hecho, explicaron sus razones y la implementación en su blog de 2020 titulada "Actualización de un token ERC-20 de miles de millones de dólares". Expresaron sus preocupaciones de manera contundente en esta frase de la mencionada publicación: "La capitalización de mercado de USDC había crecido a $1.4 mil millones en el momento de la actualización y nuestras carreras estaban en juego: nadie quería pasar a la historia como el desarrollador que quemó mil millones de dólares".
Blur - Blur es un marketplace de NFT que utiliza contratos proxy en prácticamente todos sus contratos inteligentes desplegados, excepto el contrato del token $BLUR. Esto puede ser peligroso porque los usuarios ya han aprobado activos a la dirección del contrato proxy, y ahora un nuevo contrato de implementación tiene la capacidad de extraer esos activos de las billeteras de los usuarios. Si el nuevo contrato de implementación de Blur tiene errores, cientos de miles de NFT aprobados en el contrato proxy de Blur estarían en riesgo. Los estafadores podrían robar los NFT de las billeteras, lo que significaría el fin del mercado de NFT; este es un escenario de apocalipsis extremadamente improbable, ya que salvaguardias como funciones de interruptor de circuito, auditorías de contratos y hackers de sombrero blanco probablemente detendrían un ataque antes de que ocurriera.
Compound Finance - Si bien no está claro cuál es el proceso de gobernanza en torno a las actualizaciones de Blur y 10KTF, dado que son empresas privadas, es seguro decir que tal vez no sea tan riguroso (¡y ciertamente no tan transparente!) como los que se encuentran en DAOs más maduras. Un ejemplo notable es Compound Finance, una plataforma DeFi de préstamos con más de $1 mil millones en valor total bloqueado (TVL); es conocida por tener una gran atención a la seguridad. Su proceso de gobernanza, por ejemplo, no permite actualizaciones en el protocolo a menos que haya al menos una semana de anticipación, y esto se aplica mediante código.
Aunque hay muchas razones matizadas para utilizar contratos proxy, las principales razones son:

La mayoría de estas razones parecen decir lo mismo de diferentes maneras, pero las diferencias son matizadas. Para algunos proyectos, no es necesario tener la misma dirección de contrato exacta para su utilidad o proyecto; sus usuarios podrían interactuar con el contrato solo a través de una interfaz específica o un sitio web. ¡A menos que sus usuarios utilicen marcadores de contrato inteligente (una estrategia de seguridad enseñada en nuestra clase de Seguridad NFT 101), no se darían cuenta! Pero otros proyectos podrían necesitar la procedencia de su colección de tokens y uniformidad de sus tokens.
Hay dos formas principales de determinar si algo es un contrato proxy. Por supuesto, existen todo tipo de herramientas de análisis de blockchain, pero recomendamos Etherscan para la mayoría de las personas.
Método 1: Primero, navega hasta el contrato en Etherscan. Para este ejemplo, vamos a usar un contrato proxy que a menudo mencionamos en nuestros ejemplos de la clase de Seguridad NFT 102, Helix.
Ve a la pestaña "Contrato". Verás dos botones que no encontrarás en la mayoría de los contratos, los botones son "Escribir como Proxy" y “Leer como Proxy”

Una captura de pantalla de un contrato que ha sido identificado por el Equipo de Etherscan como un Proxy Verificado.
Utiliza el botón "Escribir como Proxy" para interactuar con contratos proxy si alguna vez lo necesitas.
Método 2: La otra forma de reconocer un contrato proxy es cuando Etherscan dice que es un proxy, pero el desarrollador no ha elegido explícitamente poner a disposición los botones mencionados anteriormente en Etherscan. En su lugar, habrá un pequeño banner en la página del contrato que se verá así, indicando que "puede" ser un contrato proxy:

Un contrato que Etherscan cree que es un proxy, pero el desarrollador no lo ha confirmado ni lo ha enviado a Etherscan como tal.
Ahora que sabes que algo es un contrato proxy, ¿cuáles son los riesgos para los usuarios? Insinuamos algunos de ellos en la sección "Proyectos que Utilizan Contratos Proxy", pero detallemos estos riesgos a continuación.

Para un intercambio, no utilizar el modelo de contrato proxy tiene sentido; permite a los usuarios e instituciones que son un poco más cautelosos esperar cualquier problema potencial que los nuevos usuarios puedan enfrentar después de una actualización. Utilizar un contrato proxy para actualizar el contrato de implementación significa que todos los usuarios están sujetos a nuevos riesgos para cada token que hayan aprobado previamente a menos que revoquen esa aprobación.
Además de comprender los riesgos asociados con el uso de contratos proxy, hay algunas reglas generales que debes seguir cuando te encuentres con uno en el mundo real:
Por ejemplo, eres parte de un proyecto de NFT que tiene un contrato proxy desplegado para su colección. Si esa misma colección luego solicita una aprobación para tu ApeCoin o Wrapped Ethereum, debería considerarse de mayor riesgo. Blur a menudo se menciona como un ejemplo "inevitable" de esto, como mencionamos anteriormente, ya que Blur solo utiliza contratos proxy.
Siempre que uso un nuevo marketplace o DEX, me gusta verificar esto y tratar de averiguar si han hablado sobre por qué utilizan un contrato proxy, o cómo protegen y auditan nuevos despliegues antes de actualizar nuevas implementaciones.
Los proyectos inactivos, especialmente aquellos con fundadores anónimos, podrían intentar usar tus aprobaciones en tu contra al desplegar código en un nuevo contrato de implementación con código que les permita tomar el control de los tokens aprobados. Para evitar esta posibilidad, mantén siempre tus aprobaciones limpias, recuerda establecer límites de gasto para las aprobaciones y realiza auditorías periódicas para mantener las aprobaciones innecesarias fuera de tu billetera.
Los contratos proxy no son del todo malos, y sinceramente en la mayoría de los proyectos, especialmente aquellos que los utilizan para sus propios fines, dentro de su propio ecosistema o tokens, es una manera perfectamente sensata de garantizar la viabilidad a largo plazo de tu proyecto. Ayudará a mantenerse al día con los nuevos estándares ERC, tendencias y a poder integrar sin problemas nuevos elementos como la Delegación de Billeteras. Sin embargo, su uso reduce la previsibilidad y la inmutabilidad que los usuarios de blockchain han llegado a apreciar a lo largo de los años.
En última instancia, la decisión de si utilizar o no contratos proxy depende del usuario y de lo que les resulte cómodo. En la mayoría de los casos, los contratos proxy son una manera perfectamente sensata de garantizar la viabilidad a largo plazo de un proyecto. Sin embargo, en casos que involucren intercambios o marketplaces (Blur, Opensea, etc.), donde las actualizaciones deberían ser raras, el uso de contratos proxy puede no ser apropiado.
¿Tienes alguna pregunta o quieres aprender más sobre seguridad en web3 y mantenerte al día con la información de seguridad más actual, estafas y tácticas? Únete a nosotros en nuestro servidor de Discord en https://discord.gg/boringsecurity.