Glosario / Transacciones y comisiones
Transacción de bitcoin
También se conoce como Transacción.
- ¿Qué es una transacción de bitcoin?
- Una transacción de bitcoin es una instrucción firmada que destruye algunas monedas existentes y crea otras nuevas en su lugar, y es la única manera en que el valor llega a moverse en la red.
En bitcoin nada guarda un saldo. El registro público es un conjunto de UTXO, un pago consume salidas enteras y acuña otras que las reemplazan, y lo que sobra va al minero como comisión. La primera de la historia movió 10 bitcoin de Satoshi Nakamoto a Hal Finney en el bloque 170, el 12 de enero de 2009, y, como todas las que han venido después, no se podía deshacer.
Cómo funciona
Una transacción de bitcoin es una estructura binaria corta de seis partes, y la billetera las ensambla todas antes de difundir nada.
La versión ocupa 4 bytes. La versión 1 fue la original; la versión 2 existe porque BIP68 dio a los números de secuencia un nuevo significado para el bloqueo temporal (timelock) relativo, y las billeteras modernas la establecen por defecto. Después vienen las entradas, cada una de las cuales identifica una salida creada anteriormente y lleva la prueba del derecho a gastarla. Luego, las salidas, cada una con un monto en satoshis y un script de bloqueo que indica quién puede gastarla a continuación. Las transacciones SegWit añaden una sección de testigo que contiene las firmas y que queda fuera de la parte que determina el ID de transacción. Por último está el locktime, de 4 bytes, que normalmente se establece en la altura de bloque actual para que la transacción no pueda incluirse en un bloque anterior.
En esa estructura no hay ningún campo de comisión. La comisión es aritmética: el valor total de las entradas menos el valor total de las salidas, y lo que no se asigne a una salida se entrega a quien mine el bloque. Por eso un error de una billetera que calcule mal el cambio puede tirar dinero real, y por eso todas las billeteras construyen una salida de cambio hacia sí mismas en lugar de dejar un sobrante.
La firma lo ata todo. Con la regla predeterminada SIGHASH_ALL, cada firma cubre todas las entradas y todas las salidas, así que alterar un solo satoshi de una sola salida invalida todas las firmas de la transacción. Eso es lo que hace que una transacción difundida sea definitiva en su contenido, aunque todavía no lo sea en su confirmación.
El tamaño se mide en bytes virtuales y no en bytes en bruto, porque SegWit descuenta los datos de testigo hasta una cuarta parte de su peso, y los bloques tienen como tope un presupuesto de 4 millones de unidades de peso. Un gasto SegWit nativo de una entrada y dos salidas ocupa aproximadamente 141 bytes virtuales.
Por qué importa cuando compra bitcoin
En un exchange se llama "enviar bitcoin" a dos cosas completamente distintas, y solo una de ellas es una transacción.
Mover monedas entre cuentas dentro de la misma plataforma es una actualización de una base de datos. Es instantáneo, normalmente gratuito y no deja rastro en la blockchain, porque no se ha hecho ninguna transacción. Retirar a una dirección que usted controla construye una transacción real, paga una comisión real, espera un bloque real y es la única versión que termina con usted como dueño de bitcoin y no de un derecho sobre una empresa.
Una vez que retira, se derivan tres consecuencias prácticas.
No puede cancelarla. El replace-by-fee permite al remitente aumentar la comisión mientras la transacción está sin confirmar, pero solo la billetera que la construyó puede hacerlo, y un exchange no lo hará en su nombre. Compruebe la dirección antes de aprobar, no después.
Cada depósito que recibe se convierte en una moneda que pagará por gastar más adelante. Diez compras pequeñas dejan diez salidas, y un pago futuro que tenga que gastar las diez cuesta varias veces lo que costaría una sola salida grande. Retirar menos veces y en montos más grandes es el hábito más barato en bitcoin, y adoptarlo no cuesta nada.
La comisión que cobra su exchange es una cifra que dicta su política, no la comisión de red. Se establece de antemano y rara vez sigue a la mempool, así que en un día tranquilo puede pagar varias veces el costo real y en uno de mucha actividad, bastante menos. Las reseñas de exchanges de este sitio registran cómo gestiona los retiros cada plataforma, y vale la pena preferir las que le permiten elegir su propia comisión por vB.
Leer un retiro real, campo por campo
Suponga que compra 0,05 BTC y los retira. Lo que aparezca en un explorador de bloques probablemente le resultará confuso, porque la transacción no es solo suya.
Los grandes exchanges agrupan los retiros por lotes. Una sola transacción de retiro puede gastar 3 entradas de la billetera caliente, con un valor total de 2,41 BTC, y crear 42 salidas, una de las cuales son sus 0,05 BTC y otra el cambio que vuelve al exchange. Con unos 68 bytes virtuales por entrada, 31 bytes por salida y alrededor de 11 bytes de sobrecarga, esa transacción ronda los 1.517 bytes virtuales. Con una comisión por vB de 6 sat/vB, el minero recibe unos 9.102 satoshis, lo que equivale a aproximadamente 217 satoshis por cada cliente del lote. Enviado por separado, su retiro habría ocupado unos 141 bytes virtuales y habría costado unos 846 satoshis.
Así que el explorador muestra una transacción que mueve mucho más bitcoin del que usted retiró, con decenas de destinatarios de los que nunca ha oído hablar. No pasa nada malo. Busque su propia salida por monto y dirección, anote el ID de transacción y haga caso omiso del resto.
Transacción de bitcoin frente a txid
Una transacción es el objeto; un txid es su huella digital. El ID es un hash calculado con doble SHA-256 sobre la transacción serializada sin los datos de testigo, escrito como 64 caracteres hexadecimales, y existe para poder hacer referencia a la transacción sin repetirla. Los servicios de soporte piden el txid, los exploradores indexan por él y las transacciones posteriores apuntan a él. Eso sí, no es un recibo: un txid demuestra que existe una transacción con exactamente ese contenido, y no dice nada sobre quién la envió ni por qué.
Transacción de bitcoin frente a PSBT
Un PSBT es una transacción que todavía no está terminada. El formato, definido en BIP174, lleva las entradas y las salidas más la información adicional que necesita un firmante, como el valor y el script de cada entrada que se gasta, y viaja entre dispositivos en lugar de por la red. Las configuraciones aisladas de la red y las configuraciones multisig dependen de él: un firmante sin conexión lee el PSBT, añade su firma y lo devuelve. Solo cuando todas las entradas están firmadas se finaliza el archivo como una transacción que la red aceptará, y hasta ese momento no se ha enviado nada.