Po raz pierwszy zauważyłem podział w systemie sieci Midnight nie podczas demonstracji ani podczas czytania dokumentacji. To było podczas ponownej próby transakcji, która wyglądała na udaną, ale nie zachowywała się jak jedna. Interfejs powiedział, że została zrealizowana. Hash istniał. Ale dane, których się spodziewałem, że pojawią się po stronie publicznej, nigdy nie pokazały się tam, gdzie obserwowało moje pozostałe narzędzie.

To był moment, w którym sieć Midnight stała się dla mnie rzeczywistością. Nie chodziło o roszczenia dotyczące prywatności. Nie chodziło o dyskusję na temat zero-knowledge. Sama architektura.

Sieć działa na modelu podwójnego stanu. Jeden stan obsługuje prywatną egzekucję. Drugi rejestruje weryfikowalne wyniki publiczne. Na papierze brzmi to czysto. W praktyce oznacza to, że szybko uczysz się, że potwierdzenie w jednym stanie nie automatycznie przekłada się na potwierdzenie w drugim.

A ta luka to miejsce, gdzie żyje większość interesującego tarcia.

Zakończyłem dodawanie drabiny ponownych prób do przepływu pracy, który pierwotnie zakładał, że pojedyncze przejście będzie wystarczające. Prywatne obliczenia miały działać, generować dowód, a następnie zakotwiczyć swój wynik w przejrzystej warstwie rejestru. Teoretycznie ten łańcuch wydarzeń jest liniowy.

W rzeczywistości zachowuje się bardziej jak przekaźnik.

Czasami dowód przychodzi, zanim publiczny zakotwiczony stabilizuje. Czasami zakotwiczenie publikowane, ale indeksujący obserwujący przejrzystą stronę nie nadążył jeszcze. Kilka wczesnych prób nie powiodło się w ciszy, ponieważ mój system zaufał pierwszemu sygnałowi sukcesu, który otrzymał.

Ten zaufanie musiało odejść.

Dodałem opóźnienie ochronne po zakończeniu prywatnego wykonania. Na początku tylko 800 milisekund. To nie jest naukowa liczba. Po prostu coś, co powstrzymało mojego klienta przed natychmiastowym traktowaniem zdarzenia jako finalne. To opóźnienie zmniejszyło liczbę fałszywych potwierdzeń o więcej niż połowę.

Co brzmi trywialnie, aż zrozumiesz, co to oznacza operacyjnie.

Architektura podwójnego stanu wprowadza dwie różne definicje finalności.

Prywatna finalność stanu oznacza, że obliczenia zostały zakończone i istnieje ważny dowód. Przejrzysta finalność stanu oznacza, że dowód został zaakceptowany do publicznego rejestru w sposób, który mogą zweryfikować inne systemy.

To nie są te same momenty.

Projekt Midnight celowo je oddziela, ponieważ systemy prywatności mają tendencję do załamywania się, gdy weryfikacja i wykonanie są zmuszone do tego samego obszaru widoczności. Prywatna strona potrzebuje przestrzeni do uruchamiania wrażliwej logiki bez ujawniania szczegółów. Publiczna strona musi weryfikować wyniki bez rekonstrukcji ukrytych danych wejściowych.

Dowód staje się mostem.

Teoretycznie ten most jest deterministyczny. W praktyce zachowuje się bardziej jak system punktów kontrolnych. Dowód przechodzi z kontekstu prywatnego do publicznej weryfikacji, a każdy krok wprowadza mały czasowy margines, w którym rzeczy mogą wyglądać na zakończone, mimo że nie są.

Ten margines to miejsce, gdzie deweloperzy popełniają błędy.

Pewnej nocy przeprowadziłem prosty test, który wyraźnie to ujawnił. Wywołałem tę samą prywatną operację dziesięć razy z rzędu. Prywatny stan potwierdził wszystkie dziesięć natychmiast. Ale przejrzysty rejestr pokazał ich przybycie w dwóch klastrach oddzielonych o około trzy sekundy.

Nic się nie zepsuło. Dowody były ważne. Ale jeśli twój przepływ pracy oczekiwał synchronicznej widoczności, zinterpretowałbyś połowę tych operacji jako zgubione.

Nie zostały zgubione. Po prostu poruszały się przez granicę stanu.

To jest część, która nie pojawia się w diagramach architektonicznych. Diagramy pokazują dwa stany połączone przez kryptograficzną weryfikację. To, co nie pokazują, to operacyjne opóźnienie przekraczania tej granicy.

A to opóźnienie kształtuje wszystko.

Jedna rzecz, którą cicho zmusza cię do przemyślenia, to jak bardzo polegasz na natychmiastowej przejrzystości.

Większość publicznych łańcuchów traktuje widoczność jako zastępnik prawdy. Jeśli transakcja pojawia się w łańcuchu, to się wydarzyło. Struktura Midnight komplikuje to założenie. Obliczenie może istnieć prywatnie zanim sieć publicznie je uzna.

To brzmi jak różnica filozoficzna, dopóki nie spróbujesz zbudować czegoś, co reaguje na obie warstwy.

Moja pierwsza wersja traktowała publiczny stan jako źródło prawdy. Prywatny stan był tylko krokiem pośrednim. Takie podejście powodowało niepotrzebne ponowne próby, ponieważ system zakładał, że brak przejrzystości oznaczał porażkę.

Ostatecznie odwróciłem logikę.

Prywatne potwierdzenie stało się sygnałem do czekania, a nie do ponawiania.

Zbyt wczesne ponawianie prób tworzyło zduplikowane dowody, które następnie powodowały niepotrzebne obciążenie weryfikacyjne na przejrzystej warstwie. Gdy przestałem to robić, system się ustabilizował.

Mała lekcja. Ale ujawnia coś głębszego w projekcie Midnight.

Architektura przenosi koszt pewności.

Tradycyjne łańcuchy przenoszą koszt weryfikacji do samego obliczenia. Midnight przenosi część tego kosztu na granicę między prywatnością a przejrzystością. Dowód musi podróżować. Publiczny rejestr musi go zaakceptować. Obserwatorzy muszą to zobaczyć.

Każdy krok dodaje tarcie.

Jest tu kompromis, który nie jest często bezpośrednio stwierdzany. Prywatność poprawia się, ponieważ szczegóły wykonania pozostają ukryte. Ale prostota operacyjna maleje, ponieważ sieć działa teraz w dwóch równoległych rzeczywistościach.

Jeden ukryty. Jeden widoczny.

Czasami lekko się rozjeżdżają.

Wciąż nie jestem do końca pewien, jak bardzo to rozbieżność ma znaczenie na dłuższą metę. Może aplikacje nauczą się traktować tę granicę jako normalną. Może narzędzia to wygładzą.

Ale w tej chwili model podwójnego stanu sprawia, że niezawodność wydaje się mniej binarna, a bardziej proceduralna.

Czekasz. Sprawdzasz. Potwierdzasz ponownie.

Kolejny mały test ujawnił coś innego, czego się nie spodziewałem. Jeśli szybko pchasz wiele prywatnych operacji, przejrzysta warstwa ma tendencję do grupowania ich dowodów przed zapisaniem ich. To grupowanie poprawia efektywność, ale również oznacza, że publiczny rejestr czasami ujawnia wzorce aktywności bez ujawniania podstawowych danych.

Prywatność zachowana. Czas ujawniony.

Nie jestem jeszcze pewien, czy to stanie się przewagą analityczną, czy tylko kolejną osobliwością, do której dostosowują się deweloperzy.

W pewnym momencie, debugując te zachowania, mechanika tokenów w końcu zaczęła mieć sens. Sieć Midnight ostatecznie opiera się na ztokenizowanych zachętach do wspierania weryfikacji dowodów i uczestnictwa w infrastrukturze.

Możesz poczuć, dlaczego ta warstwa staje się konieczna.

Przenoszenie dowodów między stanami to praca. Publiczna weryfikacja to praca. Ktoś musi prowadzić infrastrukturę, która utrzymuje most w uczciwości. Bez zachęt przejrzysta strona stałaby się najsłabszym punktem w architekturze.

To nie jest warstwa spekulacyjna. To bardziej jak paliwo, które utrzymuje dwa stany w synchronizacji.

Nawet wtedy wciąż mam łagodny bias co do systemu. Lubię konceptualne oddzielenie prywatności i przejrzystości. Rozwiązuje problemy, które tradycyjne łańcuchy wciąż próbują rozwiązać za pomocą coraz bardziej złożonej kryptografii nałożonej na jeden stan.

Ale strona operacyjna wciąż wydaje się młoda.

Są momenty, kiedy zastanawiam się, czy deweloperzy zaakceptują ten rytm podwójnego potwierdzenia, czy spróbują ukryć go za pośrednictwem middleware, aż nikt już nie zauważy granicy.

Wczoraj przeprowadziłem kolejny mały eksperyment. Zamiast czekać na publiczne potwierdzenie, wywołałem logikę downstream, jak tylko istniał prywatny dowód i tylko później uzgodniłem z przejrzystym rejestrem.

Działało. Głównie.

Co stawia ciche pytanie.

Może model podwójnego stanu Midnight nie tylko oddziela prywatność od przejrzystości.

Może oddziela wykonanie od obserwacji.@MidnightNetwork $NIGHT #night