¿Cómo editar un contrato que ya se ha implementado? [duplicar]

He estado escribiendo mis primeros contratos. Entonces, según tengo entendido, una vez que escribe, compila e implementa su contrato, la única forma de interactuar con ese contrato es a través de algo como web3.js y las Definiciones ABI dentro del contrato mismo.

Mi pregunta es: ¿Cómo se actualiza el contrato en sí mismo después de que se haya implementado? ¿Qué sucede si algo salió mal o desea realizar mejoras dentro del código del contrato?

¿Es esto posible, o algo que necesita configurar a través de las definiciones de ABI en primer lugar? Parece difícil que sepa qué esperar en el futuro, pero, de nuevo, tal vez estoy pensando en esto completamente mal. Cualquier ayuda sería muy apreciada.

Respuestas (1)

La respuesta corta es que el código del contrato es inmutable, por lo que no puede actualizar sin destruir el contrato e implementar uno nuevo, en cuyo caso se perderá cualquier estado y los usuarios, otros contratos o interfaces de usuario deberán interactuar con otro contrato.

Sin embargo, hay varios patrones que le permiten apuntar a una nueva versión y, opcionalmente, mantener el estado, por ejemplo: