Buy Crypto
Markets
Spot
FuturesBTC
Earn
Event Center
More
0-Fee Fest
Contrato proxy: ¿Qué es un contrato proxy?Un contrato proxy es un contrato inteligente que recibe llamadas de los usuarios y las reenvía a otro contrato que contiene la lógica de negocio real.En el ámbito cripto, losContrato proxy: ¿Qué es un contrato proxy?Un contrato proxy es un contrato inteligente que recibe llamadas de los usuarios y las reenvía a otro contrato que contiene la lógica de negocio real.En el ámbito cripto, los

Contrato proxy

2026/10/13 16:48
#Advanced
Humanity
H$0.05601+4.04%
Lagrange
LA$0.06141-3.59%
ELYSIA
EL$0.001663-2.34%
o1.exchange
O$0.4712-1.38%
Super Inu
SI$0.0143-14.31%

¿Qué es un contrato proxy?

Un contrato proxy es un contrato inteligente que recibe llamadas de los usuarios y las reenvía a otro contrato que contiene la lógica de negocio real.En el ámbito cripto, los contratos proxy se utilizan principalmente para que los sistemas de contratos inteligentes puedan actualizarse sin cambiar la dirección pública del contrato ni el estado almacenado.El contrato con el que interactúan los usuarios suele denominarse proxy.El contrato que contiene la lógica vigente suele denominarse contrato de implementación, contrato de lógica o copia maestra.

El patrón de actualización de proxies de OpenZeppelin explica que la capacidad de actualización basada en proxies funciona separando el almacenamiento de la lógica del contrato.

Esta separación es importante porque, normalmente, los contratos inteligentes son difíciles o imposibles de modificar una vez desplegados.Si un proyecto despliega un contrato convencional y más adelante detecta un error, puede que el equipo tenga que desplegar otro contrato en una dirección nueva.Un contrato proxy resuelve este problema manteniendo la misma dirección del proxy y apuntando a un contrato de implementación nuevo cuando se aprueba una actualización.Los usuarios, las wallets y las aplicaciones siguen interactuando con la dirección del proxy, mientras que la lógica que hay detrás puede cambiar.La forma más sencilla de entender un contrato proxy es verlo como una entrada principal permanente, mientras que el contrato de implementación es el motor reemplazable que hay detrás.

Por qué existen los contratos proxy

Los contratos proxy existen porque la inmutabilidad de la blockchain aporta tanto seguridad como dificultades.La inmutabilidad es útil porque los usuarios pueden confiar en que el código desplegado no se modificará en secreto como el software web convencional.Sin embargo, se convierte en un problema cuando los desarrolladores necesitan corregir errores, añadir funciones, responder a problemas de seguridad, mejorar el rendimiento o admitir nuevos estándares.Sin un proxy, actualizar un contrato inteligente suele implicar desplegar uno nuevo y pedir a los usuarios que migren sus activos o permisos.La migración puede ser cara, confusa, arriesgada y disruptiva.Un contrato proxy permite mantener estable la dirección con la que interactúan los usuarios.Esto es importante para los protocolos DeFi, las colecciones NFT, las DAO, los contratos de tokens, los bridges, los sistemas de staking, los activos de videojuegos y las wallets de abstracción de cuentas.Puede reducir las fricciones para los usuarios porque las integraciones no tienen que cambiar las direcciones de los contratos cada vez que cambia la lógica.También puede mejorar la seguridad al facilitar el despliegue de correcciones urgentes.Sin embargo, la capacidad de actualización introduce supuestos de confianza, ya que una persona o un proceso de gobernanza debe tener permiso para cambiar la implementación.

Cómo funciona un contrato proxy

Un contrato proxy funciona almacenando el estado y reenviando llamadas a funciones a un contrato de implementación.Cuando un usuario llama al proxy, este normalmente no ejecuta por sí mismo la lógica principal de la aplicación.

En su lugar, reenvía la llamada al contrato de implementación mediante mecanismos de bajo nivel de la EVM, como

delegatecall
.

Se ejecuta el código de la implementación, pero los cambios se realizan en el almacenamiento del proxy.Este es el detalle clave que hace posibles los sistemas proxy actualizables.El proxy mantiene los saldos, los ajustes, las variables de titularidad, la oferta de tokens, las posiciones de los usuarios y otros datos de estado.El contrato de implementación proporciona el código que sabe cómo leer y actualizar ese estado.Si se actualiza el sistema, se despliega un nuevo contrato de implementación con una lógica nueva.A continuación, el proxy actualiza el puntero a la implementación para que apunte al nuevo contrato.La dirección con la que interactúan los usuarios y los datos almacenados permanecen en el proxy, mientras que las llamadas futuras utilizan la lógica nueva.

Contrato proxy y delegatecall

delegatecall
es el mecanismo de bajo nivel que permite funcionar a muchos contratos proxy.

Con una llamada externa normal, un contrato llama a otro y el contrato llamado utiliza su propio almacenamiento.

Con

delegatecall
, el código del contrato llamado se ejecuta en el contexto de almacenamiento del contrato que realiza la llamada.

En un proxy, esto significa que el código del contrato de implementación puede modificar el almacenamiento del proxy.Esto es potente porque el proxy puede conservar el estado mientras cambia el código de implementación que utiliza.También es peligroso porque el código de implementación debe tener en cuenta la estructura de almacenamiento del proxy.Si la implementación escribe en una posición de almacenamiento incorrecta, puede corromper datos esenciales.Si el proxy delega la ejecución en una implementación maliciosa, esa lógica puede llegar a drenar activos o cambiar permisos.

La advertencia SWC-112 sobre delegatecall recomienda a los desarrolladores utilizar

delegatecall
con cuidado y evitar llamar a contratos que no sean de confianza.

En los sistemas proxy,

delegatecall
no es un simple detalle técnico: es el elemento central del modelo de seguridad.

Contrato proxy frente a contrato de implementación

El contrato proxy y el contrato de implementación tienen responsabilidades distintas.El contrato proxy conserva la dirección a la que llaman los usuarios y suele almacenar el estado del sistema.El contrato de implementación contiene las funciones y reglas que determinan cómo cambia ese estado.Por ejemplo, un proxy de token puede mantener los saldos en el almacenamiento del proxy, mientras que la implementación define la lógica de transferencia, aprobación, acuñación, quema o control de acceso.Cuando se necesita una función nueva, los desarrolladores despliegan un contrato de implementación nuevo.A continuación, el proxy se actualiza para apuntar a esa nueva implementación.La dirección del proxy permanece igual, por lo que los usuarios y las integraciones no tienen que cambiar a una dirección nueva.Este modelo es útil, pero significa que los usuarios deben preguntarse quién controla las actualizaciones.Si una única clave privada controla la administración del proxy, esa clave puede otorgar un poder enorme sobre el contrato.Si las actualizaciones dependen de la gobernanza, con un bloqueo temporal y un proceso de votación, los usuarios pueden disponer de más tiempo para revisar los cambios antes de que se activen.

Contrato proxy frente a contrato inteligente convencional

Un contrato inteligente convencional suele contener el almacenamiento y la lógica en un mismo contrato.Una vez desplegado, el código de ese contrato normalmente queda fijado.Un sistema basado en proxies divide el almacenamiento y la lógica entre al menos dos contratos.El proxy almacena el estado y reenvía las llamadas.La implementación contiene la lógica y puede sustituirse si el mecanismo de actualización lo permite.Esto hace que el sistema proxy sea más flexible que un contrato convencional.También hace que sea más difícil auditar el sistema, ya que la seguridad depende del proxy, la implementación, los controles administrativos, el proceso de inicialización, la estructura de almacenamiento y el historial de actualizaciones.Un contrato convencional puede resultar más sencillo para los usuarios, porque el código de la dirección es el que se ejecuta.En un contrato proxy, los usuarios y los auditores tienen que examinar el proxy para encontrar la implementación activa.Por eso, los exploradores de blockchain suelen etiquetar los contratos proxy verificados y mostrar la dirección de la implementación actual cuando pueden detectarla.

Contrato proxy y capacidad de actualización

La capacidad de actualización es el motivo más habitual para utilizar un contrato proxy.Los contratos actualizables permiten cambiar la lógica después del despliegue sin modificar la dirección del proxy.Esto puede ser útil para corregir errores, añadir funciones, mejorar el consumo de gas, incorporar integraciones, cambiar la gobernanza o actualizar protocolos.Sin embargo, la capacidad de actualización modifica el modelo de confianza.Un contrato que puede actualizarse no es completamente inmutable como un contrato que no admite actualizaciones.Los usuarios confían en que la autoridad de actualización no introducirá cambios maliciosos o negligentes.La autoridad de actualización puede ser un único titular, una wallet multisig, una DAO, un controlador de bloqueo temporal u otro contrato de gobernanza.Los diseños más seguros suelen hacer que la autoridad de actualización sea transparente y más difícil de utilizar indebidamente.Por ejemplo, un bloqueo temporal puede dar a los usuarios tiempo para salir antes de que se ejecute una actualización importante.Sin controles sólidos, un contrato proxy puede convertirse en una puerta trasera oculta para acceder a los fondos de los usuarios.

Estándar ERC-1967 para proxies

ERC-1967 es un estándar muy utilizado para las posiciones de almacenamiento de proxies.

El estándar ERC-1967 define posiciones de almacenamiento concretas para información del proxy, como las direcciones de implementación, administrador y beacon.

Su objetivo es evitar colisiones de almacenamiento entre el proxy y el contrato de implementación.Una colisión de almacenamiento se produce cuando dos variables utilizan accidentalmente la misma posición de almacenamiento.

En los sistemas proxy, esto puede ser especialmente peligroso porque el almacenamiento del proxy y la lógica de implementación interactúan mediante

delegatecall
.

ERC-1967 también ayuda a que los exploradores de blockchain y las herramientas para desarrolladores identifiquen la implementación activa detrás de un proxy.Esto facilita la inspección y auditoría de los sistemas proxy.Muchos patrones de proxies actualizables habituales utilizan las posiciones de ERC-1967.Utilizar un estándar conocido no hace que un proxy sea seguro automáticamente.Sí reduce la confusión evitable y ayuda a las herramientas a identificar dónde se almacenan los datos esenciales del proxy.

Proxy transparente

Un proxy transparente es un patrón que separa las llamadas del administrador de las llamadas de los usuarios.En este patrón, los usuarios normales llaman al proxy y sus llamadas se reenvían a la implementación.El administrador puede realizar acciones relacionadas con las actualizaciones, pero normalmente se le impide llamar accidentalmente a funciones de la implementación a través del proxy.Este diseño ayuda a evitar conflictos entre los selectores de funciones del administrador del proxy y los de la implementación.

La documentación de proxies de OpenZeppelin incluye

TransparentUpgradeableProxy
como un proxy con administrador e interfaz de actualización integrados.

Los proxies transparentes son habituales porque la lógica de actualización está claramente situada en la parte del proxy del sistema.Sin embargo, pueden tener algo más de sobrecarga que los modelos de proxy más ligeros.También requieren una gestión cuidadosa del administrador del proxy.Si el administrador del proxy se ve comprometido, el atacante puede actualizar el contrato para introducir una lógica maliciosa.La seguridad de un proxy transparente depende tanto del código de implementación como de la seguridad del administrador.

Proxy UUPS

UUPS significa Universal Upgradeable Proxy Standard (estándar universal de proxy actualizable).

El estándar ERC-1822 UUPS describe un diseño de proxy en el que la compatibilidad de las actualizaciones se gestiona mediante la lógica de implementación.

En un diseño UUPS, el proxy puede ser más ligero porque la función de actualización está en el contrato de implementación y no en una interfaz de administración de proxy más compleja.Esto puede reducir el coste de despliegue y la complejidad del proxy.Sin embargo, los desarrolladores deben proteger correctamente la función de actualización dentro del contrato de implementación UUPS.Si el control de acceso no está bien configurado, un atacante podría actualizar el sistema.Si una implementación nueva elimina o rompe la función de actualización, puede resultar difícil o imposible volver a actualizar el proxy.Las herramientas UUPS de OpenZeppelin incluyen salvaguardas para reducir el riesgo de perder accidentalmente la capacidad de actualización, pero los desarrolladores siguen necesitando una revisión cuidadosa.Los proxies UUPS son potentes porque son flexibles y eficientes.Suponen un riesgo cuando los equipos no entienden plenamente dónde reside la autoridad de actualización.

Proxy beacon

Un proxy beacon obtiene la dirección de su implementación de un contrato beacon independiente.En lugar de que cada proxy almacene su propia dirección de implementación, muchos proxies pueden apuntar a un mismo beacon.Cuando se actualiza el beacon, todos los proxies que lo utilizan pueden empezar a emplear la implementación nueva.Este diseño resulta útil cuando un proyecto necesita desplegar muchos contratos similares que deben actualizarse a la vez.Por ejemplo, una factory puede crear muchas bóvedas, pools, cuentas de usuario o contratos relacionados con NFT que comparten la misma lógica.Un proxy beacon puede simplificar las actualizaciones masivas.También puede aumentar el riesgo, ya que una sola actualización del beacon puede afectar a muchas instancias proxy al mismo tiempo.El administrador del beacon debe protegerse cuidadosamente.Los usuarios deberían saber si su contrato depende de un beacon, ya que un cambio en este puede modificar el comportamiento de muchos contratos.Los proxies beacon son eficientes para conjuntos de contratos, pero concentran el poder de actualización en el beacon.

Proxy mínimo y ERC-1167

Un proxy mínimo es un contrato proxy muy pequeño, diseñado para replicar con un coste de despliegue reducido el comportamiento de otro contrato de implementación.

El estándar ERC-1167 para proxies mínimos define un patrón de bytecode mínimo para crear clones de bajo coste que delegan las llamadas a una implementación fija.

A los proxies mínimos se les suele llamar clones.Son útiles cuando un proyecto necesita desplegar muchas copias de la misma lógica, como wallets, bóvedas, pools, cuentas o instancias de un mercado.Cada clon tiene su propia dirección y estado, pero reutiliza la lógica de implementación.Esto puede ahorrar gas, ya que no es necesario desplegar repetidamente todo el código de la implementación.No todos los proxies mínimos son actualizables.Muchos clones ERC-1167 apuntan a una implementación fija y no pueden cambiar ese destino salvo que se añada lógica de actualización en otro lugar.Esta distinción importa porque un proxy mínimo sirve para crear clones baratos, mientras que un proxy actualizable permite sustituir la lógica.Algunos sistemas combinan ambas ideas, pero no deben confundirse.

Estructura de almacenamiento en contratos proxy

La estructura de almacenamiento es uno de los aspectos más importantes del diseño de contratos proxy.Como el proxy almacena el estado y la implementación proporciona la lógica, esta debe leer y escribir en el almacenamiento siguiendo el orden correcto.Si una implementación nueva cambia incorrectamente el orden de las variables, puede interpretar los datos antiguos como si fueran de otro tipo.Por ejemplo, un mapping de saldos podría sustituirse accidentalmente por una variable de propietario, o un nuevo valor de configuración podría sobrescribir una variable antigua.Esto puede romper el contrato o crear vulnerabilidades de seguridad.Los frameworks de contratos actualizables suelen exigir que los desarrolladores añadan nuevas variables al final, en lugar de reordenar o eliminar las existentes.A veces se utilizan espacios de almacenamiento reservados para futuras variables.Las comprobaciones de la estructura de almacenamiento pueden detectar muchos errores de actualización antes del despliegue.Los desarrolladores deberían considerar la estructura de almacenamiento como parte del modelo de seguridad público del contrato.Los usuarios deberían desconfiar de los proyectos actualizables que no expliquen cómo revisan la estructura de almacenamiento durante las actualizaciones.

Inicialización en contratos proxy

Los contratos proxy actualizables suelen utilizar funciones de inicialización en lugar de constructores.Un constructor solo se ejecuta cuando se despliega el contrato de implementación.Sin embargo, en un sistema proxy los usuarios interactúan con el proxy, y es necesario inicializar el almacenamiento de este.Por eso, la configuración suele ejecutarse mediante una función de inicialización llamada a través del proxy.La inicialización puede establecer el propietario, el nombre del token, la dirección de la tesorería, los roles administrativos, los valores de la oferta, los ajustes de comisiones o los parámetros de gobernanza.Si se olvida la inicialización, el proxy puede quedar desprotegido.Si un atacante llama primero a la función de inicialización, podría convertirse en propietario o administrador.Si la función puede ejecutarse más de una vez, podrían sobrescribirse ajustes esenciales.Por este motivo, los contratos actualizables necesitan protecciones de inicialización que impidan repetir el proceso.Los errores de inicialización son algunos de los fallos más habituales y peligrosos en los contratos actualizables.

Administrador del proxy y autoridad de actualización

El administrador del proxy es la cuenta o el contrato que puede actualizar la implementación del proxy.Este rol puede estar controlado por una wallet individual, una wallet multisig, una votación de una DAO, un bloqueo temporal o un contrato de gobernanza.El rol de administrador es extremadamente importante porque permite cambiar el código que controla los activos de los usuarios.Si el administrador actualiza el contrato para introducir una lógica maliciosa, los usuarios pueden perder fondos aunque la implementación anterior fuera segura.Si roban la clave del administrador, el atacante podría sustituir la implementación.Si el administrador es demasiado lento o está excesivamente descentralizado, puede resultar difícil aplicar correcciones de emergencia.Una buena gobernanza de proxies equilibra la seguridad, la capacidad de respuesta, la transparencia y el derecho de los usuarios a retirar sus activos.Un bloqueo temporal puede aumentar la confianza al retrasar las actualizaciones después de su anuncio.Una multisig puede reducir el riesgo de una única clave al exigir varios firmantes.Las propuestas públicas de actualización y las auditorías pueden ayudar a los usuarios a entender los cambios.

Contrato proxy y exploradores de blockchain

Los exploradores de blockchain suelen ayudar a los usuarios a inspeccionar los contratos proxy.Un buen explorador puede indicar que una dirección es un proxy e identificar la dirección de la implementación actual.Si el proxy sigue un estándar conocido, como ERC-1967, también puede mostrar información sobre el administrador.Esto ayuda a los usuarios y a los auditores a revisar el código que se está ejecutando realmente.Si no se detecta el proxy, los usuarios pueden fijarse únicamente en su bytecode y pasar por alto la lógica de implementación.Esto puede generar una falsa sensación de seguridad, porque el proxy puede contener muy poco código visible de la aplicación.Los usuarios deberían comprobar si el contrato de implementación está verificado.También deberían comprobar si la implementación ha cambiado con el tiempo.Una auditoría antigua puede no ser aplicable si el proxy se ha actualizado para utilizar una lógica nueva.Para interacciones de gran valor, es mucho más seguro revisar el proxy, la implementación, el administrador y el historial de actualizaciones que examinar únicamente la dirección visible.

Contrato proxy y contratos de tokens

Muchos contratos de tokens utilizan proxies para admitir futuras actualizaciones.Un token actualizable puede mantener la misma dirección mientras cambia las reglas de transferencia, las comisiones, la lógica de acuñación o quema, la lógica de bridge, las reglas de cumplimiento o las funciones de gobernanza.Esto puede resultar útil cuando un token necesita adaptarse con el tiempo.También puede ser arriesgado, porque las reglas en las que confían los usuarios pueden cambiar después de que compren o reciban el token.Por ejemplo, una actualización podría añadir restricciones de transferencia, cambiar el funcionamiento de las comisiones, incorporar facultades de pausa o modificar los controles de acceso.Antes de suponer que las reglas de un token son permanentes, los usuarios deberían comprobar si el contrato admite actualizaciones.También deberían comprobar quién controla las actualizaciones y si la gobernanza las retrasa.Que un token utilice un proxy no significa que sea automáticamente inseguro.Simplemente, tiene un modelo de confianza distinto al de un contrato de token completamente inmutable.La pregunta importante es si la autoridad de actualización es transparente y está bien protegida.

Contrato proxy y protocolos DeFi

Los protocolos DeFi suelen utilizar contratos proxy porque las aplicaciones financieras necesitan mantenimiento.Un protocolo de préstamo, un creador de mercado automatizado, un sistema de derivados, una bóveda de staking o una estrategia de rendimiento puede necesitar actualizaciones después de auditorías, cambios del mercado, mejoras de oráculos o la detección de errores.Los contratos proxy permiten mejorar estos sistemas sin obligar a todos los usuarios a migrar sus posiciones.Esto resulta práctico porque las posiciones DeFi pueden ser complejas y estar conectadas con muchos protocolos.Sin embargo, la capacidad de actualización también crea un riesgo sistémico.Una mala actualización en un contrato DeFi muy utilizado puede afectar a muchos usuarios e integraciones a la vez.Un protocolo DeFi actualizable debería contar con pruebas sólidas, auditorías, supervisión, controles de gobernanza y procedimientos de emergencia.Los usuarios no deberían limitarse a preguntar si el protocolo está auditado.También deberían comprobar si la implementación actual está auditada y si las futuras actualizaciones requieren una revisión pública.En DeFi, los contratos proxy mejoran el mantenimiento, pero hacen que la gobernanza sea más importante.

Contrato proxy y NFT

Los proyectos NFT pueden utilizar contratos proxy para actualizar la lógica de metadatos, acuñación, integración con mercados, regalías, sistemas de staking o mecánicas de videojuegos.Un proxy de NFT puede permitir que un proyecto añada funciones después del lanzamiento.También puede permitir cambios en los metadatos si la implementación controla la lógica de URI de los tokens.Esto puede ser útil cuando un proyecto pasa de ofrecer simples objetos coleccionables a crear videojuegos, membresías o sistemas de identidad digital.Puede resultar controvertido cuando los coleccionistas esperan reglas fijas o metadatos permanentes.Los compradores de NFT deberían comprobar si el contrato admite actualizaciones y si los metadatos pueden cambiar.También deberían comprobar quién controla al administrador de actualización.Tanto un NFT completamente inmutable como uno actualizable pueden ser legítimos, pero ofrecen garantías diferentes.Los coleccionistas deberían entender si compran reglas on-chain fijas o participan en un proyecto que puede evolucionar.Los contratos proxy dan flexibilidad al desarrollo de NFT, pero también exigen confiar en el proceso de actualización del proyecto.

Contrato proxy y DAO

Las DAO pueden utilizar contratos proxy para actualizar módulos de gobernanza, herramientas de tesorería, sistemas de votación, contratos de staking o parámetros del protocolo.Un proxy controlado por una DAO puede ser más transparente que uno administrado por una sola persona, ya que las actualizaciones pueden requerir propuestas y votaciones.Sin embargo, la gobernanza de una DAO no hace que las actualizaciones sean seguras automáticamente.La baja participación en las votaciones, la compra de votos, los ataques de gobernanza, las propuestas apresuradas o los cambios de código poco claros pueden seguir generando riesgos.Un buen proceso de actualización de una DAO debería incluir resúmenes comprensibles, diferencias técnicas, enlaces a auditorías, análisis de riesgos, plazos de votación y retrasos mediante bloqueos temporales.Los miembros de una DAO deberían saber qué contratos son actualizables y qué facultades tiene la gobernanza.Si la gobernanza puede actualizar contratos de tesorería, contratos de tokens o la lógica central del protocolo, los votantes son responsables de decisiones de seguridad importantes.Los contratos proxy pueden ayudar a las DAO a adaptarse con el tiempo.También pueden otorgar a la gobernanza el poder de cambiar reglas que los usuarios creían estables.La capacidad de actualización de una DAO debería ser visible, estar documentada y controlarse con cuidado.

Ventajas de los contratos proxy

La primera ventaja de un contrato proxy es que permite actualizarlo.Los proyectos pueden corregir errores, añadir funciones y mejorar la lógica sin cambiar la dirección principal del contrato.La segunda ventaja es la continuidad del estado.Los saldos, las posiciones, los permisos y los ajustes de los usuarios pueden permanecer en el proxy aunque cambie la lógica de implementación.La tercera ventaja es la estabilidad de las integraciones.Las wallets, las dApp, los indexadores y otros contratos pueden seguir utilizando la misma dirección.La cuarta ventaja es que reduce las fricciones de migración.Puede que los usuarios no tengan que trasladar manualmente sus activos a un contrato nuevo después de cada actualización.La quinta ventaja es la eficiencia de gas de los patrones de clonación.Los proxies mínimos permiten desplegar muchos contratos similares a menor coste que desplegar todo el código cada vez.La sexta ventaja es una arquitectura modular.Los equipos pueden separar con mayor claridad el almacenamiento, la lógica, el control de las actualizaciones y los patrones de despliegue.Estas ventajas solo son valiosas si los contratos proxy se diseñan, auditan, gobiernan y supervisan cuidadosamente.

Riesgos de los contratos proxy

El primer riesgo son las actualizaciones maliciosas.Si la autoridad de actualización se ve comprometida o actúa de forma deshonesta, puede sustituir una lógica segura por otra maliciosa.El segundo riesgo son las colisiones de almacenamiento.Si la estructura de almacenamiento es incorrecta, una actualización puede corromper datos importantes del contrato.El tercer riesgo son los fallos de inicialización.Un proxy o una implementación sin inicializar pueden permitir que un atacante tome el control.El cuarto riesgo son los conflictos entre selectores de funciones.Las funciones administrativas del proxy pueden entrar en conflicto con las de la implementación si el patrón está mal diseñado.El quinto riesgo es que las auditorías no correspondan al código actual.Es posible que un contrato se auditara en el pasado, pero que la implementación actual sea distinta.El sexto riesgo es la complejidad oculta.Puede que los usuarios no se den cuenta de que interactúan con un proxy en vez de con un contrato sencillo e inmutable.El séptimo riesgo es la captura de la gobernanza.Un atacante puede influir en el proceso de actualización mediante poder de voto, acceso administrativo o ingeniería social.El octavo riesgo es que las herramientas no interpreten correctamente el contrato.Es posible que los exploradores de blockchain, las wallets y los indexadores no muestren correctamente los detalles de un proxy personalizado o no estándar.

Cómo comprobar un contrato proxy antes de interactuar

Los usuarios deberían comprobar primero si un explorador de blockchain identifica la dirección del contrato como un proxy.Deberían buscar la dirección de la implementación actual.Deberían verificar si el código fuente del contrato de implementación está publicado y verificado.Deberían comprobar si la implementación ha cambiado recientemente.Deberían revisar quién controla el administrador del proxy o la autoridad de actualización.Deberían comprobar si las actualizaciones requieren una multisig, una DAO, un bloqueo temporal o una única clave privada.Deberían comparar las fechas de las auditorías con las fechas de despliegue de las implementaciones.Deberían leer la documentación oficial para entender si el contrato está diseñado para poder actualizarse.No deberían dar por hecho que el contrato es inmutable solo porque no haya cambiado la dirección del proxy.Para realizar depósitos importantes, los usuarios deberían considerar la revisión del proxy como parte de la diligencia debida habitual.

Buenas prácticas para desarrolladores

Los desarrolladores deberían utilizar frameworks de proxies bien revisados en vez de escribir lógica proxy personalizada sin una revisión experta.Cuando proceda, deberían seguir estándares como ERC-1967 para que las herramientas puedan inspeccionar el estado del proxy.Deberían proteger las funciones de actualización mediante controles de acceso sólidos.Para las autoridades de actualización de gran valor, deberían utilizar wallets multisig, bloqueos temporales o contratos de gobernanza.Deberían escribir con cuidado las funciones de inicialización e impedir que se ejecuten más de una vez.Deberían comprobar la estructura de almacenamiento antes de cada actualización.Nunca deberían reordenar, eliminar ni cambiar variables de almacenamiento existentes sin entender las consecuencias.Deberían verificar los contratos de implementación en los exploradores de blockchain.Antes de los cambios importantes, deberían publicar anuncios de actualización, auditorías y explicaciones técnicas.Deberían supervisar los eventos de actualización y estar preparados para responder rápidamente si una actualización falla.

Buenas prácticas para los usuarios

Los usuarios deberían entender que un proxy actualizable no es lo mismo que un contrato inteligente completamente inmutable.Antes de depositar cantidades importantes, deberían comprobar quién puede actualizar el proxy.Deberían comprobar si las actualizaciones se retrasan mediante un bloqueo temporal.Deberían revisar si la implementación más reciente está verificada y auditada.Deberían actuar con cautela si el administrador del proxy está controlado por una única wallet desconocida.Deberían supervisar los eventos de actualización de los protocolos en los que tengan posiciones importantes.Deberían evitar aprobar permisos ilimitados para tokens en contratos actualizables, salvo que entiendan el riesgo.Deberían revocar las aprobaciones que ya no necesiten después de utilizar un protocolo.Deben recordar que una actualización puede cambiar el comportamiento futuro, aunque el comportamiento anterior pareciera seguro.Deberían considerar los contratos proxy sistemas flexibles que requieren evaluar continuamente la confianza.

Malentendidos habituales sobre los contratos proxy

Un malentendido es creer que un contrato proxy es automáticamente inseguro.Un contrato proxy puede ser seguro si utiliza un patrón probado, buenos controles de acceso, una gobernanza sólida, auditorías y actualizaciones transparentes.Otro malentendido es creer que un contrato proxy es automáticamente seguro porque utiliza un framework popular.Incluso un proxy estándar puede ser peligroso si la implementación es maliciosa o el administrador se ve comprometido.Otro malentendido es creer que la dirección del proxy contiene toda la lógica que los usuarios deben revisar.En realidad, la lógica importante de la aplicación suele estar en el contrato de implementación.Otro malentendido es creer que una auditoría siempre cubre el código actual.Si el proxy se ha actualizado, es posible que la auditoría antigua no cubra la nueva implementación.Otro malentendido es creer que los proxies mínimos siempre son actualizables.Muchos proxies mínimos son simplemente clones baratos que reenvían las llamadas a una lógica fija.

Preguntas frecuentes

¿Qué significa contrato proxy?

Un contrato proxy es un contrato inteligente que reenvía llamadas a otro contrato, normalmente para que el sistema pueda mantener la misma dirección y el mismo almacenamiento mientras cambia la lógica de implementación.

¿Por qué utilizan contratos proxy los proyectos cripto?

Los proyectos utilizan contratos proxy para admitir actualizaciones, corregir errores, añadir funciones, reducir las fricciones de migración, mantener direcciones estables y desplegar de forma eficiente muchos contratos similares.

¿Un contrato proxy es actualizable?

Muchos contratos proxy son actualizables, pero no todos; algunos proxies mínimos apuntan a una lógica fija.

¿Qué es un contrato de implementación?

Un contrato de implementación es el contrato que contiene la lógica que ejecuta el proxy mediante el reenvío de llamadas o

delegatecall
.

¿Qué es delegatecall en un contrato proxy?

delegatecall
es una operación de la EVM que permite a un proxy ejecutar el código de una implementación en el contexto de almacenamiento del propio proxy.

¿Qué es ERC-1967?

ERC-1967 es un estándar que define posiciones de almacenamiento concretas para datos del proxy, como las direcciones de implementación, administrador y beacon.

¿Qué es un proxy transparente?

Un proxy transparente es un patrón de proxy actualizable que separa las llamadas de actualización del administrador de las llamadas normales de los usuarios para reducir el riesgo de conflictos entre funciones.

¿Qué es un proxy UUPS?

Un proxy UUPS es un patrón de proxy actualizable en el que la lógica de actualización se gestiona en el contrato de implementación y no principalmente en el proxy.

¿Qué es un proxy beacon?

Un proxy beacon obtiene la dirección de su implementación de un contrato beacon, lo que permite actualizar varios proxies a la vez al cambiar el beacon.

¿Qué es un proxy mínimo?

Un proxy mínimo es un contrato clon pequeño, a menudo basado en ERC-1167, que reenvía llamadas a una lógica de implementación compartida para reducir el coste de despliegue.

¿Son arriesgados los contratos proxy?

Sí. Los contratos proxy pueden ser arriesgados si la autoridad de actualización es débil, la estructura de almacenamiento es incorrecta, la inicialización no es segura o los usuarios no entienden que la lógica puede cambiar.

¿Cómo puedo comprobar si un contrato es un proxy?

Puedes consultar en un explorador de blockchain las etiquetas de proxy, las direcciones de implementación, las posiciones de almacenamiento ERC-1967, el código fuente verificado y los eventos de actualización.

Conclusión

Un contrato proxy es un patrón de diseño de contrato inteligente que separa la dirección con la que interactúan los usuarios y el estado almacenado de la lógica que ejecuta el comportamiento del contrato.Este patrón se utiliza mucho en el ámbito cripto porque permite actualizar contratos inteligentes sin obligar a los usuarios y las integraciones a cambiar a una dirección nueva.

El proxy recibe llamadas, conserva el almacenamiento y reenvía la ejecución a un contrato de implementación, a menudo mediante

delegatecall
.

Estándares como ERC-1967, ERC-1822 y ERC-1167 ayudan a organizar los diseños de proxy más habituales, incluidos los proxies transparentes, UUPS, beacon y mínimos.Los contratos proxy ofrecen ventajas importantes, como la capacidad de actualización, la continuidad del estado, la estabilidad de las integraciones y un despliegue de clones más económico.También introducen riesgos importantes, como actualizaciones maliciosas, colisiones de almacenamiento, contratos sin inicializar, claves administrativas comprometidas, gobernanza poco clara y auditorías desactualizadas.Para los desarrolladores, un contrato proxy debe considerarse un componente arquitectónico de alto riesgo que requiere un diseño, pruebas, controles de acceso y documentación pública cuidadosos.Para los usuarios, un contrato proxy debe revisarse de forma distinta a un contrato normal e inmutable, ya que la lógica que hay detrás puede cambiar con el tiempo.La forma más sencilla de entender un contrato proxy es que mantiene la misma dirección on-chain y permite sustituir el código que hay detrás en condiciones controladas.Esta flexibilidad puede hacer que los sistemas cripto sean más seguros y fáciles de mantener, pero solo si el poder de actualización es transparente, limitado y se gobierna cuidadosamente.
¿Retroceso u oportunidad?
¿Retroceso u oportunidad?¿Retroceso u oportunidad?
$2400M en entradas a ETF de BTC pese a liquidaciones