¿Por qué se pueden actualizar los contratos inteligentes? ¿Qué son los contratos proxy, los permisos de administrador y sus riesgos?

🔄 El código de la blockchain no se puede modificar. Entonces, ¿por qué se pueden actualizar los contratos inteligentes?
Lo habitual no es modificar el código del contrato original, sino dividir el sistema en dos partes:
Contrato proxy: conserva la dirección de acceso de los usuarios, los saldos y los datos de estado
Contrato de implementación: proporciona la lógica de negocio real

Los usuarios interactúan siempre con el contrato proxy; este ejecuta el código del contrato de implementación mediante delegatecall, pero el entorno de ejecución, el almacenamiento y los saldos siguen perteneciendo al proxy. Para actualizarlo, el administrador solo tiene que cambiar la dirección de implementación registrada en el proxy de V1 a V2.

Entre los patrones habituales se incluyen:
Transparent: el mecanismo de actualización y administración está en el lado del proxy
UUPS: la lógica de actualización está en el contrato de implementación; es imprescindible restringir estrictamente _authorizeUpgrade
Beacon: varios proxies consultan el mismo Beacon; al actualizarlo, se puede cambiar simultáneamente la implementación de esos proxies

Los mecanismos de actualización facilitan la corrección de vulnerabilidades y la incorporación de funciones, pero los permisos de actualización también pueden modificar las reglas de comisiones, congelación, acuñación y transferencias. Por eso, es importante fijarse en lo siguiente:
Quién tiene permisos de actualización (firma única, multifirma, bloqueo temporal o DAO)
Si el nuevo contrato de implementación tiene el código fuente público y ha sido auditado
Si el diseño del almacenamiento es compatible (cambiar el orden o el tipo de las variables puede dañar los datos antiguos)
Si la función de inicialización solo puede ejecutarse una vez y si el contrato de implementación está bloqueado
Si los eventos de actualización se hacen públicos y se da tiempo a los usuarios para revisarlos

⚠️ Que sea actualizable no significa que no requiera confianza. Aunque la dirección del proxy no cambie, las reglas del sistema las determina el código de implementación al que apunta en ese momento.

Avance del próximo episodio|Viernes · Curso de tecnología de trading · Episodio 006
«¿Qué es el ATR? ¿Cómo usar la volatilidad para fijar un stop loss en lugar de un porcentaje fijo?»