AktualnościKryptoAktualizacja Zcash zablokuje monety Sprout na bloku 3 543 405, nawet z właściwymi kluczami

Aktualizacja Zcash zablokuje monety Sprout na bloku 3 543 405, nawet z właściwymi kluczami

Autor: Coindoo·

Najważniejsze informacje

  • •Aktywacja aktualizacji NU7 na bloku 3 543 405 zakończy wydawanie Sprout, ponieważ żaden z formatów transakcji pozostających ważnych po niej — wersja 5 i wersja 6 — nie obsługuje tej puli.
  • •Posiadacze Sprout muszą polegać na zewnętrznych narzędziach odzyskiwania, takich jak aplikacja Argos od Sovright, ponieważ wycofany zcashd było ostatnim utrzymywanym oprogramowaniem zdolnym do budowania transakcji Sprout.
  • •Szybkość odzyskiwania zależy od kopii zapasowej: pliki portfela przechowujące dane not nadających się do wydania mogą zostać zmieciony w sekundy, podczas gdy same klucze wymagają skanów całego łańcucha o rozmiarze około 26 GB trwających godziny.
  • •Pozostawione środki Sprout nie są palone i pozostają w emisji Zcash, a ZIP 2003 stanowi, że wydawanie Sprout może nigdy nie wrócić.
  • •Potwierdzenie transferu Sprout powinno pochodzić z oprogramowania węzła gotowego na NU7, takiego jak Zebra 7.0.0, ponieważ przestarzałe węzły mogą pozostać online i podążać za łańcuchem sprzed NU7.
Aktualizacja Zcash zablokuje monety Sprout na bloku 3 543 405, nawet z właściwymi kluczami

Około 12 226 ZEC znajdowało się w maskowanej puli Sprout Zcash w czwartek rano, w porównaniu z około 22 263 tydzień wcześniej, według danych ZecStats przytoczonych w raporcie CoinDesk. Większość tego odpływu nastąpiła w niedzielę, gdy około 9 094 ZEC opuściło pulę. Przy cenie 1300 USD za monetę użytej przez CoinDesk pozostałe środki są warte około 16 milionów dolarów.

Termin graniczny to blok 3 543 405 — wysokość aktywacji Mainnet ustalona w ZIP 259, specyfikacji wdrożenia aktualizacji sieci NU7, powtórzona w informacji o wydaniu Zebra 7.0.0 Fundacji Zcash. CoinDesk poinformował, że Blockchair pokazywał łańcuch na bloku 3 542 391 o 05:24 UTC w czwartek, co przy obecnym celu 75 sekund na blok dawało aktywację około 02:30 UTC w piątek. Tempo wyznaczają górnicy, więc ten szacunek może się zmieniać w obie strony. Data ta jest zatem granicą ważności konsensusu, a nie gwarantowanym terminem serwisowym: decydującym wydarzeniem jest wykopanie bloku, podczas gdy portfele i depozytariusze mogą stosować własne terminy operacyjne.

Dwa błędy, które w portfelu wyglądają tak samo

Reguła stojąca za terminem jest szersza niż Sprout. ZIP 2003 zabrania każdej transakcji w wersji 4 od NU7 wzwyż, a ZIP 259 stanowi, że obejmuje to płatności wyłącznie transparentne i Sapling. Sprout zostaje złapany, ponieważ żaden z przetrwałych formatów go nie obsługuje: wersja 5, wprowadzona z NU5, i wersja 6, wprowadzona z NU6.3.

Portfel odmawiający wysyłki może więc mierzyć się z jednym z dwóch problemów, i tylko jeden z nich przeżywa aktywację:

Monety wciąż w Sprout. Co się psuje: jedyny format transakcji zdolny do ich wydania przestaje być ważny. Po bloku: nie istnieje obsługiwany format zastępczy. Okno zamyka się na bloku 3 543 405.

Transparentne lub Sapling ZEC w przestarzałym portfelu. Co się psuje: oprogramowanie tworzy płatności w wersji 4, które sieć odrzuca. Po bloku: saldo pozostaje do wydania, a oprogramowanie tworzące wersję 5 lub 6 może odtworzyć płatność — ponowne podpisanie starej nie działa. Okno pozostaje otwarte przy zaktualizowanym oprogramowaniu.

Płatności przygotowane z wyprzedzeniem wymagają własnej weryfikacji. ZIP 259 ostrzega, że transakcje w wersji 5 i 6 również nie są automatycznie ważne w poprzek aktywacji, ponieważ ich podpisy zobowiązują się do identyfikatora gałęzi konsensusu. Płatność zapisana lub podpisana offline przed aktualizacją może się nie powieść, jeśli trafi do bloku po terminie, niezależnie od formatu.

Salda powiernicze leżą po stronie platformy je utrzymującej. Informacja Fundacji Zcash kieruje regułę wersji 4 bezpośrednio do portfeli, giełd i innych usług, które tworzą transakcje w imieniu swoich użytkowników.

Materiał odzyskiwania wyznacza zegar

Dla posiadaczy Sprout trudniejszym problemem jest znalezienie oprogramowania, które wciąż potrafi zbudować transfer. ZIP 2003 zauważa, że wycofanie zcashd, tuż przed NU6.3, usunęło jedyne utrzymywane oprogramowanie oferujące funkcjonalność portfela Sprout. Reguły konsensusu akceptują wydatki Sprout aż do aktywacji, ale posiadacze pozostają zależni od zewnętrznych narzędzi odzyskiwania, by je utworzyć.

Najpierw identyfikacja monet. Dokumentacja adresów Zcash wymienia maskowane adresy Sprout z prefiksem zc i adresy Sapling z zs. Prefiks pokazuje, do której puli należy adres, a nie czy jakieś saldo tam pozostało.

Kopię zapasową decyduje więcej niż adres. Instrukcje kopii zapasowej Zcash traktują starsze klucze maskowane osobno od ziarna stojącego za adresami Sapling. Deweloper aplikacji odzyskiwania Argos dodaje w swojej dokumentacji dwa szczegóły: ziarno ZecWallet Lite nie może odtworzyć kluczy Sprout wygenerowanych niezależnie przez ten portfel, a zcashd wallet.dat w ogóle nie ma ziarna głównego, ponieważ jego klucze są przechowywane pojedynczo — z pliku można odzyskać tylko klucze w nim zawarte.

Zawartość kopii zapasowej określa też, jak długo trwa ratunek. Według notatek do wydania Argos 1.2.0 plik portfela, który przechowuje już dane not Sprout nadających się do wydania, może zostać zmieciony bez skanowania, w sekundy. Klucze bez tych danych not, takie jak samodzielne klucze wydawania lub klucze zaimportowane do zcashd bez ponownego skanowania, wymagają skanu próbującego odszyfrować każdą transakcję maskowaną w historii łańcucha, ponieważ nie istnieje indeks adresów Sprout. Strona dewelopera szacuje skan Sprout z samego klucza na około 26 GB transferu na Mainnecie i ostrzega, że skany trwają godziny. Przy terminie liczonym w godzinach ta różnica może zdecydować o tym, czy transfer jest w ogóle możliwy.

Cel jest też ustalony z góry. Wartość Sprout może trafić tylko do puli Sapling, więc notatki do wydania wymagają adresu zs1 lub adresu zjednoczonego z odbiorcą Sapling. Przeniesienie środków dalej do Orchard to osobna transakcja wykonywana przez posiadacza później.

Weryfikacja narzędzia ratunkowego pod presją czasu

Argos to zewnętrzna aplikacja desktopowa od Sovright, zbudowana po zaprzestaniu utrzymywania ZecWallet Lite. Strona dewelopera mówi, że aplikacja była niezależnie audytowana przez Least Authority, obsługuje ziarna i klucze lokalnie i łączy się z internetem tylko po to, by czytać publiczne dane bloków i wysłać finalny sweep. Przy dużych saldach deweloper zaleca zupełnie nowy komputer, ponieważ przywrócenie ustawień fabrycznych nie usuwa złośliwego oprogramowania na poziomie firmware z długo używanej maszyny.

Przed naciśnięciem sweep:

  • Pobranie. Buildi na macOS i Windows są podpisane kodem. Każde wydanie na GitHubie zawiera plik SHA256SUMS i atest builda, sprawdzalny przez gh attestation verify <file> --repo sovright/argos.

  • Podział. Przegląd sweep zawiera opcjonalną dotację dla Sovright domyślnie wynoszącą 10%. Obie kwoty pojawiają się przed potwierdzeniem, więc wartość tę należy ustawić świadomie.

  • Kanał. Deweloper mówi, że jego wsparcie nigdy nie poprosi o ziarno, plik portfela, frazę hasła ani klucz. Prośba o którykolwiek z nich, na dowolnej platformie, to oszustwo.

Po potwierdzeniu sweep deweloper zaleca wycofanie starych materiałów odzyskiwania, ponieważ złośliwe oprogramowanie na maszynie odzyskiwania mogło je przechwycić. Oryginalny plik portfela należy zachować do momentu opróżnienia każdej puli, którą obejmuje.

Tylko zaktualizowany węzeł potwierdzi transfer

Podpisany i rozesłany transfer Sprout liczy się dopiero, gdy zostanie zawarty w bloku przed wysokością aktywacji. Ważne jest też, gdzie odczytywane jest to potwierdzenie. ZIP 259 zwalnia z zwykłego wymogu wygaśnięcia starego oprogramowania węzłów przed aktualizacją i ostrzega, że nieobsługiwane węzły mogą pozostać online i podążać za gałęzią sprzed NU7. Informacja Fundacji Zcash mówi, że węzły, które nie zostały zaktualizowane, podążą za innym łańcuchem. Posiadacz sprawdzający przestarzały węzeł mógłby zobaczyć transfer, którego zaktualizowana sieć nie uznaje, więc potwierdzenie powinno pochodzić z oprogramowania gotowego na NU7, takiego jak Zebra 7.0.0, pierwsza stabilna wersja Zebrzy ze wsparciem NU7 na Mainnecie.

Odpływ jest też publiczny. Sekcja prywatności ZIP 2003 zauważa, że wartość opuszczająca Sprout zmienia widoczne saldo puli, oraz że krótki okres wypływu ułatwia powiązanie czasu i charakterystycznych kwot z konkretnymi posiadaczami. Przy zaledwie około 40 ZEC poruszających się w środę późna wypłata ma niewiele otaczającego ruchu, w który można się wtopić.

Pozostawione monety zostają w księgach

ZIP 2003, autorstwa Dairi-Emmy Hopwood, nie cofa emisji ani nie pali środków Sprout. Saldo puli w chwili aktywacji pozostaje w emisji Zcash, w tym dla obliczeń Mechanizmu Zrównoważenia Sieci w ZIP 237. Rachunkowość podaży Zcash liczy więc dalej monety, które obecnie nie mogą się ruszyć.

Propozycja pozostawia teoretyczną drogę powrotu — ponowne włączenie transakcji wersji 4 albo dodanie innego mechanizmu odzyskiwania, jeśli społeczność uzna to za wartościowe. Stanowi też, że wydawanie Sprout może nigdy nie wrócić.

Uzasadnienie akceptacji tego kosztu opiera się na bezpieczeństwie węzłów. ZIP 2003 zauważa, że Sprout dzieli system dowodowy Groth16 i krzywe BLS12-381 z Sapling od aktualizacji Sapling. Jego obwód JoinSplit oraz obsługa nullifierów i zobowiązań not nadal obciążają kod przyjmujący nowe transakcje, w tym jako powierzchnię ataku denial-of-service. Ponieważ Sprout jest niemal nieużywany, implementacje węzłów mają niewiele powodów, by optymalizować tę ścieżkę. Jak ustalono zakres aktualizacji, opisuje raport Coindoo o głosie posiadaczy monet NU7.

Koszt spada na wąską grupę: posiadaczy, których klucze Sprout leżą w kopiach zapasowych, których nie sprawdzili, albo które stracili. Publiczne saldo puli nie pozwala tych grup rozróżnić. Liczba, która rozstrzyga tę historię, to wartość puli Sprout w danych ZecStats po wykopaniu bloku 3 543 405, pokazująca, ile ZEC aktualizacja zostawiła w tyle. Późniejszy ZIP proponujący mechanizm odzyskiwania byłby jedynym znakiem, że dostęp może wrócić.

Źródło: Coindoo