What is a transaction in the Bitcoin network?

El ADN de una Transacción de Bitcoin

23/12/2022

Valoración: 4.29 (11687 votos)

Cuando enviamos o recibimos Bitcoin, interactuamos con lo que comúnmente llamamos una "transacción". Pero, ¿qué es exactamente este elemento fundamental de la red? Lejos de ser un simple mensaje de "enviar X cantidad de A a B", una transacción de Bitcoin es un fragmento de datos estructurado con precisión, una pieza de código que instruye a la red sobre cómo reasignar la propiedad de los satoshis. Como lo describió su creador, Satoshi Nakamoto, una moneda electrónica es una cadena de firmas digitales. Cada transacción extiende esa cadena. En este artículo, vamos a diseccionar una transacción de Bitcoin para entender su anatomía, sus componentes y los secretos que guarda en su interior.

What if you put $1000 in Bitcoin 5 years ago?
Taking a buy-and-hold position in Bitcoin five years ago would have delivered massive returns for investors. As of this writing, Bitcoin is up 962.3% over the period. That means that a $1,000 investment in the token made half a decade ago would now be worth more than $10,620.
Índice de contenido

La Estructura Fundamental: Entradas y Salidas

En su nivel más básico, una transacción de Bitcoin se compone de dos elementos principales: entradas (inputs) y salidas (outputs). La lógica es simple: las entradas son los bitcoins que estás gastando, y las salidas son los nuevos "lotes" de bitcoins que estás creando con nuevos dueños. Imagínalo como usar billetes físicos: si quieres pagar 15€ y solo tienes un billete de 20€, usas el billete de 20€ (la entrada) y creas dos salidas: una de 15€ para el vendedor y una de 5€ de vuelta para ti (el cambio).

Entradas (Inputs): Desbloqueando los Fondos

Una entrada no es más que una referencia a una salida de una transacción anterior que aún no ha sido gastada (conocida como UTXO - Unspent Transaction Output). Para poder gastarla, debes demostrar que eres el dueño. Esto se logra proporcionando una "clave" digital, que generalmente es una firma criptográfica. Cada entrada especifica:

  • TXID de la transacción anterior: El identificador único de la transacción de donde provienen los fondos.
  • Índice de la salida (VOUT): El número de la salida específica en esa transacción anterior que se está gastando.
  • ScriptSig o Witness: El código de desbloqueo. En las transacciones antiguas (legacy), este es el "ScriptSig". En las transacciones modernas (SegWit), la mayor parte de esta información se traslada a una sección separada llamada "Witness".
  • Sequence: Un campo que originalmente se pensó para otros fines, pero que hoy en día se usa principalmente para habilitar características como Replace-By-Fee (RBF) y el Locktime relativo.

Salidas (Outputs): Creando Nuevos Candados

Una salida crea un nuevo lote de satoshis (la unidad más pequeña de Bitcoin) y le asigna un nuevo "candado" criptográfico. Solo la persona con la llave correcta podrá abrir este candado en el futuro. Cada salida contiene:

  • Monto: La cantidad de satoshis que se asignan a esta salida. Se mide en satoshis, donde 1 BTC = 100,000,000 satoshis.
  • ScriptPubKey: Este es el "candado". Es un pequeño programa que define las condiciones necesarias para gastar esta salida en el futuro. Por ejemplo, podría decir "solo puede ser gastado por quien posea la clave privada correspondiente a esta dirección pública".

La Tarifa de Transacción: El Incentivo para los Mineros

Aquí es donde la magia ocurre. La suma total de los montos en las entradas siempre debe ser mayor o igual a la suma total de los montos en las salidas. La diferencia entre ambas es la tarifa de transacción.

Tarifa = Suma de Entradas - Suma de Salidas

Esta cantidad no se asigna a ninguna salida, por lo que queda implícitamente disponible para el minero que incluya la transacción en un bloque válido. Esta tarifa es el incentivo para que los mineros procesen tu transacción, y su cuantía afecta directamente la velocidad con la que se confirma.

Tipos de Candados: Legacy vs. SegWit

El campo `ScriptPubKey` es crucial, ya que define la seguridad y el tipo de transacción. A lo largo de los años, han evolucionado para ser más eficientes y seguros.

Transacciones Legacy (P2PKH)

El tipo de transacción original y más básico es "Pay-to-Public-Key-Hash" (P2PKH). El candado contiene el hash de la clave pública del destinatario. Para desbloquearlo, el gastador debe proporcionar la clave pública completa y una firma digital creada con la clave privada correspondiente. Aunque funcional, este método ocupa un espacio considerable dentro de la transacción principal.

La Revolución de SegWit (P2WPKH)

En 2017, la red de Bitcoin activó una importante actualización llamada Segregated Witness, o SegWit. Su principal innovación fue "segregar" o separar los datos de la firma (el "testigo" o witness) de la parte principal de la transacción. Esto resolvió un problema de maleabilidad de las transacciones y, como efecto secundario, permitió que más transacciones cupieran en un bloque, mejorando la escalabilidad.

Una transacción SegWit del tipo "Pay-to-Witness-Public-Key-Hash" (P2WPKH) funciona de manera similar a P2PKH, pero el código de desbloqueo (la firma y la clave pública) se coloca en una sección separada al final de la transacción. Esto hace que la transacción base sea más pequeña y ligera.

Tabla Comparativa: Legacy vs. SegWit

Característica Transacción Legacy (P2PKH) Transacción SegWit (P2WPKH)
Ubicación de la Firma Dentro del campo `ScriptSig` de la entrada. En una sección separada al final llamada `Witness`.
Eficiencia de Espacio Menor. La firma cuenta para el tamaño total de la transacción de la misma manera que otros datos. Mayor. Los datos del `Witness` tienen un "descuento" en el cálculo del peso, permitiendo más transacciones por bloque.
Costo de la Tarifa Generalmente más alto para la misma complejidad. Generalmente más bajo debido a la eficiencia del espacio.
Identificador (TXID) Se calcula a partir de todos los datos, incluida la firma. El TXID se calcula sin los datos del `Witness`, solucionando la maleabilidad. Se crea un `wTXID` que sí los incluye.

Características Avanzadas: Locktime y RBF

Dentro de la estructura de una transacción se esconden funcionalidades muy potentes que permiten un mayor control sobre los fondos.

Locktime: Postdatando una Transacción

El campo `Locktime` permite especificar un momento en el futuro antes del cual la transacción no puede ser incluida en un bloque. Este tiempo puede definirse como una altura de bloque específica o una fecha y hora (en formato Unix). En la práctica, es como postdatar un cheque: la transacción es válida, pero la red no la aceptará hasta que se cumpla la condición de tiempo. Para que el `Locktime` se active, al menos una de las entradas debe tener un valor de `sequence` inferior a `0xFFFFFFFF`.

Replace-By-Fee (RBF): Acelerando Transacciones

¿Alguna vez has enviado una transacción con una tarifa demasiado baja y se ha quedado atascada en la mempool (la sala de espera de transacciones)? Replace-By-Fee es la solución. Al establecer un valor de `sequence` en una entrada inferior a `0xFFFFFFFE`, se le indica a la red que esta transacción puede ser reemplazada por otra que gaste las mismas entradas pero con una tarifa mayor. Esto permite "acelerar" una transacción sin tener que esperar a que la original se confirme o se descarte.

El Tamaño Importa: Bytes, Peso y vBytes

Cuando se trata de tarifas, el "tamaño" de la transacción es lo que importa. Sin embargo, con la llegada de SegWit, hay tres formas de medirlo:

  1. Tamaño en Bytes: El número total de bytes de la transacción. Es el espacio que ocupa en el disco duro.
  2. Peso (Weight Units): Una métrica introducida por SegWit. Cada byte de los datos principales de la transacción cuenta como 4 unidades de peso, mientras que cada byte de los datos del `Witness` cuenta solo como 1 unidad. Un bloque tiene un límite de peso de 4 millones de unidades.
  3. Tamaño Virtual (vBytes): Es el peso total dividido por 4. Esta es la métrica más utilizada hoy en día para calcular las tarifas (expresadas en satoshis por vByte), ya que normaliza el tamaño entre transacciones legacy y SegWit, reflejando de manera justa el "descuento" de los datos del `Witness`.

Preguntas Frecuentes (FAQ)

¿Qué es un satoshi?

Un satoshi (o "sat") es la unidad más pequeña de Bitcoin. Un Bitcoin se puede dividir en 100 millones de satoshis. Las tarifas y los montos de las transacciones se calculan a nivel de protocolo en satoshis.

¿Por qué mi transacción tiene dos salidas si solo envié a una persona?

Esto es muy común y se debe al concepto de "cambio". Si tus entradas suman 1 BTC y solo quieres enviar 0.3 BTC, la transacción creará dos salidas: una de 0.3 BTC para el destinatario y otra de aproximadamente 0.7 BTC (menos la tarifa) que vuelve a una dirección que tú controlas. Es el vuelto digital.

¿Qué pasa si pongo una tarifa muy baja?

Si la tarifa es demasiado baja en comparación con otras transacciones en espera, los mineros no tendrán incentivos para incluirla en un bloque. Tu transacción puede quedarse "atascada" en la mempool durante horas, días, o incluso ser descartada por los nodos de la red eventualmente. Aquí es donde usar RBF es extremadamente útil.

¿Qué es el TXID?

El TXID (Transaction ID) es el identificador único de una transacción. Se genera aplicando un doble hash SHA-256 a los datos serializados de la transacción (sin incluir el `Witness` en el caso de SegWit). Es como el número de seguimiento de tu envío, permitiéndote rastrear su estado en un explorador de bloques.

Conclusión

Una transacción de Bitcoin es mucho más que un simple envío de dinero. Es una estructura de datos elegante y compleja que combina criptografía, programación y teoría de juegos para permitir transferencias de valor seguras y descentralizadas. Desde desbloquear fondos con firmas digitales hasta crear nuevos candados, pasando por las tarifas que incentivan a la red y las características avanzadas como Locktime y RBF, cada byte tiene un propósito. Entender su anatomía no solo es fascinante, sino que también te convierte en un usuario de Bitcoin más informado y capacitado.

Si quieres conocer otros artículos parecidos a El ADN de una Transacción de Bitcoin puedes visitar la categoría Bitcoin.

Subir