
@MidnightNetwork . Zauważyłem problem za pierwszym razem, gdy próbowałem zalogować coś prostego.
Nic dramatycznego. Po prostu mały kawałek danych aplikacji, które musiałem zarejestrować w łańcuchu. Stan potwierdzenia, zasadniczo. Tego rodzaju rzecz, którą deweloperzy przesyłają do blockchaina, nie myśląc dwa razy.
Tym razem się wahałem.
Wartość sama w sobie była nieszkodliwa. Ale otaczające dane metadane już nie. Znaczniki czasowe, relacje między kontami, wskazówki dotyczące przepływu pracy. Każdy, kto czytałby tę łańcuch, mógłby wywnioskować więcej, niż zamierzałem. To jest dziwna rzecz w przypadku przejrzystych ksiąg rachunkowych. Nawet gdy dane wydają się małe, kontekst ujawnia wszystko.
Zamiast pisać dane bezpośrednio, próbowałem kierować interakcję przez sieć Midnight.
Na początku różnica wydawała się subtelna. Transakcja wciąż została rozwiązana. System wciąż zweryfikował zmianę stanu. Ale gdy później sprawdzałem publiczny zapis, brakowało rzeczywistych danych. Nie ukrytych za kluczami szyfrującymi. Po prostu… nieobecnych.
Pozostał tylko dowód.
Zajęło mi chwilę, aby to zarejestrować.
System zweryfikował roszczenie, nie ujawniając samej informacji.
Większość blockchainów podchodzi do integralności danych w oczywisty sposób. Publikują wszystko i polegają na przejrzystości, aby egzekwować zaufanie. Midnight robi coś dziwniejszego. Dowodzi, że rzeczy miały miejsce, nie ujawniając szczegółów tego, co się wydarzyło.
Ta różnica pojawia się w momencie, gdy próbujesz przesłać prywatny stan przez tradycyjny łańcuch.
Na Ethereum, na przykład, każdy wpis kontraktu jest widoczny. Nawet jeśli sama wartość jest zaszyfrowana, pojawiają się wzory. Portfele działają w rozpoznawalnych sekwencjach. Przejścia stanów tworzą odciski. Z czasem te odciski stają się czytelnymi narracjami.
Midnight omija ten wzór, używając dowodów zerowej wiedzy.
Nie jako teoretyczna cecha. Jako domyślny sposób, w jaki informacje poruszają się przez system.
Zamiast transmitować podstawowe dane, sieć transmituje matematyczny dowód, że dane spełniają zasadę. Walidatorzy potwierdzają dowód. Konsensus postępuje naprzód. Ale wrażliwe wartości nigdy nie stają się publicznym stanem.
Za pierwszym razem, gdy zobaczyłem to w praktyce, wydawało się to lekko niewłaściwe.
Transakcja zakończyła się sukcesem. Jednak księga pokazała prawie nic.
Tylko artefakt dowodu i potwierdzenie.
Interesująca część to to, jak to zmienia przepływ pracy.
Przed używaniem Midnight, moim instynktem zawsze było projektowanie wokół przejrzystości. Jeśli coś mogło ujawnić informacje, architektura musiała wchłonąć to ryzyko. Czasami oznaczało to grupowanie operacji. Czasami oznaczało to opóźnienie wykonania, aż wokół transakcji powstanie wystarczająco dużo szumu.
Na Midnight problem się zmienia.
Przestajesz próbować ukrywać informacje w przejrzystym systemie. Zamiast tego udowadniasz poprawność, nie ujawniając informacji wcale.
Mała zmiana koncepcyjnie.
Ogromna różnica operacyjna.
Na przykład jeden z testów, które przeprowadziłem, dotyczył weryfikacji warunków własności w ramach kontraktu. Normalnie ta kontrola ujawniałaby relację między kontem a aktywem. Każdy, kto monitorowałby łańcuch, mógłby zobaczyć, który portfel spełniał wymóg.
Na Midnight logika kontraktu wykonała tę samą zasadę, ale walidator widział tylko dowód na to, że zasada została spełniona.
Nie tożsamość portfela. Nie wartość aktywów. Tylko dowód.
Księga potwierdziła warunek bez poznawania danych wejściowych.
Ten moment zmienił moje myślenie o projektowaniu stanów.
Bo nagle blockchain przestał zachowywać się jak publiczna baza danych.
Stało się czymś bliższym warstwie weryfikacji.
Dowody zerowej wiedzy są często wyjaśniane na abstrakcyjnych przykładach. Klasyczna analogia z zamkniętym pudełkiem. Lub zagadka jaskini, gdzie ktoś udowadnia, że zna hasło, nie ujawniając go.
Te przykłady pomagają początkującym.
Ale prawdziwa różnica pojawia się w zwykłym tarciu deweloperskim.
Weź inspekcję transakcji.
Na większości łańcuchów debugowanie oznacza bezpośrednie odczytywanie danych wejściowych transakcji. Kiedy coś się nie udaje, możesz zobaczyć wartości. Parametry. Warunki, które się zepsuły.
Na Midnight debugowanie staje się bardziej pośrednie.
Nie możesz łatwo sprawdzić podstawowych danych, ponieważ sieć sama ich nigdy nie widzi. Zamiast tego sprawdzasz ważność dowodu i logikę ograniczeń.
Za pierwszym razem, gdy kontrola kontraktu nie powiodła się, wpatrywałem się w logi dłużej, niż się spodziewałem.
Wszystko wyglądało na ważne. Dowód istniał. Obwód weryfikacyjny działał. A jednak transakcja wciąż została odrzucona.
W końcu zdałem sobie sprawę, że ograniczenie wewnątrz dowodu było nieco błędne. Matematyka udowodniła błędny warunek.
Tego rodzaju błąd wydaje się inny.
Nie debugujesz już danych. Debugujesz logikę, która dowodzi danych.
Istnieje również wymiar kosztowy, o którym ludzie rzadko wspominają.
Generowanie dowodów zerowej wiedzy jest obliczeniowo cięższe niż po prostu transmisja danych wejściowych transakcji. Midnight zarządza tym poprzez specjalistyczne obwody i optymalizacje, ale narzut jest nadal zauważalny podczas rozwoju.
Jedno z moich wczesnych testów trwało kilka sekund dłużej niż równoważna przejrzysta transakcja na innym łańcuchu.
Nie katastrofalne. Ale wystarczająco zauważalne.
Kompromis jest oczywisty.
Przejrzystość daje ci szybkość i łatwą obserwowalność. Prywatność wymaga cięższej pracy kryptograficznej.
Midnight wybiera prywatność.
Projekt sieci wydaje się komfortowy z tym wyborem.

Kolejna subtelna zmiana pojawia się w sposobie, w jaki myślisz o własności danych.
Dane tradycyjnego blockchaina zachowują się jak permanentna transmisja. Gdy coś ląduje na łańcuchu, staje się częścią globalnego zapisu. Każdy może analizować to wiecznie.
Z Midnight sytuacja wydaje się mniej jak publikowanie, a bardziej jak przedstawianie dowodów.
Udowadniasz, że pewne warunki były prawdziwe w momencie transakcji. System weryfikuje roszczenie. Łańcuch rejestruje dowód.
Ale podstawowe informacje pozostają z uczestnikiem, który je wygenerował.
To rozróżnienie ma znaczenie dla aplikacji zajmujących się tożsamością, sygnałami zgodności lub prywatnymi saldami aktywów. Sytuacje, w których udowodnienie czegoś jest konieczne, ale ujawnienie surowych informacji wiązałoby się z ryzykiem.
W jednym małym eksperymencie użyłem dowodu, aby potwierdzić próg salda, nie ujawniając samego salda.
Łańcuch zaakceptował roszczenie.
Obserwatorzy dowiedzieli się, że konto spełniało zasadę.
Nic więcej.
Mimo to są momenty, kiedy nieprzejrzystość staje się niewygodna.
Przejrzystość ma również zalety.
Gdy dane są widoczne, ekosystemy mogą analizować zachowanie. Indeksery mogą budować narzędzia. Auditorzy mogą łatwo sprawdzać interakcje kontraktów.
Model prywatności Midnight utrudnia to.
Zewnętrzni obserwatorzy widzą dowody, ale nie kontekst. To chroni użytkowników, ale również zmniejsza ilość informacji dostępnych do analizy sieci.
Czasami mam ochotę zajrzeć za dowód, tylko po to, aby potwierdzić, co się wydarzyło.
Ale ta opcja nie istnieje.
Co jest sednem sprawy.
Po kilku tygodniach pracy z systemem, zmiana w sposobie myślenia stała się jaśniejsza.
Zamiast pytać, jakie dane blockchain powinien przechowywać, lepsze pytanie brzmi, jakie roszczenia blockchain powinien weryfikować.
Midnight przekształca księgę w coś w rodzaju sędziego. Potwierdza, że zasady były przestrzegane, nie potrzebując widzieć kart graczy.
Dowody zerowej wiedzy to umożliwiają.
Nie idealnie. Nie bez kompromisów.
Ale wystarczająco, aby zmienić sposób, w jaki dane poruszają się w zdecentralizowanym systemie.
Dziwne jest to, jak szybko stary model przejrzystości zaczyna po pewnym czasie wydawać się niewygodny.
Przesyłasz transakcję na tradycyjnym łańcuchu. Każdy parametr jest ujawniony. Każda relacja jest możliwa do śledzenia.
I zdajesz sobie sprawę, jak dużo informacji wcześniej ujawniałeś, nawet tego nie zauważając.
Midnight unika tej ucieczki.
Głównie.
Wciąż próbuję ustalić, gdzie naprawdę leży ta granica. #night $NIGHT

