Orden de transacciones en un mismo bloque

Estoy escribiendo una publicación de blog de Medium sobre la ejecución anticipada y parece que no puedo encontrar información sobre el orden de las transacciones en el mismo bloque. He ejecutado dos operaciones, una con la tarifa más baja, llámela A: https://etherscan.io/tx/0x7332ec032bcd421e8137a623c542f38448bd7860b4b310acf4aef940dae85778 , y otra con el gasPrice más alto y la misma cantidad de gas, B: https://etherscan.io /tx/0x422d289768ce4fd6a7acf15dad9326ac80aaf0dcda696c306da69d5e83bfeb9b . Ambos estaban incluidos en el mismo bloque: https://etherscan.io/block/9494989 . ¿Qué transacción ocurrió primero, A o B?

Y en general, ¿cómo se recupera el orden de las transacciones en el mismo bloque?

Wow, tuve la misma pregunta ayer!

Respuestas (2)

Cada transacción incluye un nonce de transacción, un número incremental. Los mineros incluyen transacciones en un bloque para que ordenen por tiempo y precio de transacción (las implementaciones exactas varían). Pero tienen que elegir algún orden: todas las transacciones siempre se ejecutan una tras otra, sin paralelismo. Aquí hay más información sobre el orden: ¿Cuál es el orden predeterminado de las transacciones durante la extracción, por ejemplo, en geth?

Puede ver el orden (índice) de las transacciones en el bloque en Etherscan, por ejemplo, su transacción https://etherscan.io/tx/0x7332ec032bcd421e8137a623c542f38448bd7860b4b310acf4aef940dae85778 , presione "Haga clic para ver más" y marque "Posición" junto a "Nonce" . Cada transacción tiene una posición única (índice) dentro de un bloque. Entonces "B" ocurrió después de "A".

Los mineros tienen libertad sobre el orden de las transacciones en un bloque. Hay flexibilidad. También pueden elegir qué transacciones incluir del conjunto de transacciones.

Se les incentiva a empaquetar tanto como sea posible en un bloque, al precio de gasolina más alto posible. Cada bloque tiene un límite de gas de bloque, una propiedad de red votada por los mineros. La transacción tiene un precio de gas, el precio en éter que el remitente está dispuesto a pagar por su ejecución. Por lo tanto, los incentivos lo convierten en algo así como un juego de Tetris... paquete en la mayor cantidad de procesamiento que se ajuste, con la recompensa más alta, por las tarifas de transacción máximas posibles.

Tenga en cuenta que no están obligados a incluir nada en particular y no hay un orden correcto. En efecto, la función minera es establecer un orden canónico.

Hay otra restricción.

Cada cuenta de envío como un nonce de cuenta que numera las transacciones. Las transacciones que se originan en una cuenta determinada deben extraerse en orden nonce. Esto evita los ataques de reproducción y también garantiza que los remitentes no se sorprendan con el pedido de las transacciones confirmadas.

Espero eso ayude.

ay esto es genial! esto significa que no puedo adelantarme a mí mismo. gracias
¿Calificaría realmente que una transacción se origina en la misma cuenta si: envío una transacción desde la dirección A y la segunda tiene como objetivo adelantar esta transacción desde un contrato inteligente B, que fue creado por A?
"contrato B, que fue creado por A": creado por A tiene el orden de transacción determinista relativo a "Envío una transacción desde la dirección A".
Eche un vistazo al patrón 3 en la pregunta original aquí para obtener más información sobre las implicaciones del orden determinista (por cuenta). ethereum.stackexchange.com/questions/39790/…