¿Cómo se liquida un contrato cuando varias billeteras realizan la misma transacción?

Usaré la DApp, CryptoKitties como ejemplo:

Digamos que se lanza un dulce gato digital con un botón "comprar ahora" para 1 Ethereum y 3 personas realizan la transacción a través de MetaMask. Las 3 transacciones comienzan a estar pendientes.

  • La persona A envía la transacción a las 09:04:01 con un precio de gasolina de 2 Gwei
  • Persona B envía la transacción a las 09:04:21 con precio de gasolina de 20 Gwei
  • Persona C envía la transacción a las 09:04:51 con precio de gasolina de 100 Gwei

Si la transacción de la Persona A tarda 5 minutos en verificarse, la de la Persona B tarda 40 segundos y la de la Persona C tarda 10 segundos, entonces:

  • ¿La transacción de quién tiene prioridad y se agrega al bloque? (Solo uno pasa mientras que los demás se devuelven menos la gasolina para el cómputo)

  • ¿La marca de tiempo de la transacción iniciada tiene algún efecto sobre la prioridad?

Una respuesta detallada/técnica sería muy apreciada. ¡Gracias!

No proporciona ninguna información sobre por qué solo una transacción será exitosa y las demás no. ¿Todos envían 1 éter? Todos serán procesados.
Solo una transacción será exitosa porque el gatito solo puede pertenecer a 1 persona. Sí, todos comenzarán a procesarse, pero solo 1 se agregará con éxito al bloque, mientras que los otros 2 fallarán y obtendrán un reembolso.

Respuestas (1)

¿La transacción de quién tiene prioridad y se agrega al bloque? (Solo uno pasa mientras que los demás se devuelven menos la gasolina para el cómputo)

Cualquiera de las 3 transacciones fue elegida por el minero que encuentra el bloque. Los mineros pueden elegir las transacciones que deseen, siempre que permitan cambios de estado válidos. (Pueden hacer esto escribiendo su propio código de minería o ajustando el código del cliente Vanilla para satisfacer sus necesidades).

Para aquellos mineros que ejecutan el cliente Geth, elegirán las transacciones según el precio y el precio más alto primero. Consulte esta respuesta anterior para obtener una explicación detallada: ¿Cuál es el orden predeterminado de las transacciones durante la minería, por ejemplo, en geth? (Es muy probable que lo mismo sea cierto para el cliente de Parity, aunque no he mirado el código).

¿La marca de tiempo de la transacción iniciada tiene algún efecto sobre la prioridad?

No. Si todos están en el grupo de transacciones al mismo tiempo, se mantendrá el orden que mencioné anteriormente. (No hay nada en el código del cliente Vanilla que tenga en cuenta la marca de tiempo).