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?
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.
cosa extrañaespía