Twórcy Zcash dyskutują nad rozwiązaniem, bo każda aktualizacja unieważnia podpisane transakcje w portfelach
Najważniejsze informacje
- •Aktualizacja NU7 w Zcash aktywowała się na bloku 3,543,405 bez zmian w formacie transakcji, a mimo to każdy portfel potrzebował nowej wersji lub firmware'u, zanim użytkownicy mogli ponownie wydawać środki.
- •Deweloper ValarDragon zaproponował usunięcie aktualizacji consensus branch ID jako jeden z siedmiu celów aktualizacji NU8, aby zakończyć schemat łamania portfeli przy każdej aktywacji.
- •Każdy podpis w Zcash wiąże się z consensus branch ID wprowadzonym przez ZIP 200 w celu ochrony przed replay na forkach, więc transakcje podpisane pod starym ID stają się nieważne w chwili aktywacji aktualizacji.
- •Deweloper vaulta Konclave, Daniel Gorgonha, wyjaśnił, że przepływy podpisywania progowego ograniczone domyślnym oknem wygaśnięcia około 50 minut są całkowicie unieważniane, jeśli aktualizacja wypadnie w trakcie zbierania podpisów, i zażądał proponowanej opcji opt-out.
- •Inżynierowie Electric Coin Company zaznaczyli, że ochrona przed replay była twardym wymogiem giełd, a proponowane warianty opt-out w ZIP 248 wymienią część ochrony przed replay i potencjalnie zmniejszony zbiór anonimowości na transakcje przeżywające aktualizacje.

Propozycja krążąca obecnie wśród współtwórców Zcash, kryptowaluty nastawionej na prywatność, zakłada usunięcie mechanizmu, który unieważnia oczekujące podpisane transakcje przy każdej aktualizacji sieci (NU), po tym jak ostatnia aktywacja uniemożliwiła portfelom wydawanie środków do momentu wydania nowych wersji oprogramowania lub firmware'u.
Świeża skarga, ze świeżym przykładem
W poście na forum z 9 listopada deweloper ValarDragon wymienił usunięcie aktualizacji consensus branch ID wśród siedmiu celów NU8, kolejnej aktualizacji, z zadeklarowanym zamiarem zakończenia schematu „łamania portfeli przy każdym NU”.
Skarga ma za sobą świeży przykład. NU7 aktywowało się w zeszłym tygodniu na bloku 3,543,405 bez zmian w formacie transakcji, a mimo to, jak zauważył członek forum strahncryptography w tym samym wątku, każdy portfel potrzebował nowej wersji lub nowego firmware'u, zanim mógł ponownie wydawać środki. Każdy, kto korzystał z telefonu air-gapped lub nieobsługiwanego urządzenia, został odcięty.
Do następnego ranka wątek wyłonił trzy stanowiska: usunąć mechanizm, zachować go, ale pozwolić użytkownikom na rezygnację (opt-out), albo przyjąć, że rzeczywistym problemem jest przestarzanie portfeli, a nie wygasanie podpisów. Deweloper vaultów pokazał następnie, dlaczego ten wybór nie jest czysto akademicki.
Co właściwie się psuje
Każdy podpis w Zcash wiąże się z consensus branch ID, etykietą obowiązującego zestawu reguł. Wprowadził go ZIP 200, jeden z propozycji ulepszeń Zcash (ZIPs) określających reguły protokołu, aby transakcja podpisana dla jednego łańcucha nie mogła zostać zreplayowana na forkcie dzielącym tę samą historię. Gdy aktualizacja się aktywuje, ID się zmienia, a wszystko podpisane pod starym jest martwe w momencie przybycia.
ZIP wdrożeniowy NU7 wyjaśnia to dla właśnie zakończonej aktualizacji: transakcje wersji 5 i 6 zachowały swoją strukturę, ale transakcja nadal nie jest ważna przez aktywację, ponieważ jej podpisy wiążą branch ID. Zapisane i podpisane offline transakcje, dodaje dokument, wymagają tych samych sprawdzeń aktywacyjnych co bieżące.
Dlatego portfele musiały wydać aktualizacje dla aktualizacji, która nie zmieniła nic w sposobie budowania transakcji. Portfel, który nie zna nowego ID, podpisuje dla łańcucha, który już nie istnieje.
Vault, który nie zdąży podpisać
Daniel Gorgonha, twórca vaulta t-of-n Konclave w Deega Labs, opisał później w wątku praktyczne koszty. Konclave najpierw buduje transakcję, a następnie zbiera podpisy progowe, więc każdy wymagany podpisujący musi działać w oknie wygaśnięcia transakcji, wynoszącym około 50 minut. Aktualizacja, która wypadnie w środku tego okna, unieważnia całość.
Wartość 50 minut pochodzi z ZIP 203, który utrzymywał domyślne wygaśnięcie na mniej więcej tym poziomie przez trzy zmiany czasu bloku. Od NU7 oznacza to 120 bloków przy docelowym odstępie 25 sekund. Jest to wartość domyślna portfela, konfigurowalna per node, a transakcję można zbudować bez wygaśnięcia w ogóle, ustawiając pole na zero.
Więc kwestia zegara jest już rozwiązywalna, przynajmniej tam, gdzie portfel udostępnia to ustawienie. Granica aktualizacji — nie. Vault mógłby dać swoim członkom tydzień na podpisanie i nadal stracić transakcję w chwili, gdy branch ID się zmieni. Gorgonha prosił o opcję opt-out, którą zaproponował właśnie nuttycom, aby grupa mogła zbierać podpisy przez godziny lub dni na własne ryzyko.
Trzy wyjścia, każde z haczykiem
Usunąć commitment do branch ID. To pierwotna propozycja ValarDragon. str4d, inżynier Electric Coin Company (ECC), odpowiedział, że ochrona przed replay była twardym wymogiem giełd i innych graczy ekosystemu w momencie powstawania ZIP 200, więc każde usunięcie wymaga mechanizmu zastępczego, najlepiej takiego, który obejmuje również wrogie forki tworzone wyłącznie w celu zakłócenia głównego łańcucha.
Zachować jako domyślne, pozwolić na opt-out. nuttycom, również z ECC, zaproponował warianty podpisywania w ramach ZIP 248, które pomijają zarówno branch ID, jak i wysokość wygaśnięcia. Użytkownicy, którzy je wybiorą, rezygnują z części ochrony przed replay, a zyskują transakcje przeżywające aktualizację. Istniejący algorytm, który — jak powiedział nuttycom — działa dobrze dla zdecydowanej większości transakcji, pozostanie bezpiecznym domyśłem. str4d już wcześniej zauważył, że taki wariant byłby łatwy do zdefiniowania, gdy ZIP 248 wejdzie w życie.
Zakwestionować, czy to cokolwiek rozwiązuje dla portfeli. strahncryptography argued, że warianty naprawiają trwałość transakcji, ale nie przestarzanie: jeśli branch ID nie jest zaszyty na stałe, użytkownik musi podać właściwy, co przenosi ten sam ciężar z powrotem na oprogramowanie portfela. Ochrona przed replay wobec przyjaznych forków ma wartość, napisał, ale korzyści należy rozważyć.
Wątek nie rozstrzygnął sporu. Zawęził jednak pytanie do tego, czy wariant opt-in jest wart budowania dla użytkowników, którzy go potrzebują, i czego ci użytkownicy byliby zmuszeni się zrzec.
Co kosztowałaby rezygnacja
Ryzyko replay najłatwiej wyobrazić sobie na przykładzie właśnie zakończonej aktualizacji. Tylko dla NU7 ZIP 259 zawiesił zwykły wymóg, by stare oprogramowanie węzła dezaktualizowało się przed aktywacją, co oznacza, że operatorzy, którzy nigdy nie zaktualizowali, mogą pozostać online i nadal podążać za gałęzią sprzed NU7. Transakcja, której podpis nie jest związany z żadną gałęzią, jest dokładnie takiego rodzaju, że mogłaby zostać przyjęta na obu.
Ekspozycja dotyczy zakresu autoryzacji, a nie kluczy za nią stojących. Zreplayowana transakcja wydaje te same wejścia na innym łańcuchu, którego podpisujący nigdy nie zamierzał użyć; nie pozwala nikomu podrobić nowej.
Usunięcie wysokości wygaśnięcia z podpisu ma drugi skutek: autoryzowana płatność może czekać niepotwierdzona tak długo, jak jej wejścia pozostają niewydane. To funkcja, którą chce vault, i ryzyko, którego użytkownik indywidualny może nie zauważyć.
nuttycom zasygnalizował także możliwe zmniejszenie zbioru anonimowości. W systemie shielded prywatność zależy od tego, by transakcja wyglądała jak każda inna; jedna podpisana rzadko używanym wariantem stanowiłaby mniejszy tłum do ukrycia się. Post nie oszacował skutku, a żaden wariant nie został jeszcze określony.
Dłużej żyjący podpis nie zaktualizuje starego urządzenia
ZIP 248, rozszerzalny format transakcji, od którego to wszystko zależy, nadal jest projektem. str4d powiedział, że jego projekt jest stabilny od ponad pół roku, a w zeszłym tygodniu aktualizował go pod kątem wdrożonych od tego czasu zmian konsensusu. Nie został przypisany do żadnej aktualizacji, a warianty opt-out jeszcze w nim nie istnieją.
Nawet gdy powstaną, portfel sprzętowy lub podpisujący offline nadal będzie potrzebował oprogramowania rozumiejącego nowy format. ZIP 248 zabrania portfelom konstruowania lub podpisywania komponentów, których nie potrafią sparsować. Korzyść kompatybilności jest realna, ale dociera poprzez wydania portfeli — czyli ten etap, który według strahncryptography nieustannie zawodzi.
Żadne z tego nie pomaga też transakcjom w wycofanym formacie. ZIP 259 zaznacza, że zakaz transakcji wersji 4 w NU7 obejmuje wydatki transparent i Sapling oraz Sprout, i że ponowne podpisanie nie może ich uratować; jedynym rozwiązaniem jest przebudowanie płatności w obsługiwanej wersji. Coindoo omawiał w zeszłym tygodniu trudniejszy przypadek — monety Sprout bez żadnego formatu zastępczego.
Konclave ma też własną niedokończoną część. Jego otwarty issue dotyczący podpisywania asynchronicznego rozdziela zatwierdzenia zbierane w czasie od interaktywnej ceremonii progowej, którą vault prowadzi obecnie. Transakcja przeżywająca aktualizację usuwa jedną przeszkodę; przepływ pracy pozwalający członkom dołączać w miarę odzyskiwania dostępności nadal musi zostać napisany i zrecenzowany.
Wskazówki praktyczne
Jeśli prowadzisz portfel grupowy:
- Aktywacja to wysokość bloku, nie data; ZIP wdrożeniowy każdej aktualizacji publikuje ją z wyprzedzeniem.
- Nie otwieraj rundy podpisywania, która mogłaby przecinać tę wysokość.
- Wszystko przygotowane przed aktywacją musi zostać przebudowane po niej, nawet jeśli nikt jeszcze nie podpisał.
Jeśli trzymasz monety na starym urządzeniu:
- Sprawdź, czy jego firmware lub aplikacja wydała wsparcie NU7, zanim spróbujesz wydać środki.
- Zablokowany wydatek z obsługiwanego puli to problem portfela, nie utracone środki.
- Transakcje wersji 4 zapisane przed 6 listopada nie mogą zostać ponownie podpisane w celu odzyskania ważności.
Wcześniejszy artykuł Coindoo o ulepszeniach płatności po stronie portfela omawiał lukę między zbudowaniem transakcji a jej potwierdzeniem. Ten wątek dodaje pomiędzy nie trzeci etap: utrzymanie autoryzacji przy życiu, podczas gdy ludzie i urządzenia nadążają.
Co dalej
Koniec stycznia to cel ValarDragon, nie harmonogram. str4d zakwestionował w tym samym wątku, czy dwa i pół miesiąca wystarczą dla puli Tachyon z tej samej listy, a pozycja dotycząca branch ID spotkała się z najostrzejszym oporem spośród wszystkich siedmiu. Czy NU8 zawiedzie z opcją opt-out, zamiennikiem ochrony przed replay, ani z jednym ani z drugim — rozstrzygnie proces ZIP, nie forum.