Compartir este artículo

Un error en Ethereum devuelve los contratos inteligentes a la mesa de dibujo

Un pequeño error de Solidity ha provocado un gran debate entre los desarrolladores de Ethereum .

Los errores son una parte normal del software, pero en Ethereum pueden ser excepcionalmente peligrosos.

Esa puede ser la conclusión de un error en el lenguaje de programación Ethereum encontrado esta semana que afecta a un estilo específico de contrato inteligente y, debido a cómo funciona Ethereum (promete que las aplicaciones se ejecutarán exactamente como están programadas), la mayoría de los contratos afectados no se pueden eliminar ni cambiar.

CONTINÚA MÁS ABAJO
No te pierdas otra historia.Suscríbete al boletín de Crypto Daybook Americas hoy. Ver Todos Los Boletines

En resumen, los propietarios de contratos inteligentes descentralizados (aquellos que no pueden ser actualizados por un ONE propietario) no pueden hacer nada para solucionar el error.

Dos días después de lainforme de errores Se emitió un error y los desarrolladores implementaron una corrección en la versión 0.4.4 de Solidity. Sin embargo, el error afecta algunas direcciones y tipos de datos en estos contratos, por lo que aún no se pueden modificar con la actualización.

La buena noticia es que es posible que el error no haya afectado a muchos contratos inteligentes.

El creador de Solidity, Christian Reitwiessner, dijo a CoinDesk que realizó un análisis "semiautomático" de cada programa de Ethereum enumerado por un explorador de bloques popular y descubrió que de 12.000 contratos, solo cuatro eran explotables.

Reitwiessner afirmó que ninguno de estos contratos contiene ether, ya que probablemente se usaron con fines de prueba. Sin embargo, cabe destacar que no todos los contratos se muestran en Etherscan, el explorador de bloques seleccionado. (Hay más de 200 000 contratos en total, por lo que es difícil determinar la seguridad de los fondos restantes).

En general, parece ser una falla menor en comparación con The DAO, el ejemplo más notable de un contrato inteligente que no funciona según lo previsto. Sin embargo, generó debate sobre lo que podría suceder en el caso de otros errores importantes, dado que no todos los contratos inteligentes tendrán un propietario central que pueda actualizarlos si algo sale mal.

Un observador en las redes sociales, por ejemplo, argumentóque podría ser un "gran montículo en la ladera de una gran montaña" de problemas similares.

Una de las ideas más radicales para solucionar este problema es permitir que los contratos de Ethereum se actualicen a corto plazo, de modo que los propietarios tengan alguna forma de desactivar o modificar el código en caso de un contratiempo. Sin embargo, el temor es que esto pueda significar eliminar lo que hace único a Ethereum (u otras plataformas descentralizadas).

Loi Luu, estudiante de doctorado de la Universidad Nacional de Singapur, dijo que sería mejor para Ethereum si los usuarios aprendieran a implementar contratos inteligentes seguros de la manera difícil, de manera descentralizada.

Luu dijo:

Personalmente, no creo que sea buena idea. Va en contra de todo aquello para lo que están diseñados los contratos inteligentes. Si Ethereum es una red beta, que los contratos inteligentes fracasen y que la gente Aprende la lección.

Pero aunque los comentarios de Luu sugieren que puede no ser una buena idea hacer que todos los contratos sean actualizables, hay algunas formas de prepararse para posibles errores futuros, especialmente mientras Ethereum sigue siendo una Tecnología nueva.

Solucionando el problema

Los programas escritos en lenguajes de alto nivel y fácil lectura de Ethereum, como Solidity o Serpent, se compilan en código a nivel de byte antes de añadirse a la cadena de bloques. El problema residía en la Tecnología de compilación.

Para solucionar el problema, Reitweissnerrecomendado Que los desarrolladores hagan dos cosas. ONE, si compilan un nuevo contrato, deben actualizar a la nueva versión de Solidity para evitar el error.

La segunda forma de evitar el problema es el ejemplo más curioso, ya que requiere actualizar o desfinanciar los contratos inteligentes que ya están implementados, algo que quizás no esperes que sea posible con Ethereum.

Reitwiessner profundizó en este consejo, explicando que hay dos tipos de contratos: controlados centralmente y descentralizados, donde ONE tiene "privilegios especiales".

El primer tipo probablemente ofrece algún mecanismo de actualización o una forma de retirar fondos del contrato.

El segundo tipo es más complejo. Por otro lado, dado que los contratos inteligentes de Ethereum sin confianza no se pueden eliminar ni modificar una vez implementados, los desarrolladores no pueden hacer mucho si no usaron un contrato inteligente centralizado desde el principio.

Sin embargo, Reitwiessner dijo que los desarrolladores pueden protegerse contra problemas futuros (como los de Solidity) haciendo un par de cosas.

Mi recomendación para este tipo de contratos sería KEEP a corto plazo, para minimizar los posibles efectos negativos, o realizar un análisis formal adecuado del código de bytes del contrato. Actualmente estamos desarrollando herramientas para facilitar este proceso, afirmó.

Contratos actualizables

Sin embargo, existen algunas formas de evitar este problema.

Hudson Jameson, responsable de relaciones externas de la Fundación Ethereum, describió una forma de actualizar los contratos inteligentes que potencialmente podrían descentralizarse, argumentando que agregar una forma de actualizar el código en vivo es una necesidad.

"La sensación general entre nuestros desarrolladores es que en esta etapa inicial es importante contar con mecanismos de seguridad en el código para poder desactivar o actualizar de forma segura contratos de gran valor", afirmó.

Jameson describió algunas posibles "medidas de seguridad" para los contratos inteligentes, en las que los propietarios pueden actualizar sus contratos incluso después de que se hayan implementado en Ethereum, o en las que los contratos inteligentes pueden detectar cuando algo sospechoso está sucediendo.

Dijo que no necesariamente necesitan estar centralizados ni bajo el control de un ONE propietario. Por ejemplo, se podría tener un contrato inteligente que limite la cantidad de un activo que se puede retirar a la vez.

"Entonces, si un atacante intenta vaciar el contrato de fondos o un activo, puede desencadenar una respuesta descentralizada, como bloquearlos y notificar a otras personas que usan el contrato que es posible que deban retirar sus fondos", dijo.

Describió algunos otros métodos, incluida la detección de piratería, interruptores de apagado y transacciones con múltiples firmas en las que más de una persona debe firmar una transacción antes de que se pueda dispensar ether.

Pensando en el futuro

Los contratos inteligentes en Ethereum Classic (el grupo que se separó de Ethereum debido a un desacuerdo ideológico) también se ven afectados por el error, ya que su cadena de bloques se basa en el mismo conjunto de herramientas.

Pero según su organizador principal, Arvicco, los desarrolladores están explorando una forma diferente a largo plazo de desarrollar un lenguaje de programación que sea más resistente a los errores.

"Una de las formas posibles de avanzar es trasladar el desarrollo del lenguaje de contratos inteligentes del paradigma objeto/procedimental al paradigma funcional", afirmó.

Cualquiera que sea la posible solución, la discusión implica que los desarrolladores de Ethereum no deberían esperar que sus contratos inteligentes funcionen sin consecuencias potencialmente peligrosas todavía, lo que puede o no ser totalmente evidente para aquellos que ya implementaron el código en la red.

En cuanto a Solidity en particular, otro error imparable podría afectar potencialmente a otros contratos inteligentes en el futuro.

Reitwiessner señaló que siempre es posible que un compilador introduzca un error y es posible que Solidity o Serpent (el otro lenguaje de contrato inteligente de Ethereum) tengan otras fallas no descubiertas.

Sin embargo, señaló que en más de dos años de desarrollo, este fue el primer error grave encontrado en el lenguaje del contrato inteligente.

Imagen de construcciónvía Shutterstock

Alyssa Hertig

Alyssa Hertig, periodista y periodista especializada en Bitcoin y la red Lightning, colabora en CoinDesk . Su trabajo también ha aparecido en VICE, Mic y Reason. Actualmente escribe un libro que explora los entresijos de la gobernanza de Bitcoin . Alyssa posee algunos BTC.

Alyssa Hertig