Niedawno podczas balansu kanałów LN skorzystałem z https://tippin.me żeby z jednego kanału przeżocić sobie gdzieś środki. Chciałem wysłać 100k sat, ale otrzymałem błąd o braku ścieżki. Standardowo, pomyślałem że po prostu balans kanałów pośredniczących nie pozwala na przesłanie takiej ilości. Po chwili spróbowałem dwa razy ponownie i znów ten sam błąd, więc zmniejszyłem wypłatę do 50k sat. Po kilku kilku sekundach, jak widziałem że balans środków się nie zmniejszył, omyłkowo uznałem że znów ten sam błąd, więc już dla testu, bo dziwne że tak małe wartości nie przechodzą zmniejszyłem wypłatę tylko do 10k sat. żeby zobaczyć czy cokolwiek może przejść. No i nagle dostałem dwa raporty naraz o transferze tych 50k sat. i 10k sat. Okazało się że z tymi 50k nie było błędu o braku ścieżki, tylko dłużej to trwało (kilkanaście sekund). Problem jest to że w obu transakcjach skorzystałem z tego samego invoce z tippin. Obie transakcje miały taki sam hash. Po sprawdzeniu stanu konta na tippin miałem jednak tylko 50k sat. ale z mojego kanału zniknęło 60k w dwóch transakcjach.
No i teraz zaczyna się ciekawie. Pomyślałem że po prostu to błąd tippin i że dostał obie płatności, ale nie przypisał mi drugiej do mojego konta, bo dla każdej płatności powinno być inne invoce. 10k sat to drobiazg, ale stwierdziłem że napiszę maila do tpka od tippina że jest taka sytuacja i żeby poprawił błąd u siebie. Opisałem wszystko, hash transakcji i załączyłem screenshot. Najpierw odpisał mi że po hashu odnajduje u siebie, tylko tą jedną transakcję na 10k sat.
Thank you for writing! Apparently it’s a known bug of LND, once the invoice is paid, it doesn’t store any successive payments. Actually, this is the only entry I get on tippin’s node when I try looking up the hash. For some reason, it only stored the first one. I’ll keep on looking into it, to see if I can find a solution.
i załączył screena. Po chwili że to znany błąd LND i podrzucił link do dyskusji na githubie.
Hi again!
No i trochę mnie zdziwiło to, więc mu napisałem że nie chodzi o odzyskanie tych 10k sat, tylko o to że to poważny błąd bo co by było, gdybym stracił w ten sposób więcej? Np. 1 BTC? Po drugie to zastanawia mnie gdzie są te środki, bo one nie mogą po prostu wyparować. To że to jest LN to jedno, ale BTC nie mogą zniknąć, muszą gdzieś być. To działa na tej zasadzie że po prostu na moim kanale z hubem te środki zostają przypisane na jego stronę a kiedy wychodzą od niego to na drugim kanale (czyli na wspólnym adresie multisig) który ma spięty z innym hubem taka sama ilość środków zostaje przypisana do tamtego huba.
Po prostu moje środki nie idą do celu tak naprawdę, ja po prostu je oddaję hubowi z którym jestem połączony a on z innego konta oddaje inne BTC innemu hubowi z którym ma osobny kanał i tak te środki są przekazywane aż do celu. Zdziwiło mnie że tippin nie widzi tych środków u siebie, więc piszę mu że zastanawia mnie gdzie są te środki bo gdzieś muszą być i żeby skontaktował się z ANCIQ, bo to przez kanał, który mam otwarty z ich hubem (podałem mu id) przeszło to 10k sat. Powinni dojść do tego gdzie one są i dlaczego a nie pierdolić o błędzie węzłów... Dostałem odpowiedź:
Hi,
Ja używam węzła Eclair a ta odpowiedź mnie znów wkurwiła bo ci się przekomarzają że Eclair nie powinien pozwolić na wysyłkę drugi raz takiego samego invoce itd. a ja mam to w dupie. Skoro to nie błąd tippina i on nie ma tych środków to gdzie one kur... są? To mnie zastanawia i to powinno być wyjaśnione. Te bugi niech sobie łatają, ale dla mnie istotne jest gdzie po drodze utknęły te środki. Napisałem mu że gdybym to opisał na reddicie to powinna być spora afera.
Hi again!
Oddał mi te 10k, ale nie o to mi chodziło, tylko o to że to poważna sprawa i powinniśmy dojść gdzie one są. Poza tym uważam z tego co wiem jak funkcjonuje LN że to jednak tippin dostał te środki i doradziłem mu żeby nie szukał po samym hashu, ale sprawdził w logach po tej transakcji na 50k czy nie ma kolejnej na 10k zaraz po niej. Ci teraz się między sobą spierają ANCIQ pisze że LND nie powinien przyjąć dwóch takich samych invoce a LND piszą że ANCIQ nie powinien pozwolić na wysłanie dwóch takich samych invoce!!! :DDD Ch... z tym, oba węzły powinny to poprawić, ale do cholery gdzie te środki? :D To mnie zastanawia. Ja uważam że one są u tippina, bo z tego co wiem to środki nie idą po kolei jeden kanał, po tym drugi kanał, trzeci i tak dalej aż do celu, tylko wszystkie kanały jednocześnie wysyłaja środki. Tak zbudowane jest LN, żeby z powodu jakiejś awarii po drodze w trakcie transakcji BTC nie utkwiły w środku drogi. Albo wszystkie kanały wysyłają, albo żaden, to dpodstawa działania LN. Nie instnieje możliwość że jakiś węzeł pośredniczący odbierze środki, ale nie wyśle ich dalej. To przecież podstawy funkcjonowania LN i tak było tworzone. Inaczej to by wiecznie środki nie dochodziły do celu, albo właściciele hubów by je sobie kradli nie przesyłając ich dalej.
FWIW, my reading of Eclair's code is that multiple payments for the same payment hash will fail because the payment hash is used as a primary key in their database:
przy takim błędzie to nic się nie zapisze, prawdopodobnie eclair używa sqlite do logów też
Ja wysłałem z Eclair (noda, nie mobilki) dwie takie tx i się powiodły. Mówię że nie w tym problem, tu chodzi o typka z tippina i że w chuja leci. Chciał mnie uciszyć, że to nie bład u niego tylko w LN bo to beta :D
no jest jakiś błąd w implementacji LN dotyczący przyjmowania wysyłania i przyjmowania tej samej płatności, on też może używać noda Eclair ja go tak rozumiem, a implementacja Eclair nie ma nawet bazy na logi, a baza payments ma ustawiony primary key na hash płatnosci, wiec nie jest w stanie tego przyjąć na poziomie sqla bo silnik bazy na to nie pozwala
https://github.com/ACINQ/eclair/tree/71e50520ec8627cbcb5cc3f7d669b9274aa5a3bd/eclair-core/src/main/scala/fr/acinq/eclair/db
Nie, on używa LND. Nie rozumiesz że to nie jest istotne?