Glosario / Lightning y capa 2
Transacción de penalización
- ¿Qué es una transacción de penalización?
- Una transacción de penalización es el barrido on-chain, firmado con la clave de revocación que usted ya tiene, que se lleva todas las salidas de un canal Lightning cuando su par publica una transacción de compromiso revocada.
Los canales Lightning los vigilan sus dos participantes, y la transacción de penalización es la forma de hacer cumplir las reglas. BOLT 5 asigna a ese barrido un testigo de 160 bytes para la salida del saldo principal, e indica dividirlo por salidas si no se ha confirmado 18 bloques antes de que expire el bloqueo temporal (timelock) de la parte que hace trampa. Si usted mantiene monedas en canales, esta transacción es lo que se interpone entre usted y un par que hace retroceder su saldo.
Cómo funciona
Una transacción de penalización gasta salidas cuyo propietario ya le ha cedido a usted el derecho a tomarlas.
Cada vez que el saldo de un canal se mueve, cada lado entrega el secreto que hay detrás del estado que está reemplazando. Con ese secreto en su poder, usted puede derivar la clave privada de revocación de la antigua transacción de compromiso de su par, que es la clave que desbloquea el lado de su par en esa transacción. BOLT 5 resume la consecuencia en una línea: en cuanto un nodo descubre una transacción de compromiso para la que tiene una clave privada de revocación, la salida de la transacción de financiación queda resuelta. No queda nada que negociar.
Lo que usted barre depende de lo que llevaba el compromiso obsoleto. La especificación le obliga a resolver con la clave de revocación la salida principal de la parte que hace trampa, a resolver cada pago que esa parte ofreció de una de tres maneras (gastar el compromiso con la clave de revocación, gastarlo con la preimagen del pago si usted la conoce, o gastar la transacción HTLC-timeout de esa parte una vez que esta la publique) y a resolver también con la clave de revocación las transacciones HTLC-success y HTLC-timeout de esa parte. También le indica que, ya que está en ello, obtenga la preimagen a partir del testigo de la entrada, porque un pago que usted estaba a punto de perder quizá todavía pueda reclamarse al salto anterior a usted.
Tres formas de testigo cubren todo eso, y BOLT 5 da el tamaño de cada una: 160 bytes para la salida del saldo principal, 243 bytes para un pago ofrecido y 249 bytes para uno aceptado. Sume el peso de la propia entrada, 164, y cada salida reclamada cuesta 324, 407 o 413. El resto de la transacción son 53 bytes de datos que no son de testigo más un encabezado de testigo de 2 bytes. También puede incorporar su propia salida principal del mismo compromiso, lo que añade 272 y sirve sobre todo para reducir la comisión que usted paga.
Hay dos cosas que una transacción de penalización no es. No es automática: bitcoin no penaliza a nadie, y el barrido solo se produce si un software que usted ejecuta, o que usted contrató, ve confirmarse la transacción obsoleta y reacciona antes de que se agote el bloqueo temporal de la parte que hace trampa. Tampoco es gratis. El barrido paga el nivel de comisión del momento como cualquier otra transacción, así que no vale la pena defender un canal que contiene menos de lo que cuesta vaciarlo, permitan lo que permitan las reglas.
Por qué importa cuando compra bitcoin
Una transacción de penalización solo le defiende en una billetera en la que usted conserva transacciones de compromiso propias, lo que descarta la mayoría de las aplicaciones Lightning sencillas.
Las 41 reseñas de billeteras de este sitio se dividen exactamente por esa línea. Phoenix ejecuta en el propio teléfono un auténtico nodo Lightning de autocustodia, así que el mecanismo de penalización le pertenece a usted, y también el deber de vigilar: la ruta de recuperación de ACINQ le hace forzar el cierre y esperar aproximadamente 720 bloques, alrededor de cinco días, antes de que los fondos del canal sean suyos on-chain. BlueWallet solo admite bitcoin y es inusualmente capaz on-chain, pero su parte Lightning es una cuenta en un servidor LNDHub, y a menos que ese servidor sea de usted, el operador puede mover esas monedas, así que usted no tiene ninguna transacción de compromiso con la que penalizar a nadie. Wallet of Satoshi también funciona con custodia en su modo predeterminado, y esa es parte de la razón por la que aquí tiene una calificación de 2,7 en lugar de figurar en una recomendación.
Léalo como una disyuntiva, no como un veredicto. Lightning con custodia elimina de su lista de amenazas a los pares que hacen trampa y los reemplaza por una sola empresa que puede congelar o retirar el servicio. Lightning de autocustodia le entrega la transacción de penalización y la obligación de estar despierto. El error que atrapa a la gente en cualquiera de los dos lados es reutilizar un respaldo antiguo de la frase semilla: doce palabras restauran las monedas on-chain y no saben nada de qué estado del canal es el actual, así que el compromiso que usted publica es obsoleto y la transacción de penalización que sigue le apunta a usted.
Un cierre revocado en un canal de Phoenix
Imagine un canal de Phoenix con tres pagos todavía en tránsito cuando el nodo del otro extremo publica un compromiso de la semana pasada.
Su software detecta el txid, deriva la clave de revocación y construye un único barrido. Pesa 324 por la salida principal de la parte que hace trampa, 413 por cada una de las tres salidas de pagos aceptados, 272 por incorporar su propia salida principal, cuatro veces 53 bytes de cuerpo de la transacción y un encabezado de 2 bytes: 2.049 unidades de peso, es decir, unos 512 bytes virtuales. El dinero de la parte que hace trampa está detrás del bloqueo temporal relativo que los dos lados acordaron al abrirse el canal, y los retrasos de ese tipo se cuentan en días, no en minutos: recuperarse de un cierre forzado en Phoenix lleva aproximadamente 720 bloques, alrededor de cinco días. El suyo es gastable en cuanto un minero toma su transacción.
BOLT 5 también calcula el techo. Frente a un peso máximo de 400.000 para una transacción estándar y la entrada más pesada en 413, una sola transacción de penalización llega a 966 salidas de pago, el doble de los 483 pagos pendientes por lado que ya permite el protocolo entre pares, así que incluso un canal completamente lleno puede vaciarse de una sola vez.
Luego viene la razón para no hacerlo. Donde el canal usa salidas ancla, las propias transacciones de pago de la parte que hace trampa van firmadas con los indicadores SIGHASH_SINGLE y SIGHASH_ANYONECANPAY, así que esa parte puede añadirles entradas propias e inmovilizar el barrido combinado de usted en la mempool mediante pinning (dejar atascada una transacción a propósito) el tiempo suficiente para que expire el bloqueo temporal de la salida principal de esa parte. Si la confirmación no ha llegado cuando a esa salida le queda para expirar menos que el retraso de seguridad, una ventana que BOLT 5 deja a criterio de cada nodo aunque recomienda 18 bloques, se le indica que divida el trabajo: una transacción de penalización por cada salida revocada, aumentando la comisión de cada una hasta que se confirme. Con compromisos sin comisión, cada una de ellas debe además quedar dentro del límite de 10.000 bytes virtuales que tienen las transacciones de versión 3, o puede que nunca llegue a los mineros.
Transacción de penalización frente a cierre forzado
Un cierre forzado es cualquier vía de salida unilateral de un canal, mientras que una transacción de penalización es la respuesta a una vía de salida deshonesta.
La mayoría de los cierres forzados son anodinos. Un par se desconectó, se acercaba el plazo de un pago, el nodo de alguien publicó el estado actual, y ambos lados reciben el saldo que se les debía una vez que pasa el retraso. Una transacción de penalización solo existe en el caso concreto en que el compromiso publicado ya se había revocado, y se lleva el canal entero en lugar de una parte. Toda transacción de penalización sigue a un cierre forzado, y casi ningún cierre forzado produce una.
Transacción de penalización frente a watchtower
Una transacción de penalización es una transacción de bitcoin firmada, mientras que una watchtower (torre de vigilancia) es una máquina que espera para difundir una en su nombre.
La watchtower guarda un prefijo corto del txid revocado y una cadena de bytes que no puede descifrar hasta que esa transacción aparezca en un bloque. El barrido que va dentro lo construyó y lo firmó su propio nodo, con pago a una dirección elegida antes de que nada fallara, así que contratar una watchtower no le cuesta ninguna clave. Confundir las dos produce la preocupación equivocada. No tener ninguna watchtower no debilita en absoluto la transacción de penalización; significa que nadie está despierto para enviarla mientras su computadora portátil está cerrada.