¿Dónde se envían las transacciones?

Relacionado: cómo llegan las transacciones a los mineros , pero estoy buscando una discusión un poco (y solo un poco) más técnica.

Digamos que descargo un cliente de bitcoin liviano y configuro una billetera en la máquina A. Desde otra máquina B, envío una moneda a esta nueva billetera.

  1. ¿Cómo llega mi transacción a un minero? Presumiblemente, el cliente en la máquina B envía un mensaje a Internet... pero ¿no tiene que especificar qué dirección IP para enviar dicho mensaje? ¿A qué direcciones IP envía?
  2. De manera similar, ¿cómo se entera la máquina A de la transacción? ¿El cliente hace ping continuamente a la red para consultar nuevas transacciones en su dirección? ¿Cómo sabe a qué direcciones IP hacer ping la primera vez que se ejecuta?
Esta discusión parece responder a la mayor parte de la pregunta. Una descripción resumida aún podría ser útil: bitcoin.stackexchange.com/questions/53260/…

Respuestas (1)

¿Cómo llega mi transacción a un minero?

Primero, cuando inicie su billetera, se conectará a varios otros nodos en la red utilizando el mecanismo que se describe aquí . Estas conexiones son conexiones TCP, por lo que son flujos de datos de una computadora directamente a otra; las direcciones IP son conocidas y la transmisión de datos es manejada por la capa TCP.

A través de esta conexión TCP, los dos nodos comenzarán a intercambiar datos. Este primero consiste en algunas cosas iniciales de protocolo de enlace como mensajes de versión, varios filtros para que el otro nodo los aplique antes de enviar datos al otro nodo, etc. Luego consiste en datos de bloques y transacciones. Por lo general, estos se anuncian primero a través de un invmensaje (básicamente solo dice "Tengo este dato"), se solicitan con un getdatamensaje (dice "por favor, dame este dato") y se envían con el tipo de mensaje apropiado ( block, tx, etc. .).

Entonces, cuando envía una transacción, su nodo anuncia a través de un invmensaje a los nodos a los que está conectado que tiene una transacción. Los demás nodos lo solicitan y se envía la transacción. Entonces esos nodos repiten el mismo proceso; anuncian a sus compañeros que tienen una transacción, se solicita y luego se envía. Así es como una transacción se propaga a través de la red. Eventualmente, llegará a los nodos que pertenecen a los mineros para que los mineros puedan incluir su transacción en su próximo bloque.

De manera similar, ¿cómo se entera la máquina A de la transacción?

Dado que las conexiones TCP son bidireccionales, su nodo también recibe bloques y transacciones de sus pares. Para los nodos completos, recibirá todos los bloques y transacciones que conozcan sus pares, que, en general, serán todos los bloques y transacciones de la red. Luego puede interpretar cada transacción y encontrar las que pertenecen a su billetera.

Para una billetera liviana, utilizará un conjunto especial de mensajes que le permitirán establecer un filtro en las transacciones que recibe. Este filtro se envía a los nodos a los que está conectado y esos nodos solo enviarán a su billetera las transacciones que coincidan con este filtro. Luego, su billetera realizará un filtrado adicional localmente para encontrar exactamente qué transacciones le pertenecen (los filtros establecidos pueden tener falsos positivos).