Tarifa (Fee)

Lo restante de una transacción

Una tarifa de transacción es el restante de una transacción.

Si sumas todos los valores de las entradas y restas todos los valores de las salidas, lo que sobra es la tarifa. Por ejemplo:

entrada 0 = 2699815 satoshis
salida   0 = 1593900 satoshis
salida   1 = 1060915 satoshis
tarifa     =   45000 satoshis

Como puedes ver, no hay una salida designada de "tarifa" ni nada parecido. La tarifa es solo la cantidad de monedas que no consumes en la transacción.

Ten cuidado, porque cualquier cantidad de satoshis que sobre en una transacción será cobrada como tarifa. Algunas personas ya definieron tarifas enormes por error al dimensionar incorrectamente sus salidas. Por ejemplo, una transacción llegó a tener una tarifa de 291,240900 BTC.

Incentivo al Minero

¿Por qué fijar una tarifa en una transacción?

Una tarifa de transacción funciona como un incentivo para que un minero incluya tu transacción en su bloque candidato. Los mineros recogen todas las tarifas de las transacciones que incluyen en el bloque (a través de la transacción coinbase). Así que, si hay más transacciones en el memory pool que las que caben en el próximo bloque, los mineros eligen las de mayor tarifa.

Si todas las transacciones del memory pool caben en el próximo bloque, puedes fijar la tarifa mínima, ya que no hay competencia.

Tarifas por Byte (Feerates)

¿Cómo se miden las tarifas de transacción?

Los mineros quieren maximizar las tarifas. Para eso, miden cada transacción por la tarifa que aporta por el espacio que ocupa en un bloque. Una transacción pequeña con una tarifa grande es más valiosa que una transacción grande con la misma tarifa. Tomamos el tamaño de la tarifa y lo dividimos por el tamaño de la transacción — eso es la tarifa por byte (feerate).

Hay 3 formas de medir feerates:

  1. sats/byte (Obsoleto) – usado cuando el límite del bloque era de 1.000.000 bytes.
  2. sats/wu (Usado internamente) – satoshis por unidad de peso.
  3. sats/vbyte (Más común) – satoshis por byte virtual (peso ÷ 4). Es lo que usan la mayoría de carteras y exploradores.

Aumentar la Tarifa (Fee Bumping)

¿Y si la tarifa es demasiado baja y la transacción se queda atascada?

Hay dos formas de aumentar la tarifa de una transacción que ya está en el memory pool:

  1. Replace By Fee (RBF). Si la transacción original tiene la bandera RBF habilitada (en el campo sequence), puedes transmitir una nueva versión de la transacción que gaste las mismas entradas, pero con una tarifa más alta. La nueva versión sustituye a la antigua.
  2. Child Pays For Parent (CPFP). Creas una nueva transacción ("hija") que gasta una salida de la transacción atascada ("padre"), colocando una tarifa alta en ella. Como el minero solo puede minar la hija junto con el padre, la tarifa alta de la hija incentiva la minería de ambas.

Tarifa Mínima de Retransmisión

Cada nodo tiene una tarifa mínima (por defecto: 1 sat/vbyte) por debajo de la cual no acepta ni retransmite una transacción. Así que la tarifa mínima práctica para una transacción suele ser 1 sat/vbyte.

Resumen

En pocas palabras

Una tarifa de transacción es el resto de una transacción de bitcoin, y sirve como incentivo para que un minero incluya tu transacción en un bloque.

Los mineros seleccionan transacciones según la tarifa por unidad de peso — una medida de cuánto pueden ganar en tarifas por el espacio que la transacción ocupa en el bloque. Por eso, si se envían muchas transacciones a la red al mismo tiempo, hay más competencia para entrar en los bloques, y las tarifas por byte suben.

Si defines una tarifa baja y la transacción no se mina lo bastante rápido, siempre puedes reemplazarla por una de tarifa más alta usando RBF. Y, si el RBF no está habilitado, puedes usar el CPFP para incentivar a un minero a incluirla en el próximo bloque. Por último, al construir una transacción manualmente, comprueba siempre el tamaño de tus salidas para no dejar una tarifa accidentalmente alta.

¿Por qué el explorador no muestra las tarifas de las transacciones?

El explorador de bloques de este sitio obtiene la información de transacción directamente de Bitcoin Core mediante comandos bitcoin-cli (en lugar de almacenar los datos en una base de datos propia). Lamentablemente, la consulta getrawtransaction [txid] no devuelve el valor de la tarifa de transacciones ya minadas. Sería posible calcular la tarifa buscando los valores de cada entrada, pero eso requeriría varias peticiones por transacción, volviendo el explorador mucho más lento.

Como el objetivo principal del explorador es mostrar los datos brutos de las transacciones, he optado, por cuestión de velocidad, por no calcular ni mostrar las tarifas ni los feerates de cada transacción. Si quieres ver las tarifas de las transacciones en la blockchain, echa un vistazo a mempool.space.