Después del precio del gas, ¿se utiliza el hash de la transacción para priorizar las transacciones pendientes?

Mirando el estado ICO desde el margen, noté que una vez que se liquidaron las transacciones con más de 50 Gwei como precio del gas, la transacción aprobada por el contrato tenía un hash que comenzaba en 0x00... y el valor hexadecimal aumentaba lentamente.

Aquí hay un ejemplo: https://etherscan.io/tx/0x00785cad03de2e353f16f7efcc5a06c356dced3807fa52d293886cba3bc8214f

También noté que las personas dicen que pueden realizar transacciones cambiando el precio y el límite de gas para generar nuevas transacciones sin procesar. Informan que está "funcionando" después de 10 o 15 intentos. Parece que eso es lo que se necesita para obtener un cero al comienzo del hash.

Escribí un script de Python rápido para confirmar mi teoría, generé un tx con un hash que comienza en 0x000 y se extrajo en menos de un minuto con un precio de gas de 50Gwei.

¿Alguien puede confirmar mi teoría de que el hash tx es el siguiente criterio después del precio del gas?

Respuestas (2)

En Parity, el hash es un elemento para los criterios de pedido, como puede ver aquí: https://github.com/paritytech/parity/blob/1aaafa2d11b42af6be97754f4bc06e2856904464/ethcore/src/miner/transaction_queue.rs#L179

Entonces, en teoría, el hash puede decidir el orden, si el orden anterior se compara con "igual". Sin embargo, los mineros pueden, y probablemente lo hagan, ejecutar algoritmos personalizados para ordenar transacciones.

Para beneficiarse a sí mismos o a sus clientes, durante la alta demanda, se ha informado que los mineros tienen un comportamiento bizantino en el pedido de transacciones.

No dice qué cliente está utilizando, y el caso de Parity ya se ha mencionado. Tenga en cuenta también que el orden de la paridad se puede cambiar en la línea de comando usando la siguiente opción:

--tx-queue-strategy S          Prioritization strategy used to order transactions
                                 in the queue. S may be:
                                 gas - Prioritize txs with low gas limit;
                                 gas_price - Prioritize txs with high gas price;
                                 gas_factor - Prioritize txs using gas price
                                 and gas limit ratio (default: gas_price).

Para Geth, el orden se explica en la siguiente pregunta anterior:

¿Cuál es el orden predeterminado de las transacciones durante la minería, por ejemplo, en geth?

En resumen, el cliente Geth ordena usando el siguiente método:

// This method first sorts and separates the list of transactions into individual
// sender accounts and sorts them by nonce. After the account nonce ordering is
// satisfied, the results are merged back together by price, always comparing only
// the head transaction from each account. This is done via a heap to keep it fast

No puedo ver de inmediato en el código que el hash está involucrado, pero es posible que desee usar los punteros de código en ese hilo anterior para investigar más.


Pero para repetir la respuesta anterior, no tienes una forma real de saber cómo lo están haciendo los mineros, porque pueden modificar sus algoritmos de la forma que quieran.