-
Las versiones antiguas de Geth contendrían fallas de consenso en la red.
-
El error se había corregido hace cinco versiones, pero los clientes debían actualizar.
El ecosistema alrededor del proyecto Ethereum amaneció de golpe este miércoles tras una división en la cadena. La causa del chain split sería por las demoras en la actualización de los clientes de sus nodos. Uno que destaca es el de la empresa Infura que, según se conoció, corría una versión antigua del cliente Geth.
La situación fue descrita por el desarrollador de Blockchair, Nikita Zhavoronkov, al decir:
«En algún momento, los desarrolladores de Ethereum introdujeron un cambio en el código que llevó hoy a una división de la cadena a partir del bloque 11234873 (07:08 UTC). Aquellos que no han actualizado (@Blockchair, @infura_io, algunos mineros y muchos otros) se atascaron en una cadena minoritaria (~ 30 bloques en 2 horas)».
El programador indicó que técnicamente se trató de un hard fork o bifurcación dura sin previo aviso. Además, cuestionó la situación al decir que se trataría de un «fracaso» para el consenso de Ethereum, lo que no debe subestimarse. Según su opinión lo ocurrido es el problema más grave que Ethereum ha enfrentado desde la debacle de DAO hace 4 años.
Maniobras de Infura sobre lo ocurrido en Ethereum
El error generó múltiples demoras y caída de servicios, ya que, en el caso de Infura, la compañía ofrece soporte a diversas empresas que no corren sus propios nodos, sino que utilizan sus servicios como proveedor tercerizado.
Infura emitió una alerta a las 4:12 de la madrugada (hora de Venezuela) en el que advirtió que habían registrado un «corte de servicio» para su API de Ethereum. A las 5:47 am Infura identificó el problema sin ofrecer detalles sobre lo ocurrido. Sin embargo, casi dos horas después indicó lo siguiente:
«La causa principal fue rastreada a varios componentes dentro de nuestra infraestructura que fueron bloqueados a una versión estable más antigua del cliente go-ethereum. (Esto) encontró un error de consenso crítico en el bloque 11234873, lo que afectó a varias versiones de Geth, incluyendo la 1.9.9 y la 1.9.13. Los componentes que funcionaban en 1.9.19 y posteriores no se vieron afectados. Se completará y compartirá una autopsia completa después de que se resuelva el incidente».
En medio de la recuperación del servicio, Infura informó a sus clientes que estaba limitando el tráfico en su puerta de enlace de la API para «acelerar la recuperación del servicio».
Servicios detenidos y reacciones de usuarios
El CEO del exchange Binance, Changpeng Zhao, publicó en su cuenta en Twitter que habían suspendido temporalmente los retiros, pero que los fondos estaban resguardados. Una hora después informó que tanto los depósitos como los retiros para los tokens ERC-20 se habían restablecidos.
El director de tecnología de la casa de cambio Bitfinex, Paolo Ardonio, hizo un llamado de atención al decir que los exchanges deben correr sus propios nodos de Ethereum. Sobre este punto el propio Zhao indicó en otro mensaje que ellos en Binance lo tienen, pero que no estaba «seguro de sí estará en una cadena huérfana».
En Reddit los usuarios también dieron a conocer sus puntos de vista colocando el resaltador sobre el tema de la centralización de servicios. Uno de ellos fue nice2yz quien alegó: «¿Qué pasó con la descentralización? Esto es vergonzoso para los servicios que no están dirigiendo sus propios nodos».
Otro que intervino en el debate fue eastsideski al decir que «hay muchas alternativas a Infura, pero la mayoría de las dapps (y aparentemente hasta los exchanges) han sido demasiado perezosos para cambiar. Esto es un buen llamado de atención».
Servicios informativos que siguen los precios en el mercado de criptomonedas como CoinMarketCap alertaron que Infura estaba experimentando problemas, lo que generó demoras en el reflejo de las cotizaciones. Al momento de escribir este artículo, ETH, el token nativo de Ethereum se cotizaba en 461 dólares por unidad, según el índice de precios de CriptoNoticias.