Cómo Ethereum perdió $ 300 millones de dólares

En mayo de 2016, un proyecto Ethereum llamado DAO o "Organización Autónoma Descentralizada" pudo recaudar $ 110 millones de dólares, convirtiéndose en la campaña de crowdfunding más grande no solo en ICO, sino también en el mayor crowdsourcing en la historia de la humanidad.

Solo dos meses después de su lanzamiento, se encontraron una serie de vulnerabilidades en su software, y los piratas informáticos pudieron robar más de $ 50 millones de dólares en Ether (moneda de Ethereum), lo que hizo que el precio de Ether cayera de $ 20 a $ 13 por moneda.

El truco fue tan significativo que literalmente dividió a la comunidad Ethereum. Algunos querían que los hackers guardaran el dinero y otros no. Entonces la decisión fue dividir a Ethereum en dos fichas, a través de un evento llamado "hard-fork". Aquellos que no quisieron revertir las transacciones antes del hack se convirtieron en "Ethereum Classic" o ETC y aquellos que revirtieron los efectos del hack fueron parte de "Ethereum" o ETH.

Un año después, en julio de 2017, un cliente de Ethereum con el nombre de Parity (producido por las tecnologías Parity ) perdió aproximadamente $ 30M en Ether por un error que permitió que Ether, en la billetera multidireccional de paridad, se diera a otras cuentas. Sin embargo, dado que el exploit fue descubierto por personas benévolas, se devolvió el dinero y se alentó a Parity a realizar una auditoría de seguridad de su código. Sin embargo, parece que no lo hicieron y se encontró otro exploit (muy similar) el 7 de noviembre que congeló más de $ 300M en ETH en billeteras multidireccionales de paridad.

El truco de paridad de $ 300M

El poder de cómputo es caro en Ethereum. Entonces, los creadores de Parity decidieron manejar las transacciones de billetera a través de una versión más ligera de su contrato, llamada un talón, que reenvió todas las llamadas de contrato a un contrato maestro. Sin embargo, hubo un error en la implementación que podría cambiar la propiedad del contrato maestro. Los desarrolladores también tenían una cláusula de autodestrucción dentro del contrato.
Un usuario desconocido por el seudónimo "devops199" encontró esta vulnerabilidad y cambió la propiedad del contrato maestro, y luego activó la autodestrucción. Como destruyó el contrato maestro, también se destruyó todo el código de los contratos de stub. Causando que todos los fondos estén bloqueados.
Para ser claros, la vulnerabilidad fue un error de Parity, y no una vulnerabilidad del protocolo de Ethereum en sí.

En términos técnicos:

Las carteras de paridad tenían carteras multidireccionales normales en las que cada nuevo usuario implementa un nuevo contrato con una copia completa del código. Para reducir las tarifas de transacción, la paridad cambió y la nueva implementación de billetera tiene un contrato de código auxiliar que reenvió todas las llamadas de código de contrato a un contrato maestro utilizando una función de llamada de delegado en lugar de tener una copia completa del código. Esto permite que el contrato maestro ejecute la pieza de código requerida en el contexto del contrato de stub.
Sin embargo, la paridad no eliminó la función de autodestrucción en el contrato maestro (esta función tiene sentido si fue solo un contrato creado para un usuario en particular que ya no desea usarlo, pero no cuando este código de contrato se comparte entre todos los usuarios). La paridad, además, no estableció la propiedad contractual del contrato maestro. Esto permitió a alguien establecerse como propietario y luego llamar a la función de autodestrucción .
Esta acción destruyó el código utilizado por todos los contratos de stub desplegados desde el 20 de julio. Por lo tanto, los stubs no tienen acceso a funciones que les permitan retirar el Ethereum que contienen bloqueando de forma indefinida. Por lo tanto, el cambio en el diseño del trozo maestro que fue la causa raíz del parche multisig anterior de Parity también causó este error muy caro.

Conclusión: ¿qué sigue?

Incluso si volvemos a utilizar Ethereum, en una nueva forma de Ethereum, no habrá una forma garantizada de recuperar estos fondos. Desafortunadamente, parece que tiene que haber un nuevo tipo de tenedor, o el dinero estará bloqueado para siempre. Este es el beneficio y el problema de los contratos inteligentes, y la inflexibilidad de Blockchain.
Curiosamente, el precio del éter no se ha desviado mucho desde el hack. Lo que puede mostrar que hay más confianza en la red que nunca.

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now