Po raz pierwszy zauważyłem podział w systemie Midnight Network nie podczas pokazu ani 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 mówił, że została wyczyszczona. Hash istniał. Ale dane, których się spodziewałem na publicznej stronie, nigdy się nie pojawiły tam, gdzie pozostałe moje narzędzia obserwowały.

To był moment, w którym Midnight Network stał się dla mnie rzeczywistością. Nie roszczenia dotyczące prywatności. Nie dyskusja na temat zerowej wiedzy. Sama architektura.

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

A ta luka to miejsce, w którym żyje większość interesującego tarcia.

Dodałem drabinę ponawiania do przepływu pracy, który pierwotnie zakładał, że jedno przejście będzie wystarczające. Prywatne obliczenie miałoby przebiegać, generować dowód, a następnie zakotwiczyć swój wynik w warstwie przejrzystego rejestru. W teorii łańcuch tych zdarzeń jest liniowy.

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

Czasami dowód przybywa, zanim publiczny kotwica się ustabilizuje. Czasami kotwica się zamieszcza, ale indeksator obserwujący stronę przejrzystą jeszcze nie nadąża. Kilka wczesnych prób nie powiodło się cicho, ponieważ mój system zaufał pierwszemu sygnałowi sukcesu, który otrzymał.

To zaufanie musiało zniknąć.

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

Co brzmi trywialnie, dopóki nie zdasz sobie sprawy, co to oznacza operacyjnie.

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

Prywatna ostateczność stanu oznacza, że obliczenie zostało zakończone i istnieje ważny dowód. Ostateczność stanu przejrzystego oznacza, że dowód został zaakceptowany w publicznym rejestrze w sposób, który inne systemy mogą weryfikować.

To nie są te same momenty.

Projekt Midnight celowo oddziela je, ponieważ systemy prywatności mają tendencję do załamywania się, jeśli weryfikacja i wykonanie są zmuszone do działania w tej samej domenie widoczności. Strona prywatna potrzebuje przestrzeni do uruchamiania wrażliwej logiki bez ujawniania szczegółów. Strona publiczna potrzebuje weryfikować wyniki bez rekonstruowania ukrytych danych wejściowych.

Dowód staje się mostem.

W teorii ten most jest deterministyczny. W praktyce działa bardziej jak system punktów kontrolnych. Dowód przemieszcza się z kontekstu prywatnego do weryfikacji publicznej, a każdy krok wprowadza małe okno czasowe, w którym rzeczy mogą wyglądać na zakończone, nie będąc faktycznie zakończone.

To okno to miejsce, w którym deweloperzy popełniają błędy.

Pewnej nocy przeprowadziłem prosty test, który to jasno ujawnił. Wywołałem tę samą prywatną operację dziesięć razy w sekwencji. Prywatny stan potwierdził wszystkie dziesięć natychmiast. Ale przejrzysty rejestr pokazał ich przybycie w dwóch klastrach oddzielonych mniej więcej trzema sekundami.

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

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

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

A to opóźnienie kształtuje wszystko.

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

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

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

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

W końcu odwróciłem logikę.

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

Zbyt wczesne ponawianie stworzyło duplikaty dowodów, co następnie stworzyło niepotrzebne obciążenie weryfikacyjne na warstwie przejrzystej. 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 na samą obliczeniową. 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 tarcia.

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

Jeden ukryty. Jeden widoczny.

Czasami lekko się rozjeżdżają.

Wciąż nie jestem całkowicie pewien, jak bardzo ten dryf ma znaczenie w dłuższej perspektywie. Może aplikacje nauczą się traktować 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.

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

Prywatność zachowana. Czas ujawniony.

Jeszcze nie jestem pewien, czy to stanie się przewagą analityczną, czy po prostu kolejną osobliwością, do której dostosują się deweloperzy.

W pewnym momencie podczas debugowania tych zachowań, mechanika tokenów w końcu zaczęła mieć sens. Sieć Midnight ostatecznie polega na tokenizowanych zachętach, aby wspierać weryfikację dowodów i uczestnictwo w infrastrukturze.

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

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

To nie jest warstwa spekulacyjna. To bardziej jak paliwo utrzymujące dwa stany w synchronizacji.

Nawet wtedy wciąż mam lekką uprzedzenie do systemu. Lubię koncepcyjne oddzielenie prywatności i przejrzystości. Rozwiązuje problemy, które tradycyjne łańcuchy próbują rozwiązać z coraz bardziej złożoną kryptografią nałożoną na jeden stan.

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

Są momenty, kiedy zastanawiam się, czy deweloperzy zaakceptują ten rytm podwójnej potwierdzenia, czy spróbują ukryć to za pomocą middleware, aż nikt nie zauważy granicy.

Wczoraj przeprowadziłem jeszcze jeden mały eksperyment. Zamiast czekać na publiczne potwierdzenie, uruchomiłem logikę w dół, gdy tylko istniał prywatny dowód, a później tylko pojednałem się z przejrzystym rejestrem.

Działało. Głównie.

Co rodzi ciche pytanie.

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

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