Lightning channel force close

Ich habe ein Raspi-Umbrel zu Testzwecken laufen, allerdings dort keine offenen oder geschlossenen Kanäle. Obligatorische Apps wären Bitcoin Node, Lightning Node und gerne auch Lightning Shell, mit Letzterer hast du 'ne leicht erreichbare Web-Shell mit einigen Tools aber hauptsächlich 'nen lncli.

Falls du die Lightning Shell noch nicht in deinem Umbrel installiert hast, würde ich dich darum bitten.

In der Lightning Shell haust du mal bitte folgende Kommandos raus:

lncli pendingchannels

lncli listchannels

lncli closedchannels

lncli listunspent

Die Ausgabe mancher dieser Kommandos kann länglich sein. Am besten mit dem Tool „Vorformatierter Test“ (Strg-E) in deine Antwort einfügen. Wenn du Teile unkenntlich machen möchtest, dann tue das, wie du möchtest. Allerdings sollte dabei mit Bedacht unkenntlich gemacht werden, damit keine für die Analyse wichtigen Sachen wegfallen.

Grund des Force Close war eine defekte SD Karte.

so wie ich das verstanden habe liegen meine sats nach dem Force Close auf bc1q…newt,
welches eine Native-Segwit Adresse ist.
Nachdem ich die Node neu aufgesetzt habe wurden aus meinen 24 Wörter jedoch Taproot
Public Keys erzeugt. Somit hatte ich natürlich kein Zugriff auf die bc1q Native-Segwit Adresse mehr.

Mein Seed ist leider ein aezeed Seed. Somit kann ich ihn nicht einfach in Electrum recovern.
Zusätzlich darf das dan nicht mit Taproot kombiniert werden. Dann sollten wieder alle Funds da sein. Wie ich hinbekomme weiß ich jedoch noch nicht.

Ich hab’ deinen Fall nicht in Erinnerung, falls du den hier im Forum schon gepostet haben solltest.
Was war das für eine Node (RaspiBlitz oder Umbrel oder noch etwas anderes)?

Wieso ist eine defekte microSD ein Grund für einen Force Close? Normalerweise sind alle relevanten laufenden Daten eines RaspiBlitz’ oder Umbrel auf der SSD. Man beschreibt eine frische microSD mit der jeweiligen Node-Image und startet davon. Umbrel und besonders RaspiBlitz sollten dann ein bereits vorhandenes System wiedererkennen. (Klar kann dabei auch etwas schiefgehen.)

Was heisst hier „die Node neu aufgesetzt“? Was wurde alles platt und neu gemacht?

So wie ich das sehe, kann LND mit mehreren Adressformaten umgehen, siehe lncli wallet accounts list.

Evtl. kann man irgendwoher den zugehörigen BIP-32 Extended Private Key rauspopeln. Muss man mal suchen. LND ist meines Wissens die einzige Wallet, die Aezeed Recovery Wörter benutzt. Ich meine aber irgendwo gelesen zu haben, daß man es doch irgendwie zu einem xprv konvertiert bekommt.
Ich bin da durchaus optimistisch, daß da noch 'was geht.

1 „Gefällt mir“

Wusste ich’s doch, daß ich dafür ein Lesezeichen mir gespeichert habe:

Spannend wird’s dann hier: Section: Seed and passphrase input

Bitte mit extremer Vorsicht herangehen. Ihr braucht eine „sichere Spielwiese“, die besser offline ist und bleibt bzw. verwerfbar ist, wie z.B. eine Tails OS Sitzung ohne Persistenz.

Auf einem Online-Rechner hantiert man besser nicht mit Recovery Wörtern und xprv herum!
(Ausnahme: ein sicheres Live Linux, das nur im RAM läuft und ihr wisst genau, was ihr tut und warum dazu das System online sein muss!)

Gehirn einschalten, Sicherheit beachten und nur das tun, was man gut versteht, sonst wird’s ein Rezept für Desaster!

P.S.
Ich habe noch keine Erfahrung mit den chantools sammeln können bzw. müssen. Ist aber auf jeden Fall eine Möglichkeit aus einem Aezeed ein xprv zu bekommen. Die Ableitungspfade, die LND wohl verwendet, kann man sich per lncli wallet accounts list anzeigen lassen. Da kommt 'ne lange Liste bei raus, wobei nicht alles verwendet wurde bzw. auch Einträge zu sehen sind, wo überhaupt Adressen eines Ableitungspfads genutzt wurden.
Mit genug Verständnis und dem xprv und den Ableitungspfaden wäre ich optimistisch, daß eine Recovery dann mit Electrum möglich wäre.

Ich nutze MyNode. Als ich die SD neu aufgesetzt habe, waren keine Channel mehr vorhanden.

Habe ich schon probiert. Hat nicht geholfen

Wär’ ja denkbar, daß du etwas verkehrt gemacht hast.

Man muss natürlich ziemlich fit mit BIP-32, Extended Private Keys und Derivation Paths sein. Auch wie man sowas 100% sicher in Electrum oder mit Descriptors in Bitcoin Core wiederherstellen kann.
Das schüttel ich auch nicht locker aus dem Handgelenk, sondern müsste mir erstmal Testwallets bauen und die Wiederherstellungsschritte nachbauen.

Das letzte Mal, wo ich sowas ausprobiert habe, ist schon etwas länger her. Ich kann nur sagen, daß es möglich ist, selbst eine BIP-39 kompatible Wallet z.B. kann man in Bitcoin Core mit Descriptoren korrekt wiederherstellen. Auch wenn Core nix mit BIP-39 Recovery Wörtern anfangen kann, kann man über den BIP-32 xprv zur selben Wallet in Core gelangen. Man muss nur wissen wie und darf nicht den kleinsten Fehler beim Bauen der Descriptoren und der Descriptor-Wallet in Core machen.

chantools hat so einige Kommandos, die auf den ersten Blick nützlich erscheinen, wie derivekey, rescueclosed, showrootkey, sweeptimelock, sweeptimelockmanual, …

Da gibt es doch eine Firma, die Roman mal vorgestellt hatte, welche sich auf recovery Sachen spezialisiert hat. Die wollen natürlich paar Prozent davon haben. Ich bin aber mit meinem Latein am Ende.

Wenn man der Firma trauen kann und selbst vollkommen am Ende seines Lateins angekommen ist, ist das sicherlich eine letzte Option.

Ich gebe nicht so schnell auf, die Coins laufen ja nicht von alleine weg. Wenn man Monate lernen muss, dann akzeptiere ich das für mich. Gibt ja Testnet Bitcoins, wo man kostenlos eine Menge nachstellen kann, auch mit Lightning.

Ich sehe das als intellektuelle Herausforderung. Falls der LND Slack Channel noch in Betrieb ist, kann man dort nach etwas Vorarbeit auch schlaue Fragen stellen und ggf. konstruktive Hilfe bekommen. Man muss nur eben auch selbst einiges an Arbeit und Wissen investieren.

BlueWallet versteht ebenfalls Aezeed. Ebenso Blixt Wallet (Achtung, ist eine ganze LND Node mit Neutrino Backend!, also nicht den Seed dort wiederherstellen, wenn die anderen Node noch online ist).

Mit Blixt ist es sehr einfach möglich, in kurzer Zeit einen Rescan nach vermissten Funds durchzuführen ohne Akrobatik mit den Keys machen zu müssen.

1 „Gefällt mir“

ok, nachdem ich gelernt habe, dass ich die Lightning Shell nicht auf Safari laufen lassen kann, habe ich die Kommandos auf Chrome ausführen können:

Die eingerahmte Transaktion kann ich in meiner Liste finden, die anderen nicht.

Zusammengefasst:

  • mindestens 1 offenen Channel (Liste unvollständig)
  • 4 unspent utxos in der lightning wallet (~ 2M sats)
  • keine pending channels

Ein offener Channel stimmt. Es sind aber noch 5 MIo die fehlen und drei Channels die noch nicht abgerechnet sind.

Nach dem Zusammenbruch meiner Node konnte ich den Channel zu Kraken zwar im Mempool als „aktiv“ sehen, aber werden auf Lightning, RTL noch Thunderhub sehen/erreichen. Habe Kraken dann gebeten den Kanal zu schließen, was auch gemacht wurde…. nur das Geld ist nie auf meiner Node Wallet angekommen, sondern hängt auf dem „Sperrkonto“ fest.

Sehr verworren das Ganze. Hatte versucht die Konstellation nachzuvollziehen. Also scheinbar gibt es zwei Nodes: PinselM und PinselUmbrel, welche beide noch aktiv sind.

PinselM: https://mempool.space/lightning/node/033489213ae9c3cb1ea893b3becd5cdd61e7f5e9e3e16e9daa4d0d008b70c6ec39
hat noch einen aktiven Kanal zu blitzone: https://mempool.space/lightning/channel/883293765731942400 über 1M Sats offen. Dieser ist nicht geschlossen worden (auch kein force close). Eventuell ist die Closing Transaction aufgrund hoher Mempool-Gebühren aus dem Mempool gefallen.

PinselUmbrel: https://mempool.space/lightning/node/02d5f9ae591665abb35ab0d99ec52368163e20b4ad3b3e2489a4602885ca492196
hat noch drei offene Kanäle

  • 1M zu blitzone, Status: aktiv
  • 2M zu WeitblickUmbrel, Status: inaktiv
  • 20k sats zu lightningblitz, Status: inaktiv

Die beiden inaktiven Kanäle sind zu Nodes, die es scheinbar nicht mehr gibt.

Wenn nun das Ziel ist, beide Nodes zu rückabwickeln, würde ich wie folgt vorgehen: Sofern die beiden Nodes (PinselM und PinselUmbrel) noch aktiv sind, die aktiven Kanäle schließen (cooperative) und die inaktiven versuchen zu force closen.

Wenn es PinselM nicht mehr gibt (Stichwort „Zusammenbruch“), hoffe ich, dass du noch ein SCB (channel.backup Datei) hast, die du verwenden kannst, um den verbleibenden Kanal zu schließen (force close). Die Funds musst du über eine Wiederherstellung von PinselM (bspw. mit der Blixt Wallet und dem Seed Phrase von PinselM) einsammeln (evtl. rescan-wallet-transactions durchführen) und in den Cold Storage oder sonst wohin wegtransferieren.

Für PinselUmbrel im Prinzip dasselbe Spiel: Aktive Channels schließen, inaktive force closen + SCB, vermisste Funds rescannen. Da PinselUmbrel noch aktiv scheint, könnte hier bereits ein Rescan helfen. Hierzu reset-wallet-transactions=true in die lnd.conf unter Sektion [Application Options] eintragen, LND neustarten und warten bis der Rescan abgeschlossen ist. Den Eintrag inzwischen wieder entfernen, da sonst bei jedem Neustart von LND dies wiederholt wird.

PinselM ist die Node von meinem Schwiegersohn, die auch problemlos läuft. Pinsel und PinselUmbrel ist die selbe HW. Hatte die bei der Umstellung auf Umbrel nur entsprechend umbenannt.

Wir hatten in der Familie zum Testen/Üben/Spielen/Lernen einen Ring of Fire aufgebaut.

Davon sind mir Pinsel (PinselUmbrel) und Weitblick zusammengebrochen. Die habe ich dann erst mit Fulmo und später mit Umbrel aus den alten Seeds wieder hergestellt. Vor der Umstellung (vor etwa 2 Monaten) hatte ich die noch vorhandenen Bestände abgezogen, damit nichts verloren geht, aber die gelb markierten Channels wurden noch nicht abgerechnet.

Habe mittlerweile auch den reset-wallet-transactions=true durchgeführt, aber die fehlenden Gutschriften sind immer noch nicht zu sehen.

Vor 7 Monaten (lila Markierung) hatte ich meinen letzten Channel zu Kraken mit 2 Mio. eröffnet. Der wurde dann auch über ein Force Close von Kraken geschlossen, aber das Geld ist, genau wie das von Mainnet.Lightning und Blitzone, noch auf dem „Sperrkonto“. Vor 2 Monaten habe ich das Konto leer geräumt. In der Zeit dazwischen (7 month ago bis 2 month ago) gab es keine Gutschriften. Die Gutschriften danach sind Einzahlungen von mir, um die Node unter Umbrel zu testen, also keine Gutschriften der alten Channels.

An die inaktiven Channels komme ich auch gar nicht mehr ran.

Die Funds der drei markierten Channels von der Pinsel Node sind noch nicht wieder auf der Mainchain angekommen und hängen auf den „Sperrkonten“

bc1qdw8l48lyu76etncsaqlqz4s8x040ku8s9hlkj83unm23wvvgnf3qf7e8qq
bc1qsvtdr652406vru5d8yzzyqpy50jwvte3lwws0k93f72fgvh0zcws8zqgtd
bc1qkyy55u6c5k39elpagl4ln4lfftt89ry2vh8fvkl6efegypy4azxqt77pnd

Von hier fehlt der letzte Schritt / Überweisung auf meine Node

Sind die inaktiven Channels noch aus der Zeit vor der Umstellung?
Hast du von diesem Zeitpunkt zufällig ein SCB / channel.backup File?
Mögliche Backuporte:

  • Lokale Dateien von Thunderhub oder LND selbst (lncli kann channel.backups erstellen)
  • Amboss (Thunderhub kann Backups zu Amboss hochladen)
  • BoS (Telegram Bot erhält immer SCB files, bei jeder Öffnung/Schließung eines Channels)

Ja, die sind noch aus der Zeit vor dem Zusammenbruch. Erstellt im Dezember 22 und Kraken am 3.3.23

Das mit dem USB Fulmo Channel.Backup habe ich nur ein mal am 14.11.22 hinbekommen. Danach gab es immer Fehlermeldungen. Deswegen hatte ich mich auf die RTL Channel-Backup verlassen, aber das hatte dann auch nicht funktioniert.

Nachdem die Channels durch das Force-Close gelaufen sind kann ich mit den Channel Backups doch gar nichts mehr anfangen.

Du könntest eine Sache versuchen…

Nimm die Force Close Transaction eines Channels, dessen Funds du nicht mehr hast und republishe sie mit deinem jetzigen LND. Manchmal „erinnert“ sich LND dann wieder, dass der utxo dazu gehört. Dazu:

02000000000101d1c3221b26241e5a0a97da2b738f3cc8b4dba4eef8f326f0bd136d66437986f0000000000079292080044a01000000000000220020728ce3508d558c8e244f1ba6055a4c1a3d8b3593e9a0aef845344d06998a3add4a0100000000000022002079d284f5fc778616563f3c4ea4d94cf11fac76372db70ab23fd65afad81866a36c9b02000000000022002071211d454037569ff5f370307972783d5051a3b574c57fa0acb94a2100a8e1e285db1b00000000002200206b8ffa9fe4e7b595cf10e83e01560733eafb70f02dff691e3c9ed51731889a62040047304402207d8c3ac910e564977bd62a56bf81651d6296c90e76d09ffd2ef380fa7a5c4e080220711e81542820e9dcbb6180cd106be795ce972b700adad5fcf0edd912c1dcf1a401483045022100899f3ebfa5adf069778d2842008b9aba1fb66cb8a9567b2134280e8e83a9f85e0220048aed4485eacf30c3864827054df3b452b4f7f0a0d76050b028cf967dacd35001475221030e1e0b0dbe3765657f7f7351ad32c87c8c2338484ef9e0c79542bf9a7cddfd32210347adb70944a672ef78da7f323d39a7c93608dbf3d3dfab10e2fbf29c22eb9d3952ae3134c320
  • Kopiere diese und füge sie in dem Kommandozeilenbefehl mit ein:
$ lncli wallet publishtx 02000000000101d1c3221b26241e5a0a97da2b738f3cc8b4dba4eef8f326f0bd136d66437986f0000000000079292080044a01000000000000220020728ce3508d558c8e244f1ba6055a4c1a3d8b3593e9a0aef845344d06998a3add4a0100000000000022002079d284f5fc778616563f3c4ea4d94cf11fac76372db70ab23fd65afad81866a36c9b02000000000022002071211d454037569ff5f370307972783d5051a3b574c57fa0acb94a2100a8e1e285db1b00000000002200206b8ffa9fe4e7b595cf10e83e01560733eafb70f02dff691e3c9ed51731889a62040047304402207d8c3ac910e564977bd62a56bf81651d6296c90e76d09ffd2ef380fa7a5c4e080220711e81542820e9dcbb6180cd106be795ce972b700adad5fcf0edd912c1dcf1a401483045022100899f3ebfa5adf069778d2842008b9aba1fb66cb8a9567b2134280e8e83a9f85e0220048aed4485eacf30c3864827054df3b452b4f7f0a0d76050b028cf967dacd35001475221030e1e0b0dbe3765657f7f7351ad32c87c8c2338484ef9e0c79542bf9a7cddfd32210347adb70944a672ef78da7f323d39a7c93608dbf3d3dfab10e2fbf29c22eb9d3952ae3134c320

Mal sehen, ob sich LND erinnert und die Funds dir wieder zuschreibt. Zu prüfen mit: lncli listunspent

Die neue Transaktionslist (links, nach Ausführung des Befehls) sieht aus wie die alte (rechts) :disappointed_relieved: