▷ Contratos inteligentes: las desventajas

¿Qué es el llamado "desbordamiento de contador" y por qué debería saberlo?

¿Estás interesado en los contratos inteligentes? ¿Sabes qué es un desbordamiento de contador? De hecho, tal desbordamiento es un problema de programación y un contrato inteligente no es más que un simple programa. ¡Entonces descubrirás por qué definitivamente deberías saber más al respecto!


Falla de sistema


Si un entero sin signo se almacena en una celda de memoria de un solo byte, solo puede registrar o aceptar valores en el rango de 0 a 255. Si no se cumplen otras condiciones, significa que 255 + 1 = 0 y 0 - 1 = 255. Así es como la mayoría de los procesadores modernos procesan los datos.


¿Querés abrir una cuenta gratis en Binance?  Pulsa Aquí


En muchos lenguajes de programación modernos, el programa mismo controla si se ha producido un desbordamiento durante las operaciones aritméticas o no. Si es así, es muy probable que esta no fuera la intención original del programador. Por lo tanto, el programa debe interrumpirse en este punto y debe asegurarse de que no surjan errores como resultado.


¿Qué tienen que ver los contratos inteligentes con eso?

En los contratos inteligentes para Ethereum, dicho control no es necesario en el proceso de procesamiento de dinero. En otras palabras, si no tiene tokens y envía un token a un amigo, obtendrá un billón de tokens. Obviamente, el programa debe interrumpirse de inmediato y cancelarse la transacción incorrecta.


Por qué los desarrolladores de Ethereum implementan su aritmética de esta manera es un misterio. Sin embargo, para que las reglas universales de matemáticas humanas se apliquen a los contratos inteligentes, se deben agregar más de 100 líneas de código a cada contrato inteligente que contenga las funciones normales de suma, multiplicación, etc.


De lo contrario, con un billón de fichas no habría límites para la imaginación y las posibilidades. Los estafadores pueden comprar tantos Bitcoins y Ethereums como quieran en los intercambios de criptomonedas de esta manera.


Este escenario no es puramente teórico y de hecho ya ha sucedido varias veces con diferentes tipos de moneda. Por lo general, aprendemos sobre el problema del código después de que el perpetrador ya utilizó el truco a su favor y salió del campo con los bolsillos llenos. Pero incluso después de eso, no se puede hacer nada: porque los contratos inteligentes están escritos en piedra y no se pueden cambiar ni reparar.


Desbordamiento y Bitcoin

Para ser honesto, el problema del desbordamiento del contador no se limita solo a Ethereum: Bitcoin tuvo el mismo problema mucho antes.


El 15 de agosto de 2010, tal desbordamiento de contador resultó en un total de 184 mil millones de Bitcoins acreditados en dos billeteras de Bitcoin, una, digamos, una noticia menos buena para los fundadores. Ellos (es decir, Satoshi Nakamoto) cambiaron rápidamente el código, arreglaron el error, restablecieron el historial financiero y fingieron que no había pasado nada.


Si, por ejemplo, hubiera comprado bitcoins por valor de USD 10,000 en este día específico, este llamado retroceso significaría que los bitcoins encontrarían el camino de regreso a su vendedor, pero el dinero correspondiente no volvería al comprador. Y si se llevara a cabo una reversión ahora y no en 2010, las consecuencias serían mucho más devastadoras, porque actualmente se realizan transacciones de Bitcoin por valor de alrededor de 5 mil millones de dólares estadounidenses todos los días.


Los casos anteriores y otros muestran que la cadena de bloques solo es inmutable si todo va según lo planeado. De lo contrario, tanto el plan original como la cadena de bloques se pueden cambiar.


Volver a contratos inteligentes

La decisión de los desarrolladores de Ethereum parece bastante extraña a primera vista: parece que han colocado deliberadamente pequeñas trampas para los programadores de contratos inteligentes. Estos deben tener mucha experiencia o estar enfocados (o ambos) para evitar que ellos mismos o sus inversores pierdan todo su dinero de la noche a la mañana. Esta es otra razón por la que el código de contrato inteligente necesita una revisión cuidadosa.