Los monstruos del bosque oscuro de Ethereum no son una broma. Estos bots pioneros pueden analizar llamadas y funciones de contratos inteligentes que nunca han usado en un contrato inteligente para obtener ganancias potenciales. Dada la falta general de comprensión de estos robots, nos embarcamos en un safari para aprender más sobre la condición y ver qué tan comunes son. Logramos "capturar" algunos bots front-end genéricos y analizar su comportamiento. Analizamos su eficiencia y la probabilidad de que una transacción sea "cazada". También probamos diferentes formas de esquivarlos. En general, frontrunning es el acto de ser el primero en obtener una transacción en la cola de ejecución antes de que ocurra una transacción futura conocida. Un ejemplo simple de frontrunning es la oferta de intercambio. Supongamos que alguien tiene la intención de comprar una gran cantidad de ETH en Uniswap, que es suficiente para hacer subir el precio de ETH. Una forma de beneficiarse de esta situación es comerciar antes de comprar grandes cantidades de ETH mientras el precio se mantiene bajo. Luego, después del aumento de precios, venda ETH para obtener ganancias. Además de este ejemplo de arbitraje, Frontrunning para muchas otras transacciones también podría ser valioso, incluidas liquidaciones, compras de NFT raros o errores simples del usuario. (Un valor extraído de una transacción o secuencia de transacciones se llama MEV). La delantera en Ethereum se implementa al ofrecer tarifas de transacción ligeramente más altas en las transacciones, incentivando a los mineros a clasificar antes cuando se ejecutan los bloques de construcción y las transacciones de mayor pago se ejecutan primero. Por lo tanto, si dos transacciones que se benefician de la misma llamada de contrato se colocan en el mismo bloque, solo la primera transacción obtendrá ganancias. Dan Robinson y Georgios Konstantopoulos describieron un intento de vanguardia en una publicación de blog sobre ETH is a Dark Forest en la que $ 12,000 cayeron en las garras de un "depredador" sofisticado. Un Predator está tan adelantado que puede rastrear cualquier transacción valiosa en el grupo de transacciones de Ethereum y obtener ingresos a través de Frontrunning. La historia de "Dark Forest" es tan "aterradora" que cuesta creerlo al principio. De hecho, tenemos razones para dudar de la existencia de tales "depredadores". ¿Cómo retirar fondos de Uniswap, una plataforma de arbitraje monitoreada de cerca por una gran cantidad de robots? ¿Podría ser un arbitrajista "regular"? A principios de este año, nuestro análisis en profundidad demostró lo contrario. Este no es un robot ordinario. Llama con éxito a una función de contrato que, hasta donde sabemos, nunca antes se había llamado. Los fondos fueron desviados a pesar de ofuscar la transacción a través de contratos inteligentes de proxy. Eso es bastante preocupante, por decir lo menos. La capacidad de monitorear cualquier transacción en un grupo de transacciones es un arma súper poderosa. De manera preocupante, algunos servicios están comenzando a ofrecer públicamente una capa comercial de "grupo oscuro". La capa de transacción del "grupo oscuro" no utiliza un servicio como Infura, o incluso un nodo privado, sino que envía la transacción directamente al minero y promete no propagar la transacción al resto de la red, manteniendo así la transacción a salvo de depredadores husmeando. Samczun y compañía usaron un método similar cuando intentaron extraer $9.6 millones de un contrato vulnerable. No es difícil imaginar que los mineros comiencen a usar los bots de Frontrunning y solo ofrezcan acceso seguro a aquellos que pagan una prima. A diferencia de otros elementos de Ethereum, como los contratos inteligentes que se pueden probar en un entorno de desarrollo o en una red de prueba, estos bots solo existen en la red principal de Ethereum. Aparte de algunas pruebas iniciales, no tiene sentido financiero para ellos intentar ejecutar transacciones de testnet. Además, no tienen que seguir las mismas reglas que todos porque su lógica está oculta. No sabemos cuándo estos depredadores Frontrunning decidieron atacar. Entonces, en cierto modo, rastrear a estos depredadores es como cazar animales raros. No queremos apuntar a cualquier favorito, sino solo al específico y generalizado. Para asegurarnos de que los Frontrunners que atrapemos sean Frontrunners normales "reales", necesitamos una trampa única. La trampa es un contrato recién creado, iniciado por una cadena secreta hash SHA256, con algunos fondos disponibles para la adquisición. Solo al proporcionar este secreto se pueden retirar los fondos bloqueados y los fondos se enviarán directamente al remitente de la transacción de retiro. La idea es enviar una transacción de "señuelo" que proporcione el secreto correcto, ver si alguien intenta replicarlo y luego proporcionar el secreto ellos mismos, obteniendo así fondos utilizables. Si alguien obtuvo los fondos antes de la transacción señuelo, significa que alguien puede analizar la transacción mientras aún está en el grupo de transacciones l, copiar su contenido relevante y proporcionar el secreto en sí. Curiosamente, ofrecerán un secreto que no sabían antes, un contrato que nunca antes habían visto, para obtener el dinero. Una parte importante de este experimento es comprender cómo funciona Frontrunner. Sin embargo, si alguien construye una máquina para hacer dinero, probablemente no se comparta en Github. Por lo tanto, solo podemos observar y aplicar ingeniería inversa al comportamiento de los delincuentes. Por lo general, hay dos partes para construir un favorito de uso general. El primer componente es una cuenta de Ethereum a la que se pueden enviar transacciones modificadas, con o sin un proxy de billetera inteligente. El segundo es el "backend", el cerebro de la operación, que en su mayoría ocurre fuera de la cadena. El operador utiliza algunas técnicas para examinar cada transacción en el grupo, analizarla, reemplazar sus parámetros (por ejemplo, la persona que llama tx) y determinar si tiene algún beneficio. Un bot racional no intentaría ingresar a una operación en la que el costo exceda la ganancia potencial. Las tarifas de transacción pueden sumar bastante, especialmente cuando se trata de tarifas de transacción. Por lo tanto, para atraer robots que muerdan el anzuelo, se requiere una ganancia mínima. Además, el tiempo también es crítico debido a la necesidad de analizar cada transacción (de las cuales hay muchas) en el grupo de transacciones. Se tarda un promedio de 12 segundos en minar un bloque de Ethereum. Si la tarifa de transacción para esta transacción es lo suficientemente alta, debe analizarse y reemplazarse lo suficientemente rápido antes de que llegue el siguiente bloque. Este es un proceso probabilístico, y es posible extraer un bloque inmediatamente después de que se transmite una transacción, lo que no da tiempo a los bots para analizarlo con éxito y transmitir una transacción en curso. Con estas consideraciones y algunas ideas, probamos cuánto tiempo le tomó al robot agarrar el anzuelo. Poner la trampa Nuestro contrato (el otorgante) tenía un saldo inicial de 0.035 ETH, que valía alrededor de $20 en ese momento. Esos fondos están disponibles para cualquiera que proporcione la preimagen correcta al hash almacenado en el contrato. Con el fin de obtener fondos y como un disparador para los depredadores, una cuenta separada (el obtentor) intentará retirar fondos proporcionando la "imagen de contrapartida" adecuada. Ronda 1: Llamar directamente al contrato Para asegurarnos de que nuestra trampa de referencia funcione, primero llamamos al contrato usando la cuenta getter. En el primer intento, con tarifas de transacción relativamente altas (establecidas por el marco ETH), logramos recuperar nuestros fondos. Esto podría deberse al hecho de que los márgenes son demasiado bajos para atraer a los depredadores, o porque los negocios se minan demasiado rápido para que reaccionen. Obviamente, este no es el resultado deseado, porque capturar al depredador es nuestro objetivo. Ronda 2: Deles tiempo para pensar En esta ronda, resolvemos los problemas que encontramos antes. Aumentamos la ganancia potencial y redujimos la tarifa de transacción, para que la transacción no se extraiga demasiado rápido, dando tiempo al bot para descubrirla. El contrato también agregó 0.04 ETH (un aumento de 0.005 desde antes). Esta vez, lo logramos. La transacción esperó unos 3 minutos antes de ser minada, sin obtener ningún valor del contrato. De acuerdo con la transacción interna del contrato, podemos encontrar que los fondos fluyen hacia otros. La transacción actual usa 25.000001111 Gwei (.000001111 Gwei es más alto que lo que usamos), y se extrajo en el mismo bloque que el intento de "obtención". Ahora que hemos logrado encontrar un bot (por algún costo), podemos extraer algunas ideas interesantes. Primero, las transacciones indican que las llamadas a los contratos no se ejecutan directamente. En lugar de simplemente copiar la transacción y enviarla a ciegas desde una cuenta propia, el bot la pasa a través de un contrato inteligente proxy que actúa como una billetera inteligente para ejecutar esas transacciones. Ahora podemos rastrear direcciones de transacciones anteriores y futuras para ver qué tan exitoso es el bot y cómo funciona. El contrato descompilado tiene dos funciones principales: "retirada", que básicamente entrega todos los fondos del contrato al operador del contrato. Otra función toma algunos argumentos: un contrato para llamar, una lista de argumentos y un argumento de valor pasado. A través de esta función, el contrato de proxy actúa como una billetera inteligente para el operador. Además de la capacidad de realizar llamadas a funciones externas, también puede garantizar que el saldo al inicio de la transacción sea al menos tan grande como el saldo al final de la transacción, de lo contrario se puede restaurar, evitando así posibles pérdidas. de fondos cuando llame a contratos desconocidos (a excepción de las tarifas de transacción, por supuesto). Usando Dune Analytics, podemos ver qué tan exitoso ha sido el bot desde mayo de 2018. Suponiendo que este bot en particular siempre emite transacciones usando el mismo proxy y la misma dirección de envío, podemos estimar que sus ganancias suman alrededor de 17 ETH (alrededor de $ 10k en el momento de este escrito). Ronda tres: ¿Qué tan inteligentes son? Ahora que estamos convencidos de que el bot nos está atacando, queremos probar si podemos extraer el cebo. (También hay una función de "recibir" en el contrato, que puede devolvernos el dinero). Implementamos el contrato ProxyTaker y llamamos a la función adecuada en un intento de retirar nuestros fondos. Debido al costo ligeramente mayor de recaudar fondos a través de un proxy, el contrato del otorgante tiene una cantidad ligeramente mayor de 0,055 ETH. He aquí que otro bot se apoderó de nuestro trato de inmediato. Esta vez fue aún más impresionante. El bot no solo pudo detectar nuestra transacción de retiro, sino que la identificó a partir de una llamada interna, ¡de un contrato completamente diferente! Esta hazaña se logró en un tiempo récord. Nuestras transacciones de retiro se extrajeron en segundos (al igual que el bot). La identidad del robot también es interesante. El contrato de bot es operado principalmente por esta cuenta. La cuenta publicó comentarios en Etherescan vinculándolo a un caso de piratas informáticos que intentaban extraer fondos de los usuarios de un contrato inteligente vulnerable de Bancor. Dado el mismo patrón de comportamiento de los bots (llamar a los agentes de la cuenta A y transferir fondos a la cuenta B) y la proximidad del incidente, es razonable suponer que los bots también estaban realizando una operación frontal generalizada contra los hackers blancos en este incidente. . Este robot es mucho más complejo que el anterior. No solo se enfoca en ETH, sino que también realiza varias transacciones de arbitraje. También tiene mucho más éxito en términos de los saldos de las cuentas de las que se recaudan los fondos. Actualmente, el saldo es de unos 300 ETH (unos 180 000 dólares en el momento de escribir este artículo). También podemos restar todas las entradas y salidas de la dirección del contrato para estimar su rendimiento, por un total de ~900 ETH. Esta es solo una estimación aproximada, ya que la cuenta puede haber realizado transacciones no relacionadas con su actividad principal. (Abajo hay una lista de todos los intercambios de bots con valores positivos). Ronda final: retiro exitoso Para hacer este desafío un poco más interesante, hicimos otro intento de ofuscación, esta vez usando un contrato proxy que solo nosotros podemos usar, un OwnedTaker. La configuración es similar a la tercera ronda. Contrato de subvención anexado 0,05 ETH. Los fondos también se nos devuelven en la misma transacción en lugar de permanecer en el contrato. En el primer intento, la transacción del contrato OwnedTaker tardó aproximadamente 1 minuto en extraerse y logramos retirar los fondos. El experimento se repitió, esta vez rellenando el contrato del donante con 0,06 ETH, el pago más alto que hemos usado hasta ahora, para asegurarnos de que el pago más bajo no fuera la razón de la falta de intentos de Frontrunning. Las tarifas de transacción también se establecen deliberadamente en un nivel relativamente bajo. La transacción esperó alrededor de 7 minutos, pero aun así los fondos se retiraron con éxito. Una combinación de agentes propios que solo permiten a los propietarios reenviar transacciones evita que los dos Frontrunners analicen con éxito los datos y obtengan ganancias por sí mismos. El requisito de que solo el propietario del contrato pueda ejecutar la llamada, o el hecho de que los fondos se envíen a un destino diferente al del contrato de llamada, ayuda a evitar intentos anticipados. Es probable que los bots piensen primero en la autopreservación; después de todo, están llamando a un contrato desconocido, que puede ejecutar código arbitrario. Es lógico pensar que si no se garantizan las ganancias, se evitarán riesgos innecesarios o pérdidas de costos de transacción. Entonces, ¿hemos ganado? Eso depende de cómo lo mires. Firmamos un nuevo contrato, y un secreto que solo nosotros conocemos. Está claro que los dos líderes que encontramos estaban ejecutando todas las operaciones en el grupo y, a juzgar por sus ganancias, lo estaban haciendo muy bien. ¿Por qué pudimos resistir (Frontrunning) la última vez? Difícil de decir. Podría ser que el bot no corriera el riesgo de comunicarse con el contrato autenticado, o que el hecho de que los fondos se transfirieran a otra dirección fuera accidental. Por supuesto, eso no significa que sea una forma de evitar a los Frontrunners por completo. Lo más probable es que haya bots más sofisticados al acecho en el grupo de operaciones que simplemente no están dispuestos a arriesgar una ganancia tan pequeña. En este breve experimento, pudimos demostrar que existen robots frontales de uso general y que son muy complejos. Por supuesto, sabemos que nuestros experimentos están lejos de ser completos o definitivos. Hay muchos otros bots con disparadores y modos de operación muy diferentes. Factores como el potencial alcista, los patrones de comunicación y la complejidad mínima (por ejemplo, los límites de las tarifas de transacción) pueden afectar la forma en que operan. Sin embargo, creemos que nuestro trabajo proporciona una prueba de concepto y arroja más luz sobre cómo funcionan estos robots front-end de uso general. La aterradora realidad en este momento es que si hay un contrato que genera una ganancia, cualquiera puede llamarlo, incluso si es muy vago, y hay una buena posibilidad de que algún bot de Frontrunning lo recoja. Por lo tanto, es crucial comprender estos robots y cómo funcionan para que podamos construir sistemas más seguros ahora y en el futuro. Proyectos como Flashbots intentan hacer esto democratizando la minería de MEV y convirtiéndola en un recurso público. Esperamos que este estudio ayude a que eso suceda.
Tags:
El paso atrás de ayer fue relativamente grande, y el más bajo cayó al soporte superior del rango de choque anterior de 4 horas. Después de tocarlo, se recuperó rápidamente por encima de los 30.
Esta ola de desastres monetarios para las monedas principales es muy fuerte. Algunas monedas han caído más del 30% en general. Con una fuerza tan grande.
El sentimiento de cobertura de riesgo aumentó la semana pasada cuando el mercado de criptomonedas extendió su repunte navideño.
Los monstruos del bosque oscuro de Ethereum no son una broma.
El 26 de diciembre, comenzó en Sanya la segunda ceremonia dorada anual de "Crear con el tiempo". El organizador de este evento, Jinse Finance.
En los últimos dos días, una parte del círculo de amigos del minero ha estado así.R: ¡Colecciona todo tipo de máquinas de minería de segunda mano, tantas como quieras!B: Antminer S9, buscando una carga de 20,000.
En la actualidad, Bitcoin puede ser una herramienta de almacenamiento de valor para algunas personas como un medio para cubrir la inflación o un "oro digital" reconocido por muchas personas. La institucionalización de.