TL;DR – Nie zgub swojego ziarna regeneracyjnego recovery!

Klient przyszedł do nas ze starym Nano S z oprogramowaniem układowym 1.2, zna szpilkę, ale zgubione ziarno, i próbuj, dostęp do 24 ETH i $50 + k przywrócić wartość tokena ERC-20.

Stare oprogramowanie układowe nano 1.2 nie można zaktualizować, a nawet gdyby mogła, to byłoby zbyt ryzykowne, ponieważ klient stracił swoje nasienie. Aplikacja Ethereum w ich księdze nie ma numeru wersji, ale ma opcję “Obsługa przeglądarki”. Więc zdecydowaliśmy, próba przywrócenia za pomocą starej wersji MyCrypto, który mógłby komunikować się ze starą księgą (i pracowałem wcześniej nad takimi przywracaniami). Byliśmy w stanie, podpisać test Tx na urządzeniu, ale kiedy wysłaliśmy Tx do sieci, mamy teraz błąd: *tylko chroniony przed odtwarzaniem (EIP-155) Transakcje dozwolone przez RPC *. Hmmmm…

Więc doszliśmy do wniosku, może powinniśmy wypróbować narzędzia niskopoziomowe, co my dla jednego [wcześniejsze odzyskanie ETH ze starszej księgi](https://www.reddit.com/r/ledgerwallet/comments/kz2eob/successful_recovery_story_how_we_recovered_100/).

Wysłaliśmy więc do naszego klienta bootowalny obraz wirtualnego systemu Linux z narzędziami niskiego poziomu i byliśmy w stanie podpisać test Tx z jego księgą rachunkową, i kiedy wysłaliśmy go do sieci Ethereum, mamy ten sam błąd:

*Nie udało się wyemitować Tx:{'kod': -32000, 'wiadomość': „zabezpieczone tylko przed powtórkami” (EIP-155) transakcje dozwolone przez RPC”}.

Po dochodzeniu dowiedzieliśmy się, że od czasu najnowszego hard forka Ethereum Berlin wszystkie węzły Ethereum odrzucają teraz Tx sprzed EIP-155, d.h. Tx, które nie zawierają ChainID, który służy do ochrony powtórek.

Zobacz szczegóły tutaj: [https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md)

Dlatego zmodyfikowaliśmy nasze niskopoziomowe narzędzia w ten sposób, że generują i podpisują transakcje EIP-155 z poprawnym ChainID.

Ale dowiedzieliśmy się, że [Aplikacje Ledger Ethereum starsze niż wersja 1.0.8 wygenerować błędny podpis w przypadku przekazania do nich transakcji EIP-155](https://www.reddit.com/r/ledgerwallet/comments/n9tdlh/old_nano_s_with_firmware_12_and_earlier_cannot/). Generują sygnaturę śmieci z v = 27 lub v = 28, zamiast poprawnego podpisu EIP-155 z v = 37 lub v = 38 (dla identyfikatora łańcucha = 1). Wersja aplikacji Ethereum 1.0.8 (używany w Nano S z oprogramowaniem układowym 1.3.1) i wszystkie nowsze wersje są zdolne, Podpisuj transakcje EIP-155 poprawnie (sprawdziliśmy to).

Więc wyglądało to dość problematycznie, ETH- i tokeny ERC-20 z tych starych ksiąg (Oprogramowanie układowe 1.0, 1.1 i 1.2) przywracać, ponieważ aplikacji Ethereum nie można zaktualizować na tych urządzeniach (i że wersja aplikacji Ethereum 1.0.8, nawet gdyby można go było załadować na stronę za pomocą narzędzi programistycznych, prawdopodobnie nie jest kompatybilny z tymi starszymi wersjami oprogramowania, więc niestandardowa wersja aplikacji Ethereum prawdopodobnie musiałaby zostać opracowana tylko do odzyskiwania, co jest dużo pracy).

Na szczęście ludzie Ethereum potwierdzili, że EIP-155 * w tej chwili * jest tylko egzekwowany, po przesłaniu podpisanego Tx, i że nie jest wymuszane wewnętrznie w sieci Ethereum, ale wewnętrzne egzekwowanie jest na mapie drogowej Ethereum. Kiedy to się stanie, to prawdopodobnie sprawi, że takie przywracanie będzie o wiele bardziej skomplikowane, jeśli nie niemożliwe (jak by to wymagało, rozwój i ładowanie boczne dostosowanej aplikacji Ethereum do starej księgi).

Dlatego skonfigurowaliśmy na naszym serwerze prywatny węzeł Geth Ethereum, tych starych, akceptuje Tx podpisany przed EIP-155 i wysyła go do sieci Ethereum.

Dzięki naszemu dostosowanemu węzłowi Ethereum i naszym niskopoziomowym narzędziom, które działają pod Linuksem w wirtualnym pudełku na naszym komputerze klienckim, udało nam się podpisać transakcje i pomyślnie je przenieść, przywrócić ETH.

Trochę spanikowaliśmy, niż księga główna “nieznany błąd” zwrócony, kiedy próbowaliśmy, Podpisz transakcje, zawierał dane umowy (przywrócić tokeny ERC-20)… dopóki nie zrozumieliśmy, że “Dane umowy” po prostu nie został aktywowany w aplikacji Ethereum w księdze klientów.

W końcu udało nam się, skutecznie przywrócić wszystkie środki po kilku godzinach pracy!

Przywrócenie go byłoby trywialne, gdyby klient nie utracił swojego materiału siewnego do odzyskiwania, Naturalnie.

W tej samej serii odzyskiwania:

[https://www.reddit.com/r/ledgerwallet/comments/kz2eob/successful_recovery_story_how_we_recovered_100/](https://www.reddit.com/r/ledgerwallet/comments/kz2eob/successful_recovery_story_how_we_recovered_100/)

[https://www.reddit.com/r/ledgerwallet/comments/m4pk7q/successful_recovery_of_btc_from_a_hw1_ledger/](https://www.reddit.com/r/ledgerwallet/comments/m4pk7q/successful_recovery_of_btc_from_a_hw1_ledger/)

Subskrybuj
Powiadom o
Gość
0 komentarzy
Informacje zwrotne w treści
Wyświetl wszystkie komentarze