Mastering Bitcoin
7. Transacciones » Ciclo de Vida de una Transacción » Propagando Transacciones sobre la Red Bitcoin
Página 43 de 98
Ciclo de Vida de una Transacción
El ciclo de vida de una transacción comienza con la creación de la transacción, también conocido como generación. La transacción es luego firmada con una o más firmas indicando la autorización a gastar los fondos referenciados por la transacción. La transacción es luego transmitida sobre la red bitcoin, donde cada nodo de la red (participante) valida y propaga la transacción hasta que alcanza a (casi) todos los nodos en la red. Finalmente la transacción es verificada por un nodo minero e incluida en un bloque de transacciones que es registrado en la cadena de bloques.
Una vez registrada en la cadena de bloques y confirmada por suficientes bloques subsecuentes (confirmaciones), la transacción pasa a ser una parte permanente del libro contable y es aceptada como válida por todos los participantes. Los fondos asignados a un nuevo dueño por la transacción pueden luego ser gastados en una nueva transacción, extendiendo la cadena de propiedad y comenzando el ciclo de vida de una transacción nuevamente.
Creando Transacciones
En algunas formas ayuda pensar en una transacción como si fuera un cheque de papel. Al igual que un cheque, una transacción es un instrumento que expresa la intención de transferir dinero y no es visible en el sistema financiero hasta que es enviado para ser liquidado. Tal como con un cheque, el originador de una transacción no necesita ser quien firme la transacción.
Las transacciones pueden ser creadas online u offline por cualquiera, incluso si la persona creando la transacción no es un firmante autorizado de la cuenta. Por ejemplo, un empleado a cargo de cuentas a pagar puede poseer cheques pagables para ser firmados por el presidente ejecutivo. De forma similar, un empleado a cargo de cuentas a pagar puede crear transacciones bitcoin y luego enviarlas al presidente ejecutivo para aplicar su firma digital y así hacerlas válidas. Así como un cheque referencia una cuenta específica como fuente de los fondos, una transacción bitcoin referencia una transacción previa específica como su fuente, en vez de una cuenta.
Una vez que una transacción ha sido creada, es firmada por el dueño (o dueños) de los fondos fuente.
Si está propiamente formada y firmada, la transacción es ahora válida y contiene toda la información necesaria para ejecutar la transferencia de fondos. Finalmente, la transacción válida debe alcanzar la red bitcoin para que pueda ser propagada hasta alcanzar un minero para su inclusión en el libro contable público (la cadena de bloques).
Transmitiendo Transacciones a la Red Bitcoin
Primero, una transacción debe ser enviada a la red bitcoin para poder ser propagada e incluida en la cadena de bloques. En esencia, una transacción bitcoin contiene entre 300 y 400 bytes de datos y debe alcanzar alguno las decenas de miles de nodos bitcoin. Los remitentes no necesitan confiar en los nodos que utilizan para transmitir la transacción siempre y cuando utilicen más de uno para asegurar su propagación. Los nodos no necesitan confiar en el remitente para establecer la «identidad» del remitente. Como la transacción se encuentra firmada no contiene información confidencial, claves privadas o credenciales, puede ser transmitida públicamente usando cualquier red de transporte que resulte conveniente. A diferencia de transacciones de tarjetas de crédito, por ejemplo, las cuales contienen información sensible y solo pueden ser transmitidas sobre redes encriptadas, una transacción bitcoin puede ser enviada sobre cualquier red. Siempre y cuando la transacción pueda alcanzar un nodo de la red bitcoin que la propague, no importa cómo es transportada al primer nodo.
Las transacciones bitcoin pueden, por lo tanto, ser transmitidas a la red bitcoin a través de redes inseguras tales como WiFi, Bluetooth, NFC, Chirp, códigos de barras, o copiando y pegando de un formulario web. En casos extremos, una transacción bitcoin puede ser transmitida a través de paquetes vía radio, transmisión satelital, onda corta usando transmisión de ráfagas, espectro ensanchado o salto de frecuencia para evadir detección o interferencia. Una transacción bitcoin puede incluso ser codificada como smileys (emoticonos) y publicada en un foro público o enviada como un mensaje de texto de Skype. Bitcoin ha convertido al dinero en una estructura de datos, haciendo prácticamente imposible el evitar que cualquiera ejecute una transacción bitcoin.
Propagando Transacciones sobre la Red Bitcoin
Una vez que una transacción bitcoin es enviada a un nodo conectado a la red bitcoin, la transacción será validada por dicho nodo. Si es válida el nodo la propagará a otros nodos a los que se encuentra conectado, y un mensaje de éxito será devuelto sincrónicamente al originador. Si la transacción es inválida, el nodo la rechazará y devolverá un mensaje de rechazo sincrónicamente al originador.
La red bitcoin es una red entre pares (peer-to-peer), lo cual significa que cada nodo bitcoin se encuentra conectado a unos pocos otros nodos bitcoin que descubre durante su inicialización a través del protocolo entre pares. La totalidad de la red forma una malla parcialmente conectada sin una topología rígida ni estructura, haciendo de cada nodo un par equitativo. Los mensajes, incluyendo transacciones y bloques, son propagados de cada nodo a todos los pares a los que se encuentra conectado, un proceso conocido como «inundación» (flooding). Una nueva transacción validada inyectada en cualquier nodo de la red será enviada a todos sus nodos conectados a él (vecinos), cada uno de los cuales enviará la transacción a todos sus vecinos, y así sucesivamente. De esta forma, en apenas unos pocos segundos una transacción válida se propagará en una onda en expansión exponencial a través de la red hasta que todos los nodos de la red la hayan recibido.
La red bitcoin fue diseñada para propagar transacciones y bloques a todos los nodos de manera eficiente y resistente a ataques. Para prevenir el spamming, ataques por denegación de servicio u otros ataques molestos al sistema bitcoin, cada nodo valida cada transacción independientemente antes de continuar con su propagación. Una transacción mal formada no se propagará más allá de un nodo. Las reglas por las que las transacciones son validadas se encuentran explicadas en mayor detalle en el capítulo sobre verificación.