Estaba escuchando SLP59 con Christian Decker . Hablaron principalmente de fábricas de canales. Si bien la construcción de canales multipartidistas y sistemas de orden superior (subcanales) que se derivan de ellos parece clara y se describe en este documento, me pregunto cómo se tendría que adaptar el protocolo de chismes para que las personas puedan anunciar dichos canales.
Generalmente, existe la necesidad de apuntar a un tx de financiación de un canal de pago para evitar el envío de channel announcment
mensajes no deseados y para autenticar los canales. Sin embargo, con las fábricas de canales, solo hay un gran tx de financiación para el canal multipartidista. Los subcanales están fuera de la cadena.
¿Cómo sería una solución para el protocolo de chismes?
Casi todo seguiría igual. Si observa los mensajes relevantes channel_announcement
y channel_update
tenemos los siguientes formatos:
channel_announcement
- tipo: 256 (
channel_announcement
)- datos:
- [
64
:node_signature_1
]- [
64
:node_signature_2
]- [
64
:bitcoin_signature_1
]- [
64
:bitcoin_signature_2
]- [
2
:len
]- [
len
:features
]- [
32
:chain_hash
]- [
8
:short_channel_id
]- [
33
:node_id_1
]- [
33
:node_id_2
]- [
33
:bitcoin_key_1
]- [
33
:bitcoin_key_2
]
channel_update
- tipo: 258 (
channel_update
)- datos:
- [
64
:signature
]- [
32
:chain_hash
]- [
8
:short_channel_id
]- [
4
:timestamp
]- [
1
:message_flags
]- [
1
:channel_flags
]- [
2
:cltv_expiry_delta
]- [
8
:htlc_minimum_msat
]- [
4
:fee_base_msat
]- [
4
:fee_proportional_millionths
]- [
8
:htlc_maximum_msat
] (opción_canal_htlc_max)
Si observa esto, verá que channel_announcement
incluye una lista ordenada lexicográficamente de firmas de nodos y bitcoins y sus claves públicas correspondientes. Es trivial extenderlo a un número arbitrario de participantes al hacer que esta lista tenga una longitud variable.
En particular, el short_channel_id
alambique se refiere a la salida única con la que se abrió el contrato fuera de la cadena, que también permanecería igual.
channel_update
Puede parecer un poco más complicado ya que ahora hay n*(n-1)
direcciones posibles (pares de emisor-receptor) este contrato se puede atravesar, mientras que en el canal simple de 2 participantes solo tenemos 2 direcciones. Sin embargo, el concepto de dirección se puede ampliar fácilmente para clasificar lexicográficamente todos los pares emisor-receptor y utilizar el índice para identificar el par.
Es probable que sea necesario modificar algunos de los formatos de los mensajes (clave pública de longitud variable y listas de firmas) y hacer explícitos algunos campos (índice de clasificación para el par emisor-receptor), pero el concepto general sigue siendo el mismo.
x
si la salida es para x
satoshis, pero no sabe el saldo actual real. Con los canales multipartidistas, en lugar de dividir el saldo acumulado en dos, lo divides n
para n
los participantes, todo lo demás permanece igual :-)
marca h
short_channel_id
necesitaría cambiar, o que los canales tendrían que ser privados y podríashort_channel_id
ser un valor inventado pasado en una factura de BOLT#11. Pregunta relacionada a la que anteriormente me diste una respuesta.marca h
short_channel_id
transacción del anzuelo podría usarse en la factura BOLT#11, y el beneficiario podría pasarlapayment_hash
a su par de canal de forma privada, de modo que cuando el par reciba una entradaupdate_add_htlc
con el ganchoshort_channel_id
y esopayment_hash
, saben a qué miembro de la fábrica de canales está destinado. Para los pagos salientes, los participantes tendrían unachannel_id
para la transacción que no depende de que esté en una ubicación específica en la cadena de bloques.marca h
short_channel_id
transacción gancho, y cuando el participante de la fábrica recibe unupdate_add_htlc
, lo transmite a todos los miembros de la fábrica. Todos los miembros menos uno deben devolver unupdate_fail_malformed_htlc
, y un miembro debe devolver unupdate_fulfull_htlc
oupdate_fail_htlc
. El nodo podría recopilar estas respuestas y descubrir a quién estaba destinado.