¿Cuál es el ciclo de vida paso a paso de una transacción?

Estoy tratando de comprender la vida útil de una transacción y aún no he encontrado una "línea de tiempo" técnica y lineal de eventos que ocurren cuando ocurre una transacción P2P.

Este es mi entendimiento hasta ahora; por favor corríjalo según sea necesario:

  1. Una persona usa su clave privada RSA para firmar un mensaje que dice "deducir X monto de mi cuenta y enviarlo a la(s) dirección(es) YYY". En este mensaje también hacen referencia al número de bloque actual.

  2. La aplicación cliente (billetera) envía esta transacción a 6 nodos para "confirmación". (¿el destino es un minero o una billetera?)

  3. ?? ¿Qué hace realmente la confirmación?

  4. Los nodos de minería agregan esas transacciones a un solo mensaje llamado bloque ( y las guardan en casi cualquier orden )

  5. Los nodos de minería compiten para encontrar un hash SHA256(SHA256(x)) del bloque que comienza con un número predeterminado de ceros.

  6. El primer nodo de minería (o grupo de nodos) que genera el hash ganador recibe un premio e incrementa el número de bloques. (Tenga en cuenta que esto actualmente parece tomar 30 minutos y el tamaño del bloque está limitado a 1 MB)

  7. Los mineros notifican a una billetera que luego replica el nuevo bloque a cualquiera que lo solicite y envía las actualizaciones a una cierta cantidad de pares. Cualquier bloque con una diferencia de fecha superior a 120 minutos de la hora del sistema se descarta.

  8. Cualquier transacción en curso que haga referencia al bloque resuelto debe ser reenviada por el cliente original y hacer referencia al bloque actual.

  9. Las transacciones conflictivas (gastos dobles) se detectan en el cliente de Bitcoin y se descartan.

  10. La billetera hará un seguimiento de cualquier cadena bifurcada y la cadena con el respaldo de mayor poder computacional gana. Esta bifurcación puede ocurrir debido a netsplits o actividad maliciosa). Además, ninguna billetera o autoridad central conoce actualmente todas las transacciones no válidas o bifurcaciones que se han producido en la red.

  11. Una vez que se hayan enviado 100 (o 120) confirmaciones, se podrá gastar el BTC generado con el bloque. fuente

Para cualquiera que tenga dudas sobre esta pregunta: tenga en cuenta que generalmente se prefiere hacer preguntas específicas en lugar de hacerlas con el estilo de "verificar mi respuesta" como se ve aquí. Si está seguro de que su comprensión es correcta, publique la pregunta y ponga su propia comprensión en una respuesta donde competirá con otras respuestas. Si hay errores en él, la gente te lo dirá.
Soy el OP y estoy totalmente de acuerdo con @Murch. Escribí esto hace mucho tiempo, y sería eliminado si no fuera por las respuestas +4 votadas a continuación. TP tiene muchas respuestas geniales aquí... mira su historial

Respuestas (1)

El tiempo de vida de una transacción sería algo como esto:

  1. Comienza con un cliente, una billetera que contiene sus pares de llaves y algunas transacciones no gastadas (las obtiene de otras personas o a través de la minería).
  2. Crea una nueva transacción gastando algunos de sus Bitcoins no gastados, fírmela con sus claves privadas. Su cliente almacenará una copia del mismo.
  3. Su cliente comienza a transmitir la nueva transacción a través de Bitcoin Network. Por lo que recuerdo, no lo transmite a todos los pares, sino a cada octavo par para proteger su anonimato. Cada minuto, el cliente también transmitirá todas las transacciones que conoce a uno de sus pares, lo que también incluiría su nueva transacción.
  4. Todos los clientes que reciben su transacción la examinan: verifican si la firma está bien, si hay algún error y si está tratando de realizar un doble gasto. Si su transacción no cumple alguno de los criterios, el cliente la ignora por completo. De lo contrario, el cliente mantiene una nota de la transacción en la memoria temporal.
  5. Todos los clientes que saben acerca de su transacción siguen una ruta de transmisión similar a la suya: la envían a 1/8 de sus pares y luego a un par cada minuto. Tampoco transmitirán su transacción si su tarifa es demasiado pequeña en un momento dado (que varía según la cantidad de transacciones que se incluirán en un bloque, etc.). En general, si no paga las tarifas, aquí se lo castiga con una tasa de transmisión de transacciones lenta.
  6. Eventualmente, su transacción llega a algunos grupos de minería y a los destinatarios de las transacciones. Estos últimos verán la nueva transacción en sus monederos y almacenarán una copia indefinidamente, pero aparecerá como 0 confirmaciones. Los pools de minería lo verán como una nueva transacción y (lo más probable) lo incluirán en cada bloque que intenten crear. Almacenarán una copia local de los bloques temporales y entregarán el trabajo correspondiente para resolver a sus mineros.
  7. Los mineros no saben nada sobre su transacción, excepto con una o más transacciones que se cifran en una raíz Merkle determinada. Su trabajo es procesar números, no verificar la validez del bloque, ya que esa es una tarea para el grupo.
  8. Eventualmente, su transacción se incluye en un bloque que se resuelve. Se transmite con orgullo a través de la red de Bitcoin y todos toman nota de ella a partir de ahora (para saber si alguna nueva transacción entra en conflicto con ella en un intento de doble gasto). Ahora su transacción tiene 1 confirmaciones.
  9. El proceso de creación de bloques continúa y, a medida que se construyen más y más bloques sobre el bloque, su transacción se incluye y obtiene más confirmaciones. Eventualmente llegando a 6 y más confirmaciones, se considera totalmente confirmado.
  10. La transacción finaliza su ciclo de vida una vez que otra transacción la gasta, lo que significa que sus salidas pueden olvidarse de la memoria "no gastada" y descartarse para cualquier otro intento de gastarlas. Sin embargo, permanecerá en la cadena de bloques mientras las personas realicen un seguimiento de la cadena completa.

Hay algunas complicaciones durante los ataques del 51 %, etc., pero este es el flujo principal de una transacción estándar.

En la viñeta n. ° 3, ¿eso significa que se conecta a cada par de "billetera" en un puerto de entrada? (¿excluyendo todos los TdR y los clientes con firewall?)
En el n.° 5, ¿ Bitcoin Days Destroyed podría ser otra razón para una transacción lenta?
En el n.° 9, si a confirmation== un bloque, y un bloque tarda una media de 30 minutos en generarse , ¿eso significa que 6 transacciones tardan 6 horas?
@makerofthings7 Los clientes establecen conexiones entrantes y salientes. Puede tener 8 conexiones salientes y 3 entrantes y así sucesivamente. Todas las conexiones entrantes van al puerto 8333 y las salientes usan varios puertos. No creo que Bitcoin Days Destroyed sea una razón para transacciones lentas, solo tarifas bajas y una gran cantidad de ellas creadas.
@makerofthings7 Un bloque debería tardar un promedio de 10 minutos en crearse si la tasa de hash de la red es estable. Por lo tanto, debería tomar 1 hora obtener 6 confirmaciones.