Ethereum está condenado, según expertos de Bitcoin

Imprimir Más

Como algunos han notado, no entendí muy bien a Ethereum cuando escribí el artículo anterior que lo mencioné. Desestimé a Ethereum simplemente como otra altcoin con campanas y silbatos adicionales. Sin embargo, había una gran oportunidad escondida allí, abierta a cualquiera que entendiera el sistema lo suficientemente bien. Ojalá lo hubiera examinado más y más profundamente porque ahora alguien que hizo eso, alguien a quien ahora admiro, está sentado en tres millones de éteres. Actualización: la nota probablemente no es del hacker real. Todavía estoy de acuerdo con su argumento.

Esta persona ha desarrollado una nueva estrategia de inversión para la era de los contratos inteligentes: simplemente busca una manera de explotar el contrato inteligente que hace que envíe efectivo a su cuenta, y luego invertir en él para controlarlo de una manera que extrae el dinero.

Ethereum es realmente diferente de otras altcoins. Si hubiera examinado más detenidamente a Ethereum, podría haber notado que la economía no era el único tema que los desarrolladores de Ethereum no entendían. Tampoco entienden la ley y la ingeniería de software. Crearon una situación en la que se esperaba que surgieran errores en un entorno en el que los errores son legalmente explotables. Eso es el cielo de los hacker.

Imagine a un nuevo programador de ojos brillantes y cola tupida escribiendo su primer gran contrato: “Ahora veamos aquí…” piensa. “Estoy usando la función enviar. Eso significa que tengo que buscar bloques de código que tengo escrito que un atacante podría intentar ejecutar en un bucle infinito hasta que no quede dinero. En primer lugar, ¿qué bloques de código posibles podrían hacerse para formar un bucle infinito? Podría ser cualquier parte que llame enviar, entremezclada con cualquier cosa que el atacante quiere llamar entre… hmmm… “Tienes que pensar esto cada vez que le envíes dinero a alguien. Es totalmente ridículo esperar que alguien haga esto de manera confiable. La única diferencia es que un novato fallaría cada vez que intentara escribir un contrato, mientras que un experto ni siquiera se molestaría en intentarlo.

Ahora describí este problema para dejar muy claro lo que está sucediendo, pero en Solidity, la función que he llamado f no es muy visible para el programador. Es un método llamado la “función predeterminada” que se puede definir en cada dirección. Se ejecuta automáticamente cuando envía a esa dirección. Entonces, si estuviera escribiendo hackMe en Solidity, no habría hecho referencia directa a la función f como escribí, pero se ejecuta de todos modos. Es muy fácil escribir hackMe en Solidity.

El manual sobre Solidez se abre con “La solidez es un lenguaje de alto nivel cuya sintaxis es similar a la de JavaScript”, como si fuera algo de lo que presumir. Pero aparentemente Solidity tiene mucho más que un parecido superficial con JavaScript. La solidez es como programar en JavaScript, excepto con su cuenta bancaria accesible a través del Modelo de Objetos de Documento.

Una señal de que nadie está preparado para escribir contratos inteligentes en Solidity es el hecho de que el equipo de desarrollo de Ethereum, las personas que diseñaron Solidity y DAO, ni siquiera pudieron arreglar su propia falla. No tienen la capacidad de abordar estos errores de forma correcta, y tampoco, en mi opinión, nadie más. Es posible escribir de manera confiable contratos inteligentes que funcionen correctamente, pero actualmente nadie sabe cómo hacerlo. Es poco probable que el equipo de desarrollo lo resuelva pronto porque todavía piensan que esto es solo un error en el DAO en lugar de un problema serio con todo su sistema. Si desea un contrato inteligente que realmente pueda usar, debe asegurarse de que esté libre de errores antes de implementarlo. no hay herramientas o métodos conocidos disponibles para los desarrolladores de Solidity que puedan proporcionar un nivel adecuado de certeza. Estas herramientas tardarán años en desarrollarse y, hasta que sean de uso común, no se debe confiar en ningún contrato inteligente de Ethereum. Ethereum está condenado.

Las implicaciones legales de este truco son más interesantes que el propio truco. Debido a que el código del DAO es un contrato legalmente vinculante, ¿cómo se puede argumentar para convencer a un juez de que cierto comportamiento del programa es realmente un error? El DAO proporciona nada más que su propio código para especificar cómo se supone que debe funcionar. Por ejemplo, no hay especificaciones en un lenguaje formal, o pruebas de su corrección. Si el equipo de Ethereum supiera cómo probar el software, podrían haber producido algo así, que también podría haber proporcionado pruebas que corroboren que cualquier error no fue intencionado.

Apoyo totalmente las acciones del atacante y desearía haberlo pensado primero. Sus éteres pueden perder su valor antes de que pueda venderlos para Bitcoin, pero también puede haber hecho una gran falta de éteres justo antes de ejecutar el ataque y ganó alrededor de $ 1 millón de esa manera.

¿Quieres invertir en Ethereum?

loading...