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?
Wenn Sie etwas Programmierzeit investieren, können Sie mit dem listchannels
Befehl alle Kanäle des Blitznetzwerks aus dem Klatschspeicher abrufen. networkx
Nein, 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.