¿Cómo prioriza las transacciones el cliente estándar?

Escuché que el cliente estándar prioriza qué transacción retransmitir según los Bitcoin Days Destroyed y la tarifa pagada por la transacción, pero ¿cuál es la fórmula exacta utilizada para determinar qué transacción tiene mayor prioridad? Es decir, ¿cómo prioriza el cliente estándar qué transacción enviar primero a otros nodos?

@StephenGornick No es un duplicado, esto se relaciona con la transmisión de transacciones, mientras que el que vinculó se relaciona con la priorización de las monedas utilizadas en las transacciones.
Tal vez debería precisar lo que quiere decir con relé . ¿Le interesa el orden en que las transacciones se transmiten a otros pares, o el orden (y tal vez la cantidad) que se considera para construir nuevos bloques?

Respuestas (2)

La prioridad de una transacción es (la suma de (edad de la moneda en bloques * valor de la moneda en satoshis) sobre todas las entradas en la transacción) dividida por el tamaño de la transacción en bytes.

Aquí hay una transacción de ejemplo aleatoria copiada de http://bitcoincharts.com/bitcoin/txlist/ :

ingrese la descripción de la imagen aquí

Tiene 2 entradas (las cuales se han gastado desde entonces en otras transacciones (confirmadas) que hacen que esta transacción no sea confirmable):

  • uno por 0.1005 BTC del bloque 165774
  • uno por 0.0995 BTC del bloque 165777

Tiene una longitud de 439 bytes y una prioridad de 432.232.688.

Los bloques más recientes en la cadena de bloques son 175262 en el momento de escribir este artículo.

Sumo los (valores de edad *) para cada transacción y los divido por tamaño. Esto + 1se debe a que se considera que las transacciones confirmadas en el bloque más reciente tienen una antigüedad de 1, no de 0:

>>> current_block = 175262
>>> ((current_block - 165774 + 1) * 0.1005e8 +
     (current_block - 165777 + 1) * 0.0995e8) / 439
432232687.92710704

Como puede ver, la prioridad de una transacción aumentará a medida que se encuentren nuevos bloques.

Esta es la prioridad que utiliza el cliente para decidir qué transacciones incluir en los bloques minados. Es muy probable que esto sea lo que alguien quiere saber cuando pregunta sobre la prioridad de la transacción.
Acordado. Gran respuesta pero no a la pregunta correcta. Sería una excelente respuesta a esta pregunta, le sugiero que la copie allí y la elimine de aquí.
Creo que este es el cálculo al que se refería la pregunta. Es solo que no se usa para decidir qué transacciones retransmitir. No hay un cálculo de prioridad al decidir qué transacciones retransmitir.

Las reglas para el cliente de Bitcoin.org son mantener la primera transacción en la que se gasta una dirección de bitcoin y descartar sin retransmitir ninguna otra que pueda llegar.

Entonces, la prioridad se basa en el tiempo cronológico de llegada.

Se ha hablado de variaciones que permitirían una transacción de reemplazo con una tarifa más alta para reemplazar una transacción anterior que aún no ha sido confirmada.

Y hay un vector de ataque que describe cómo se puede modificar esta prioridad para facilitar el doble gasto .