Po raz pierwszy zauważyłem to na wysokości bloku 18,442,913.
Transakcja potwierdzenia poświadczenia została zaakceptowana, zindeksowana i nawet pojawiła się w warstwie zapytań—ale kiedy prześledziłem korzeń wykonania w logach walidatora, nie było tam przejścia stanu. Nie cofnięte. Nie nieudane. Po prostu… nieobecne. Jakby system na chwilę zgodził się, że coś jest prawdą, a potem cicho o tym zapomniał.
Odtworzyłem sekwencję.
Transakcja weszła do mempoola czysto. Podpis zweryfikowany. Ładunek zdekodowany. Poświadczenie odnosiło się do ważnego emitenta i znanego schematu. Sekwencer zgrupował to w paczkę w ciągu milisekund. Szybko. Efektywnie. Oczekiwane.
Ale w dół, coś się rozeszło.
Jeden walidator oznaczył poświadczenie jako „zweryfikowane” po T+2 sekundach. Inny tylko uznał włączenie partii, nie semantyczną ważność samego poświadczenia. Trzeci węzeł całkowicie odroczył weryfikację, oznaczając ją jako „oczekiwanie na rozwiązanie dowodu zewnętrznego.”
Ta sama transakcja. Ta sama sieć. Trzy interpretacje prawdy.
Na początku wyglądało to jak opóźnienie. A może niespójność w cache. Sprawdziłem czasy propagacji, porównałem znaczniki czasowe, nawet podejrzewałem dryft zegara. Ale wzór się utrzymywał — i co gorsza, skalował. Im więcej obserwowałem, tym jaśniejsze się stawało: to nie był błąd.
To była właściwość.
To, co widziałem, nie było zepsutym systemem. To był system działający dokładnie zgodnie z zaprojektowaniem — tylko nie tak, jak zakładano.
Sieć Sign, umiejscowiona jako globalna infrastruktura dla weryfikacji poświadczeń i dystrybucji tokenów, działa w subtelnej, ale potężnej napięciu między weryfikacją a skalowalnością.
Aby wspierać wysoką wydajność i globalną użyteczność, sieć fragmentuje akt „weryfikacji” na wiele warstw. Niektóre kontrole odbywają się natychmiast. Inne są odkładane. Niektóre są egzekwowane kryptograficznie. Inne są gwarantowane społecznie lub ekonomicznie.
Na papierze jest elegancka.
W praktyce tworzy to niejednoznaczność.
Zacząłem bardziej formalnie mapować system.
Sieć osiąga zgody co do porządkowania, niekoniecznie co do znaczenia. Walidatorzy zgadzają się, że partia transakcji istnieje i jest poprawnie sekwencjonowana. Ale konsensus nie wymaga, aby każdy walidator w pełni ocenił semantyczną ważność każdego poświadczenia w tej partii.
Porządek jest deterministyczny; interpretacja nie jest.
Walidatorzy weryfikują podpisy i integralność strukturalną. Zapewniają, że transakcje są zgodne z zasadami protokołu. Ale ważność poświadczeń — czy roszczenie jest prawdziwe w sensie rzeczywistym lub międzydomenowym — często traktuje się jako zewnętrzne.
Niektórzy walidatorzy przeprowadzają głębsze kontrole. Inni optymalizują pod kątem szybkości.
Protokół pozwala na tę elastyczność.
System zakłada, że to nie ma znaczenia.
Wykonanie jest modułowe. Logika weryfikacji poświadczeń może zależeć od zewnętrznych schematów, atestacji poza łańcuchem lub opóźnionych dowodów. Wprowadza to asynchroniczną prawdę.
Poświadczenie może być akceptowane, zanim zostanie w pełni zweryfikowane.
To tutaj żyła moja anomalia.
Sekwencer priorytetowo traktuje wydajność. Transakcje są szybko porządkowane, efektywnie grupowane i propagowane bez czekania na pełną weryfikację.
Z punktu widzenia skalowalności, to jest konieczne.
Z punktu widzenia weryfikacji, to niebezpieczne.
Ponieważ po sekwencjonowaniu coś wygląda na ostateczne — nawet jeśli nie jest.
Wszystkie dane są publikowane. Nic nie jest ukryte. Ale dostępność nie jest tym samym, co zrozumienie.
Surowe dane wejściowe istnieją. Interpretacja tych danych jest odkładana na kogoś, kto je odczytuje — i jak głęboko decyduje się je zweryfikować.
Podpisy, hashe i dowody zapewniają integralność. Gwarantują, że dane nie zostały zmanipulowane.
Ale nie gwarantują, że znaczenie tych danych zostało uzgodnione na całym świecie w tym samym czasie.
W normalnych warunkach ta architektura działa pięknie.
Transakcje płyną. Poświadczenia propagują się. Systemy integrują się. Wszystko wydaje się spójne, ponieważ większość aktorów działa w podobnych założeniach i ramach czasowych.
Ale pod presją — przy wysokim przezbrojeniu, złożonych zależnościach poświadczeń lub przeciwnych danych wejściowych — pęknięcia się pogłębiają.
Poświadczenie może być sekwencjonowane, ale nie w pełni zweryfikowane, widoczne, ale nie powszechnie akceptowane, lub konsumowane przez aplikację, zanim jego ważność się ustabilizuje.
I żaden pojedynczy komponent nie jest błędny.
Są po prostu niezsynchronizowane.
Prawdziwe ryzyko nie wynika z samego protokołu, ale z tego, jak deweloperzy go interpretują.
Znalazłem aplikacje zakładające natychmiastową ostateczność, traktujące sekwencjonowane dane jako nieodwracalnie ważne, wierząc, że wszystkie węzły dzielą identyczne interpretacje przez cały czas i zakładając, że jeśli coś jest w łańcuchu, zostało w pełni zweryfikowane.
Żaden z tych elementów nie jest ściśle gwarantowany.
Jednak system tego nie czyni explicite.
Potem jest zachowanie użytkowników.
Handlowcy reagują na dystrybucje tokenów w momencie, gdy się pojawią. Budowniczowie integrują kontrole poświadczeń w systemach dostępu, zakładając wyniki binarne: ważne lub nieważne. Platformy wyświetlają atestacje jako fakty, a nie jako stany w przejściu.
Sieć została zaprojektowana z myślą o elastyczności.
Ekosystem traktuje to jako pewność.
To, co się pojawia, to luka — nie błąd, ale niedopasowanie.
Architektura zakłada, że weryfikacja może być warstwowa, odkładana i zależna od kontekstu.
Świat rzeczywisty zakłada, że weryfikacja jest natychmiastowa, absolutna i jednolita.
Obie nie mogą być prawdziwe w tym samym czasie.
Po dniach śledzenia logów, odtwarzania bloków i porównywania stanów walidatorów, wniosek stał się nieunikniony:
Nowoczesne zdecentralizowane systemy, takie jak Sign, nie zawodzą, ponieważ coś się psuje.
Nie udaje się, ponieważ coś nigdy nie było w pełni zdefiniowane.
Weryfikacja nie jest pojedynczym zdarzeniem — to proces rozciągnięty w czasie, aktorach i założeniach. A każde miejsce, w którym ten proces jest skracany, upraszczany lub odkładany, staje się granicą, gdzie rzeczywistość może się rozdzielić.
Infrastruktura nie załamuje się, gdy osiąga swoje granice.
Załamuje się na swoich krawędziach —
gdzie jedna warstwa cicho przestaje gwarantować to, co zakłada kolejna warstwa.
