Change Address es la dirección que utiliza la cartera para devolver el resto de un pago. Bitcoin gasta por completo las cantidades seleccionadas. Tras descontar el pago y la comisión, la cartera suele enviar el resto a una nueva salida propia. El dinero sigue siendo tuyo, pero queda registrado en otra salida y, a menudo, en una dirección nueva.
Alice recibió antes 120 000 sat, las unidades más pequeñas de bitcoin, y quiere pagar 100 000 sat. En este ejemplo, sus fondos forman un UTXO: una salida de una transacción anterior que aún no se ha gastado. Se convierte en una entrada del pago y se gasta entera. Con una comisión de 2 000 sat, el destinatario recibe 100 000 sat y los 18 000 sat restantes van a una nueva salida de la cartera de Alice. Se parece a pagar con un billete grande y recibir el cambio, pero ambas cantidades se reparten en una sola transacción. Alice no espera a que el destinatario le devuelva nada. La cartera normalmente elige por sí misma la dirección de cambio. Por eso, un explorador puede mostrar dos direcciones de destino aunque Alice haya pagado a una persona. Una vez confirmado, el cambio es un UTXO nuevo con su propio identificador de salida, el outpoint; no es un fragmento sin gastar de la salida anterior. El outpoint combina el identificador de la transacción, txid, con la posición de la salida dentro de ella. Alice podrá utilizarlo en otros pagos como el resto de sus fondos. [1]
El script scriptPubKey establece las condiciones para gastar una salida. No explica por qué enviaste el dinero. Un bloque contiene importes y scripts scriptPubKey, no etiquetas de pagador, destinatario o cambio. La cartera reconoce sus propias salidas de cambio mediante sus registros de derivación; un explorador de bloques o un analista infiere su función. Ni el orden de las salidas ni la suposición de que la segunda salida es el cambio resultan fiables. Una transacción puede no tener cambio, incluir una salida de cambio, varias salidas controladas por el remitente o salidas de distintos participantes. Por eso, la denominación change expresa la relación entre una salida y una cartera. No es una propiedad independiente registrada en el protocolo. [1]
Una heurística es una inferencia basada en indicios indirectos. Payjoin y CoinJoin permiten que varios participantes construyan una transacción juntos, de modo que las inferencias simples pueden fallar. Un BIP es un documento de propuesta técnica o estándar. Las heurísticas habituales consideran como posible cambio una salida con el mismo tipo de script que las entradas, un importe no redondo, una dirección nueva o un importe que encaje con el cálculo del resto. En un pago corriente con dos salidas, estas inferencias pueden funcionar y vincular gastos posteriores, pero todas admiten contraejemplos. BIP78 Payjoin dificulta deliberadamente tanto la suposición de que todas las entradas tienen el mismo propietario como la identificación del cambio por el tipo de script o por los importes redondos. CoinJoin, los pagos agrupados y las transferencias entre direcciones propias añaden ambigüedad. Una inferencia debe indicar su grado de incertidumbre y las pruebas que la respaldan; por sí sola, una heurística no demuestra ni una propiedad del protocolo ni la titularidad jurídica. [4] [14]
Una PSBT es un paquete con una propuesta de transacción e información adicional que pueden intercambiar la cartera y el dispositivo firmante. Multisig exige autorización según una regla que involucra varias claves. La información de derivación de claves BIP32 incluida en las salidas de una PSBT permite que un dispositivo firmante físico o sin conexión verifique el cambio propuesto. El dispositivo debe derivar por sí mismo la salida correspondiente y comprobar que cumple las mismas reglas de la cartera. BIP174 describe esta comprobación tanto para una sola clave como para Multisig; cuando se requieren varias firmas, no basta con que la salida contenga una clave local. Un coordinador malicioso que prepare la transacción puede sustituir el cambio por una salida propia u ocultar el resto en una comisión excesiva. Antes de firmar, comprueba en una pantalla de confianza las salidas de los destinatarios, la comisión total y cada salida declarada como cambio. [5]
Para calcularlo, llamemos I a los fondos elegidos, R a los pagos, F a la comisión y C al cambio: C = I − R − F. RPC es una interfaz de programación para enviar órdenes al nodo. Coin Selection, la selección de UTXO, determina conjuntamente las entradas, la comisión y el posible cambio. Una combinación que cubra exactamente el importe necesario no requiere una salida de cambio. En los demás casos, la cartera compara el resto con el coste de crear la salida y gastarla más adelante. La llamada RPC fundrawtransaction de Bitcoin Core puede añadir como máximo una salida de cambio y devuelve su posición. Cuando se envían todos los fondos seleccionados a los destinatarios, se omite el cambio de forma deliberada. La selección manual mediante Coin Control modifica las entradas utilizadas y, por tanto, el cambio, pero cada entrada seleccionada se consume por completo. Revisa las entradas definitivas, los importes de los destinatarios, la comisión y el cambio, no solo el importe del pago. [9] [10] [13]
Una HD Wallet deriva muchas claves y direcciones a partir de un secreto inicial. La ruta de derivación indica qué dirección calcular; BIP identifica un documento de propuesta técnica o estándar. Una HD Wallet suele derivar las direcciones de recepción en una rama externa y las de cambio en una rama interna. BIP44 define change=0 como rama externa y change=1 como rama interna. En una cuenta de SegWit nativo corresponden, por ejemplo, a las rutas m/84'/0'/0'/0/i y m/84'/0'/0'/1/i. Es una convención de las carteras, no una regla de consenso; una cartera basada en descriptores puede seguir otras reglas. Usar una nueva dirección interna limita la reutilización de direcciones. Devolver el resto a la dirección original es válido, pero vincula el historial de pagos y puede facilitar su atribución a una persona concreta. [2] [3]
La notación xpub que aparece abajo representa una clave pública extendida: permite derivar datos públicos descendientes, pero no firmar pagos por sí sola. El seed es el valor secreto inicial para derivar claves. Un descriptor de salida especifica el tipo de script, las claves, la información sobre su origen y la regla para derivar nuevas direcciones. Así, la pareja wpkh([fingerprint/84h/0h/0h]xpub…/0/*) y …/1/* puede describir las ramas de recepción y cambio; BIP389 permite expresar varias ramas en una misma notación. La marca internal indica a la cartera qué descriptor debe utilizar para el cambio, sin modificar el script resultante. Durante una recuperación, el seed por sí solo puede no bastar para localizar todos los fondos. Sin la información sobre la cuenta, el tipo de script y el método de derivación, la cartera puede pasar por alto salidas de cambio válidas, aunque todavía existan las claves necesarias. [6] [7] [8]
Dust designa una salida muy pequeña evaluada según las reglas del nodo para retransmitir transacciones. El límite correspondiente se calcula a partir del tipo de salida, el tamaño estimado de los datos necesarios para gastarla más adelante y una tasa configurable llamada dust relay feerate. No existe un único número universal de satoshis ni se trata de una prohibición del consenso. La cartera puede rechazar incluso un cambio superior a ese límite si crear la salida y gastarla después costaría más que el importe devuelto. Ese umbral económico depende de la tasa de comisión actual, la estimación de la tasa futura y el tamaño del script. Omitir el cambio eleva la comisión inmediata; crear una salida demasiado pequeña puede hacer que gastarla más adelante resulte prohibitivamente caro. [12]
Replace-by-fee (RBF) sustituye una transacción sin confirmar por otra con una comisión mayor. La llamada RPC bumpfee de Bitcoin Core puede cubrir la diferencia reduciendo el cambio, añadiendo entradas o creando una nueva salida de cambio. Si el cambio cae por debajo del límite fijado por las reglas del nodo o deja de resultar económicamente aprovechable, puede desaparecer. Gastar cambio sin confirmar crea una transacción posterior que depende de la original; sustituir esta última puede invalidar esa dependencia. La orden bumpfee rechaza la sustitución si la cartera o el mempool del nodo, su conjunto de transacciones sin confirmar, ya contiene una transacción que gasta una salida del pago original. CPFP (Child Pays for Parent) crea una transacción posterior en lugar de sustituir la original. Gasta una salida del pago original controlada por la cartera y paga una comisión mayor. Así aumenta la tasa de comisión conjunta y se incentiva a los mineros a confirmar ambas transacciones juntas. Mientras no se hayan resuelto las sustituciones, no consideres definitivos ni el txid sin confirmar ni la referencia a la salida, outpoint. [11] [15]
Al recuperar una cartera hay que encontrar tanto las direcciones de recepción como las de cambio. En una cartera convencional de una sola firma, normalmente bastan la Seed Phrase (palabras de recuperación) correcta, la passphrase utilizada, si la había, y una configuración compatible. El seed es el valor secreto inicial para derivar claves; la passphrase es una contraseña adicional si se decidió usarla. Por tanto, no todo usuario necesita anotar descriptores manualmente. Con configuraciones propias o Multisig, donde varias claves intervienen en la autorización, las palabras por sí solas pueden no bastar. Conserva también la descripción de la cartera: red, cuenta, tipo de script, reglas de derivación y, en Multisig, las claves públicas extendidas xpub de todos los participantes, su orden y el número de firmas requerido. Si falta la rama /1/*, la recuperación puede omitir el cambio y mostrar un saldo menor. Comprueba direcciones y salidas conocidas de ambas ramas, el rango de derivación y el inicio del recorrido del historial. La prueba debe confirmar también que puedes preparar y firmar correctamente un pago. [2] [6] [7]
Para obtener la imagen más completa, lee esta entrada junto con Dirección de Bitcoin, UTXO, Coin Control, Cartera, Coin Selection, HD Wallet. También enlazan con esta entrada Dirección de Bitcoin, Coin Control, Privacidad en Bitcoin, Seudonimidad.