Skip to content

Latest commit

 

History

History
82 lines (63 loc) · 9.38 KB

09-features.md

File metadata and controls

82 lines (63 loc) · 9.38 KB

BOLT #9: Feature Flags Asignados

Este documento rastrea la asignación de features flags en el mensaje init (BOLT #1), así como campos features en los mensajes channel_announcement y node_announcement (BOLT #7). Los flags se rastrean por separado, ya que es probable que se agreguen nuevos flags con el tiempo.

Los indicadores se numeran desde el bit menos significativo, en el bit 0 (es decir, 0x1, un bit par). Por lo general, se asignan en pares para que las funciones se puedan introducir como opcionales (bits impares) y luego actualizarse para que sean obligatorias (bits pares), que serán rechazadas por los nodos obsoletos: consulte BOLT #1: The init Message.

Algunas funciones no tienen sentido por canal o por nodo, por lo que cada función define cómo se presenta en esos contextos. Es posible que se requieran algunas funciones para abrir un canal, pero no un requisito para el uso del canal, por lo que la presentación de esas funciones depende de la función en sí.

La columna Contexto se decodifica de la siguiente manera:

  • I: presentado en el mensaje init.
  • N: presentado en los mensajes node_announcement.
  • C: presentado en el mensaje channel_announcement.
  • C-: presentado en el mensaje channel_announcement, pero siempre impar (opcional).
  • C+: presentado en el mensaje channel_announcement, pero siempre par (requerido).
  • 9: presentado en las facturas BOLT 11.
  • B: presentado en el campo allowed_features de una ruta blinded.
Bits Nombre Descrición Contexto Dependencias Enlace
0/1 option_data_loss_protect Requiere o admite campos channel_reestablish adicionales IN BOLT #2
3 initial_routing_sync Quien envío necesita un volcado de información de enrutamiento completo I BOLT #7
4/5 option_upfront_shutdown_script Se compromete con un scriptpubkey de apagado al abrir el canal IN BOLT #2
6/7 gossip_queries Control de chismes más sofisticado IN BOLT #7
8/9 var_onion_optin Requiere/admite cargas útiles de cebolla de enrutamiento de longitud variable IN9 Routing Onion Specification
10/11 gossip_queries_ex Las consultas de chismes pueden incluir información adicional IN gossip_queries BOLT #7
12/13 option_static_remotekey Clave estática para salida remota IN BOLT #3
14/15 payment_secret El nodo admite el campo payment_secret IN9 var_onion_optin Routing Onion Specification
16/17 basic_mpp El nodo puede recibir pagos multiparte básicos IN9 payment_secret BOLT #4
18/19 option_support_large_channel Puede crear canales grandes IN BOLT #2
20/21 option_anchor_outputs Anchor outputs IN option_static_remotekey BOLT #3
22/23 option_anchors_zero_fee_htlc_tx Anchor commitment Tipo con transacciones HTLC de tarifa cero IN option_static_remotekey BOLT #3, lightning-dev
24/25 option_route_blinding El nodo admite rutas ciegas IN9 var_onion_optin BOLT #4
26/27 option_shutdown_anysegwit Futuras versiones de segwit permitidas en shutdown IN BOLT #2
44/45 option_channel_type El nodo admite el campo channel_type en abrir/aceptar IN BOLT #2
46/47 option_scid_alias Suministro del alias ​​del canal para enrutamiento IN BOLT #2
48/49 option_payment_metadata Metadatos de pago en registro tlv 9 BOLT #11
50/51 option_zeroconf Entiende los tipos de canales de zeroconf IN option_scid_alias BOLT #2

Definiciones

Nosotros definimos option_anchors como option_anchor_outputs || option_anchors_zero_fee_htlc_tx.

Requisitos

El nodo de origen:

  • Si es compatible con una función anterior, DEBERÍA establecer el bit impar correspondiente en todos los campos de función indicados por la columna Contexto, a menos que se indique que debe configurar el bit de función par en su lugar.
  • Si requiere una función anterior, DEBE configurar el bit de función par correspondiente en todos los campos de función indicados por la columna Contexto, a menos que se indique que debe configurar el bit de función impar en su lugar.
  • NO DEBE establecer bits de función que no admita.
  • NO DEBE establecer bits de función en campos no especificados en la tabla anterior.
  • DEBE establecer todas las dependencias de características transitivas.

El nodo de origen DEBE soportar:

  • var_onion_optin

Los requisitos para recibir bits específicos se definen en las secciones vinculadas de la tabla anterior. Los requisitos para los bits de función que no están definidos anteriormente se pueden encontrar en BOLT #1: The init Message.

Racional

No hay un bit par para initial_routing_sync, ya que no tendría mucho sentido: un nodo local no puede determinar si un nodo remoto cumple, y debe interpretar el flag, como se define en la especificación inicial.

Tenga en cuenta que para los feature flags que están disponibles en los contextos de factura node_announcement y BOLT 11, las funciones establecidas en BOLT 11 la factura debe anular los establecidos en node_announcement. Esto mantiene las cosas consistentes con el comportamiento de las features desconocidas como se especifica en BOLT 7.

El origen debe establecer todas las dependencias de características transitivas para crear un vector de características bien formado. Al validar todas las dependencias conocidas por adelantado, esto simplifica la puerta lógica en un solo bit de función; se sabe que las dependencias de la feature están establecidas y no es necesario validarlas en cada entrada de feature.

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.