Comprensión de la carrera frontal. ¿Por qué falló mi transacción? (PancakeSwap V2)

Estoy investigando un poco sobre las transacciones de ejecución frontal. Mi objetivo es comprar un token en PancakeSwap en el mismo bloque en el que se agrega la liquidez.

Tomemos este token como ejemplo: https://bscscan.com/token/0x195d3576bbf6504d8eac5b614dcb756e32b911d5

Se lanzó en el bloque https://bscscan.com/block/7699663 , que en una sola transacción agregó 20 BNB LP en el enrutador PancakeSwap V2 ( https://bscscan.com/tx/0x48b3b3b9dafcaff0f77e4c40abd80afcc47a20b19db23d9dc96a9ff326446a8c ).

Usé esa transacción como desencadenante de mi orden de intercambio (solo 0.01 BNB, 10 gwei) https://bscscan.com/tx/0xa66fbba13749cbd3005957d257da22e5afb07cfc007fe790976cda284a64c1f0 que falló. Quiero entender por qué.

Tal vez hice mi pedido demasiado pronto, pero ese es el objetivo, ¿verdad? ¿Cómo debo estimar cuándo hacer el pedido y luego?

También puedo pensar que el problema fue el precio del gas. Mi precio de la gasolina era de 10 gwei y el tx que añadía la liquidez tenía un precio de 5 gwei. ¿Significa esto que mi tx se procesará primero y, por lo tanto, fallará porque todavía no hay suficiente liquidez?

Si esta explicación es correcta, ¿realizar esta transacción con el mismo precio del gas que la liquidez (¿o quizás 1 gwei menos?) garantizaría que se procesará? ¿Cuál sería la mejor manera de lograr un buen compromiso entre la velocidad y la tasa de éxito?

A partir de este pequeño experimento, puedo imaginar que detectar una transacción pendiente (con un precio de gasolina bajo o promedio) y luego enviar un intercambio equivalente con un precio de gasolina x2-3 probablemente resulte en que mi transacción se procese primero, ¿verdad?

¿No es este un defecto muy importante de DEX? como se puede solucionar este problema?

¡Gracias!

Respuestas (3)

No hay un orden predefinido para las transacciones en un bloque. El único requisito es que las transacciones de la misma dirección se clasifiquen por el nonce de la transacción, pero las transacciones de diferentes direcciones pueden estar en cualquier orden.

En Ethereum, los mineros de la red principal clasificarán por precio del gas porque obtendrán una recompensa mayor. Pero no siempre es el caso, busque "Valor extraíble del minero" y el proyecto Flashbot, algunas veces los mineros obtendrán una recompensa mayor al incluir un grupo de transacciones.

Desafortunadamente, no conozco una solución que funcione en una red PoA como BSC.

La transacción fracasó porque debido al mayor precio del gas y al estar en el mismo bloque, se ejecutó antes de que se agregara la liquidez. Estaba confundiendo el nonce con la posición del bloque.

Es un problema de gas, si está en el mismo bloque, el precio del gas tiene que ser el mismo si quiere tener éxito en retroceder la transacción de liquidez, la cuestión es que una vez que está en el mismo bloque con el mismo precio del gas, entonces es bastante informal el orden, la mayoría de las personas usan contratos que envían muchas transacciones al mismo tiempo para que muchas transacciones ingresen al bloque que le interesa y tengan una mayor probabilidad de ser la primera transacción después de la liquidez en el bloque. Pero, ¿cómo logra ingresar al mismo bloque con una sola transacción? (lo que significa que activa solo 1 transacción, ¿verdad?)