Intercambio de Ethereum Intercambio de Ethereum
Ctrl+D Intercambio de Ethereum
ads
Casa > SAND > Info

Error de actualización del cliente "Berlín" de OpenEthereum

Author:

Time:

Alex Stokes @ralexstokes:

Como habrá escuchado, un error en el cliente @OpenEthereum provocó la caída de algunos servicios críticos que sustentan la red Ethereum.

Reflexionemos sobre el trato que causó el accidente.

En primer lugar, me gustaría agradecer a todos los ingenieros que respondieron rápidamente al incidente y solucionaron el problema:

https://twitter.com/OpenEthereumOrg/status/1382719444833726470?s=20…

Además, no hice un seguimiento de todos los detalles yo mismo, los hechos importantes a continuación son presentados por el usuario eb en el servidor de discordia Eth R&D.

Comencemos con la transacción que provocó el error:

https://etherscan.io/tx/0x7006f38fa2e6654fae1a781aefc5885fe0cb8f778b1add10636eaf7e34279247

El mercado de Coinbase NFT ha agregado Ethereum NFT en OpenSea y LooksRare: Jinse Finance informó que el mercado de Coinbase NFT ha agregado OpenSea y LooksRare, y sus usuarios pueden ver Ethereum NFT en Coinbase NFT, LooksRare y OpenSea para operar a un mejor precio Comercio, y luego Coinbase también planea expandirse a otros mercados y cadenas de bloques. [2022/9/22 7:13:20]

Esta es una transacción de llamada de contrato, enviada desde el intercambio KuCoin, que distribuye ETH a muchas direcciones. La codificación ABI de los datos de la llamada para esta transacción era incorrecta, lo que finalmente provocó una división de la cadena. Puede echar un vistazo a los "Datos de entrada" de esta transacción en Etherscan.

Al llamar a sendEths en el contrato, debe proporcionar dos parámetros: uno es una matriz de longitud variable (matriz de tamaño dinámico) sobre la dirección de destino; el otro es una matriz de longitud variable sobre el monto de la transferencia (en wei); solo cuando los dos coinciden A qué dirección transferir cuánto dinero.

OpenSea lanzó una nueva función que puede distribuir automáticamente las "ganancias del creador": el 29 de julio, según el Twitter oficial, el mercado de NFT OpenSea lanzó una nueva función que puede distribuir automáticamente las "ganancias del creador". Cuando se vende el NFT del creador, el creador puede obtener un cierto porcentaje del precio de venta. Es decir, a estos creadores se les paga automáticamente cada vez que se transfiere un NFT de una billetera a otra después de la compra. Los creadores pueden establecer un porcentaje de hasta el 10 % y pueden agregar varias direcciones que acepten tarifas, aunque agregar varias direcciones puede aumentar los costos de gasolina para los compradores.

Sin embargo, OpenSea no admite las tarifas de los creadores transferidas directamente a los coleccionables de Solana NFT en la plataforma y debe configurarse o modificarse en la cadena. [2022/7/29 2:45:31]

Podemos analizar los datos de la llamada para ver qué salió mal: la primera línea (marcada con "" en Etherscan) indica que la lista de direcciones comienza en el byte 64 (línea ""). La segunda línea indica que la lista de montos de transferencia comienza en el byte 416 (línea "").

Equipo de seguridad: Encontró un informe sobre un error en Go-Opera en la red Fantom: Golden Finance News, según las alertas de CertiK, encontró un informe sobre un error en Go-Opera en la red Fantom que permitía a los atacantes drenar las billeteras del validador. El usuario de Twitter @0xNevermind afirmó que su billetera de validación de Fantom se había vaciado de 250 000 FTM (aproximadamente $75 000), el equipo informó el problema a la Fundación Fantom y proporcionó pasos sobre cómo reproducir y corregir el error, después de 7 días sin ninguna acción ni actualizaciones de el equipo de Fantom, se decidió hacer pública esta información para proteger a otros propietarios de nodos de Fantom. [2022/7/3 1:47:00]

Entonces, en general, queremos enviar una cierta cantidad de ETH a una dirección en pares, de arriba hacia abajo, a una dirección, parece sencillo.

Sin embargo, cuando comenzamos a recorrer la lista, primero saltamos al byte correcto de los datos de llamada, y Solidity ABI establece que la primera palabra de datos es la longitud de toda la matriz indeterminada.

The Sandbox y OpenSea fueron seleccionadas como las 100 empresas más influyentes de la revista Time: el 31 de marzo, según el sitio web oficial de la revista Time, la plataforma de juegos de metaverso The Sandbox, la plataforma comercial NFT OpenSea y el intercambio encriptado Paxful fueron seleccionados como "Time" la lista de 2022 de la revista de las 100 empresas más influyentes. [2022/3/31 14:28:42]

Esta es la fuente del error final: porque el valor en la llamada dada es "0x10" (¡nota, esto es hexadecimal!), pero la llamada de datos solo da 10 pares de dirección-valor. La codificación ABI correcta para los datos de esta llamada (completada en línea y línea) debe ser "0xA", no "0x10".

Es posible que haya adivinado lo que sucede entonces, podemos echar un vistazo a la traza de ejecución:

https://etherscan.io/vmtrace?txhash=0x7006f38fa2e6654fae1a781aefc5885fe0cb8f778b1add10636eaf7e34279247&type=parity

El volumen total de transacciones de OpenSea en el mercado NFT alcanzó un récord de 6 mil millones de dólares estadounidenses: según Jinse Finance, según los últimos datos, el volumen total de transacciones de OpenSea en el mercado NFT alcanzó los 6 mil millones de dólares estadounidenses (el número de comerciantes ha superado los 560.000), un récord, clasificándose entre las transacciones del mercado NFT Clasificado en primer lugar. En segundo lugar está Axie Infinity, con un volumen de transacciones actual de 2020 millones de USD (el número de comerciantes supera los 600 000); el tercero es CryptoPunks, con un volumen de transacciones de 1260 millones de USD (el número de comerciantes es 4856). Cabe mencionar que el volumen total de transacciones de la plataforma OpenSea en los últimos 30 días alcanzó los 4.030 millones de dólares estadounidenses, un aumento del 256,33 %. [2021/9/14 23:23:41]

El contrato atravesó con éxito las primeras 10 direcciones. Originalmente, el contrato debería dejar de ejecutarse en este momento, pero según la declaración de datos de la convocatoria, ¡todavía hay muchas direcciones! Entonces sigue adelante y ejecútalo.

Sin embargo, según la estructura de los datos de la llamada, la "dirección 11" es 0x10 para codificar la longitud de la lista, por lo que el contrato intenta enviar 0 ETH a la dirección 0x10.

Además, parece que cuando el contrato intenta leer datos de llamadas que no existen, devuelve 0 ETH; puede imaginar que el contrato cometió un error aquí, pero continúa enviando 0 ETH a los datos de llamadas que lee El otro 6 "direcciones" tomadas.

En este punto, puede notar que 0x10 puede ser una de nuestras llamadas "direcciones especiales", que está completamente dentro del alcance del contrato precompilado de EVM (el llamado "contrato precompilado" es un tipo especial de contrato, en el EVM hay implementaciones óptimas por ahí, pero compila como la mayoría de los contratos).

Y no esperamos que el contrato precompilado 0x10 devuelva ETH. De esta forma, se convierte en un agujero negro ETH. Sin embargo, esto no necesariamente causa ningún problema. ¿Qué causó exactamente que todo el cliente fallara?

La razón es que 0x10 es en realidad un contrato precompilado afirmado por EIP-2537 para el programa de criptografía de emparejamiento BLS, pero este EIP aún no se ha implementado en la red principal. Entonces, aunque puede interactuar con esta dirección, no hay ningún contrato en esta dirección en la red principal y no habrá más acciones.

Además, necesitamos un hecho para explicar esta división, que, como habrás adivinado, es la bifurcación dura "Berlín" (fue esta bifurcación dura la que trajo este problema a la superficie): cambió el consumo de gas en el EVM Método de medición cuantitativa.

Después de la implementación de EIP-2929, si realiza operaciones de almacenamiento de estado en la misma ranura de almacenamiento varias veces en una transacción, la primera ejecución consumirá más gas y las ejecuciones posteriores consumirán menos gas. En teoría, este cambio de precio reflejaría con mayor precisión el costo actual del acceso del cliente a los elementos de almacenamiento...

Además, tenga en cuenta que en todas las ejecuciones del lado del cliente, estos datos generalmente se almacenan en una capa de hardware más económica.

Ahora finalmente hemos encontrado el error de OpenEthereum en el bloque #12244294: el cliente incluye todas las precompilaciones implementadas como parte del manifiesto de acceso EIP-2929. (Nota del traductor: aquí debería ser "EIP-2930")

Dado que EIP-2537 ya está implementado en la mayoría de los clientes (¡y en un momento se propuso incluirlo en la actualización de "Berlín"!), OpenEthereum otorgó un descuento de gas a todas las transacciones que accedieron a 0x10.

Pero la gran mayoría de los clientes activos en la red no implementan EIP-2929 de esta manera, solo brindan descuentos de gasolina para transacciones que acceden a contratos precompilados activados, ¡y EIP-2537 pertenece a contratos precompilados que aún no se han activado! Por lo tanto, el cálculo del cliente de OpenEthereum de cuánto gas consumió la transacción divergió de otros clientes en la red.

Afortunadamente, @mhswende encontró rápidamente el error y @sorpaas ayudó a solucionarlo: https://github.com/openethereum/openethereum/pull/364

Todavía hay mucho que decir, y espero un mejor informe de tiempo de alguien con una mejor vista que yo.

Todo lo que puedo decir es que este error destaca los riesgos inherentes a las bifurcaciones duras y la importancia de continuar trabajando en la construcción de una infraestructura más resistente.

Los sistemas de un solo cliente que dependen del cliente OpenEthereum estuvieron caídos por un tiempo hoy, ya que el cliente no pudo mantenerse al día con la red después del bloqueo problemático. Como resultado, Etherscan se cayó.

Afortunadamente, el error no fue lo suficientemente grave como para causar una bifurcación de cadena importante, pero la posibilidad no está descartada. Podemos aprovechar las implementaciones multicliente para aumentar la resistencia (el multicliente en sí mismo es una gran fortaleza de nuestro ecosistema Ethereum) y empujar a sus proveedores de infraestructura a hacer lo mismo.

Hemos visto que la adopción en 2021 es más rápida que nunca y las perspectivas son muy prometedoras. Necesitamos aprender de este accidente y construir juntos un mejor Ethereum.

Tags:

SAND
Observación dorada | Los ETF de activos cifrados se enumeran juntos, y es posible que el ETF de EE.UU.no esté muy lejos

El impacto de los fondos cotizados en bolsa (ETF) en la industria de inversión tradicional ha tardado décadas en surgir.

Golden Hardcore | Pantera Capital: Bitcoin eventualmente aumentará 100,000 veces

Jinse Finance lanzó la columna Hardcore para brindar a los lectores introducciones o interpretaciones detalladas de proyectos populares.

Primer lanzamiento | "Ouyi te enseña a aprender la línea K" Sección 10: ¿Qué piensas de la posición objetivo del patrón de doble fondo?

Jinse Finance y Ouyi OKEx lanzaron videos básicos de K-line para los usuarios. Los usuarios aprenderán conocimientos relacionados con K-line a través de videos.

Error de actualización del cliente "Berlín" de OpenEthereum

Alex Stokes @ralexstokes:Como habrá escuchado, un error en el cliente @OpenEthereum provocó la caída de algunos servicios críticos que sustentan la red Ethereum.Reflexionemos sobre el trato que causó el accidente.En p.

Remodelación de la nueva era de DeFi: protocolo innovador SumSwap que incluye participación

La generación de ingresos es flujo, la riqueza es stock, el flujo es la base del stock, el stock es la atribución del flujo.

¿Por qué se dice que Estados Unidos tiene una mayor probabilidad de emitir con éxito un ETF de Bitcoin este año?

Bitcoin ha atraído mucha atención, con algunas figuras prominentes que se han convertido en sus partidarios.

¿Qué países están en auge en la minería de Bitcoin?

La minería es la base fundamental de otras criptomonedas como Bitcoin. La minería de Bitcoin es un mecanismo para asegurar la red.

ads