¿Cómo obtener todas las rutas potenciales en c-lightning?

Estoy tratando de escribir algunos servicios además de c-lightning y necesito verificar si ciertos pagos llegan a ciertos nodos.

lightning-cli getroute nodeid cantidad factor de riesgo

Esto me da una ruta única seleccionada al azar de dos posibles rutas.

¿Es posible para mí obtener todas las rutas posibles y decidir por mí mismo?

Respuestas (1)

si invierte algo de tiempo de programación, puede usar el listchannelscomando para recuperar todos los canales de la red lightning de la tienda de chismes. No, podrías almacenarlos en la networkxbiblioteca.

import networkx as nx
network = ln.listchannels()
nx.Graph()                                                                                                                 
for channel in network:                                                                                                        
    G.add_edge(channel["source"],                                                                                              
               channel["destination"],                                                                                         
               **channel)

y luego podría usar este algoritmo de la biblioteca networkx para obtener un generador para todas las rutas entre una ruta de origen y una de destino. Dado que lo más probable es que la red de rayos tenga ciclos, debe definir un corte. Si bien 20 es demasiado largo desde el punto de vista computacional, también es la longitud de ruta máxima que admite un paquete de cebolla de acuerdo con BOLT 04 .

Longitud: la longitud máxima de la ruta está limitada a 20 saltos.