¿Por qué usamos CLTV en lugar de CSV en la salida HTLC de la transacción de compromiso?

En las transacciones de compromiso de Lightning Network, las salidas ofrecidas/recibidas de HTLC generalmente pagan al nodo de oferta después de un tiempo de espera que se programa mediante CLTV. En otras partes de las transacciones de compromiso (como to_self_delay) usamos CSV para garantizar que la salida no se pueda gastar hasta que haya pasado cierto tiempo. ¿Por qué se eligió CLTV como la opción de diseño para las salidas HTLC?

Respuestas (2)

Como tú mismo has dicho, CSV es relativo al momento en que aparece la transacción en la cadena de bloques, mientras que CLTV es absoluto. Simplemente tienen diferentes significados, que son útiles para diferentes cosas:

El tiempo de espera de RSMC está destinado a comenzar solo cuando alguien envía un compromiso tx a la cadena de bloques. Entonces tiene que ser relativo.

El tiempo de espera de HTLC, por otro lado, está destinado a hacer que un HTLC sea temporal, incluso si en la mayoría de los casos nunca llegará a la cadena de bloques. Por lo tanto, debe ser absoluto.

Al crear una transacción de compromiso, consume la salida multifirma de la transacción de financiación como entrada. CSV es un código de operación de bloqueo de tiempo relativo, lo que significa que el tiempo especificado en el CSV es una función de cuándo se extrajo la transacción de financiación. Por ejemplo, si crea una salida CSV de 100 bloques, esa salida solo se puede consumir después de que hayan pasado 100 bloques desde que se creó la transacción de financiación.

Al enviar un HTLC, el primer nodo por el que pasa será con el que tiene canal directo. Dado que usted y su contraparte de canal están en la misma página relacionada con la transacción de financiación, puede usar libremente el código de operación CSV al bloquear el tiempo to_self_delaypara la salida del nodo local. Sin embargo, a partir de ahí se enviará a los nodos que no tenga canales abiertos directos. Estos nodos tienen canal abierto con otros nodos cuyo tiempo de transacción de fondeo será diferente al que tenías abierto con tu contraparte de canal. Por lo tanto, especificar CSV en una salida HTLC crearía tiempos de espera ambiguos desde el punto de vista de las diferentes partes del canal. Para garantizar la coherencia, debe utilizar el tiempo de bloqueo absoluto, por lo que se elige CLTV.

Esta respuesta es confusa. El resultado de la transacción de financiación es simplemente un multi-sig 2 de 2 sin bloqueo de tiempo. Por lo tanto, el momento de la transacción de financiación no tiene nada que ver aquí. Como alguien más mencionó, desea que la cuenta regresiva comience cuando una transacción de compromiso llegue a la cadena de bloques, por lo que CSV tiene sentido allí. El uso del tiempo absoluto en HTLC se debe a la coordinación de tiempo en el enrutamiento, en el caso de que una parte intermedia confirme el HTLC antes que otra.