Wie bekomme ich alle möglichen Routen in C-Lightning?

Ich versuche, einige Dienste auf C-Lightning zu schreiben, und ich muss überprüfen, ob bestimmte Zahlungen bestimmte Knoten treffen.

Lightning-Cli getroute nodeid Betrag Risikofaktor

Dies gibt mir eine zufällig ausgewählte einzelne Route aus zwei potenziellen Routen.

Ist es mir möglich, alle möglichen Routen zu bekommen und selbst zu entscheiden?

Antworten (1)

Wenn Sie etwas Programmierzeit investieren, können Sie mit dem listchannelsBefehl alle Kanäle des Blitznetzwerks aus dem Klatschspeicher abrufen. networkxNein, Sie könnten sie in der Bibliothek speichern

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

und dann könnten Sie diesen Algorithmus aus der networkx-Bibliothek verwenden , um einen Generator für alle Pfade zwischen einem Quell- und einem Ziel-Router zu erhalten. Da das Lightning-Netzwerk höchstwahrscheinlich Zyklen haben wird, müssen Sie einen Cutoff definieren. Während 20 aus rechnerischer Sicht zu lang ist, ist es auch die maximale Pfadlänge, die ein Zwiebelpaket gemäß BOLT 04 unterstützt .

Länge: Die maximale Streckenlänge ist auf 20 Sprünge begrenzt.