Czy zdarzyło Ci się kiedyś wysłać aplikację zdecentralizowaną, poczuć dumę, nacisnąć „publikuj”… a potem cichy głosik pyta: „Czekaj. Co jeśli ktoś będzie manipulował danymi?”. Tym głosem nie jest strach. To Twój mózg modeluje zagrożenia. To samo robią banki, piloci i, tak, dobre zespoły kryptograficzne. W przypadku Walrusa (WAL) ma to znaczenie, ponieważ nie tylko zapisujesz plik. Ufasz sieci, że utrzyma przy życiu „bloba”. Blob to po prostu fragment danych. Obraz, zasób gry, plik JSON, cały post. Proste. Ale ryzyko z nim związane… nie zawsze proste. Lubię wyobrażać sobie Walrusa jak ruchliwy port przeładunkowy. Twoja aplikacja jest nadawcą. Blob to ładunek. Węzły pamięci masowej to statki. A Twoi użytkownicy? Czekają na nabrzeżu. Jeśli ładunek dotrze z opóźnieniem, uszkodzony lub wcale, użytkownicy nie przejmują się wymówkami. Po prostu odchodzą. Co więc najczęściej idzie nie tak? Pierwszy to cichy atak: „Jest tam… dopóki go nie ma”. Węzeł pamięci masowej może powiedzieć „Jasne, mam twoje dane”, a następnie je usunąć lub „zapomnieć” o ich części. To atak na dostępność. Dostępność oznacza po prostu, że dane można pobrać na żądanie. Walrus próbuje z tym walczyć za pomocą kontroli, które mierzą, czy węzły nadal posiadają blob w czasie. Wyobraź to sobie jako niespodziewane kontrole w magazynie. Jeśli się nie uda, tracisz nagrody lub zostajesz ukarany. O to właśnie chodzi: sprawić, by „kłamanie” kosztowało więcej niż „przechowywanie”. Następny jest podstępny atak: korupcja. Blob wraca, ale jest błędny. Jeden bit jest odwrócony, jeden fragment zamieniony, jeden plik, który wygląda dobrze, ale psuje aplikację. Walrus opiera się w tym celu na kryptograficznych skrótach. Skrót to krótki odcisk palca danych. Jeśli odcisk palca się zmieni, wiesz, że dane zostały zmienione. To jak zapieczętowanie pudełka stemplem. Jeśli stempel nie pasuje, nie otwierasz go i nie uśmiechasz się. Przestajesz. Badacie sprawę. Potem jest gra „wstrzymaj”. Węzeł ma dane, ale odmawia ich udostępnienia, licząc na to, że aplikacja się zawiesi, użytkownicy wpadną w panikę, a ktoś zapłaci ekstra. W tym miejscu z pomocą przychodzi redundancja. Walrus używa kodowania wymazywania.To wymyślne określenie, ale idea jest prosta: dzielisz plik na wiele części, dodajesz dodatkowe części naprawcze i rozrzucasz je. Nie potrzebujesz każdego elementu z powrotem. Potrzebujesz tylko „wystarczającej” liczby części. Jak odbudowa podartego plakatu, nawet jeśli brakuje kilku skrawków. Wstrzymywanie staje się trudniejsze, gdy sieć może się odbudować bez ciebie. Teraz bardziej przerażająca część. Ataki celują w kształt sieci, a nie w same dane. Ataki Sybil dotyczą fałszywych tożsamości. Jeden aktor próbuje uruchomić wiele węzłów, aby upodobnić się do „tłumu”. Jeśli kontroluje wystarczająco dużo, może zakłócić działanie usługi, wpłynąć na głosy lub wpłynąć na to, kto i co przechowuje. Sybil oznacza po prostu „wiele twarzy”. Obrona zazwyczaj opiera się na kosztach i selekcji. Udawanie wielu osób powinno być kosztowne i dobieraj węzły w taki sposób, aby jeden aktor nie zapełnił całego pomieszczenia. Istnieją również ataki Eclipse. Polegają one na tym, że atakujący próbuje otoczyć użytkownika lub klienta złymi peerami, tak aby użytkownik „widział” tylko węzły kontrolowane przez atakującego. Myślisz, że rozmawiasz z siecią, ale tak naprawdę rozmawiasz z fałszywym korytarzem. Obrona to różnorodność. Połącz się z wieloma partnerami. Rotuj ich. Nie ufaj jednej ścieżce. Im więcej masz tras, tym trudniej cię złapać. I nie ignoruj ataków ludzkich. Działają, bo wydają się normalne. Kradzież klucza to klasyka. Jeśli twój klucz podpisu zostanie skradziony, atakujący może przesłać złe bloby, zmienić referencje lub wyczerpać fundusze przypisane do magazynu. Klucz to jak klucz mistrzowski. Obrona jest nudna, ale realna: portfele sprzętowe, bezpieczne przechowywanie kluczy, brak momentów „wklej tutaj swój seed” i oddzielne klucze do wdrożenia i codziennych operacji. Podziel moc. Ogranicz promień rażenia. Błędy w inteligentnych kontraktach to kolejny. Walrus może być solidny, ale kod łączący deApp może być chaotyczny. Zła reguła dostępu, zepsute sprawdzenie, błąd w tym, kto może aktualizować wskaźniki blobów. Tak właśnie dochodzi do prawdziwych strat. Obrona: utrzymuj małe kontrakty, korzystaj z audytów, pisz testy, które próbują złamać twoje własne zasady i traktuj aktualizacje jak operację chirurgiczną, a nie szybką poprawkę. Na koniec kwestia griefingu i spamu. Atakujący mogą nie chcieć zysku.Mogą chcieć bólu. Zalewać przesyłanie, wymuszać wiele odczytów, blokować system, podnosić koszty. Obrona to limity przepustowości, opłaty skalowalne wraz z obciążeniem i decyzje projektowe, które sprawiają, że nadużycia są kosztowne. Jeśli chcesz wrzucać śmieci do portu przez cały dzień, płacisz za ciężarówki, paliwo i czas postoju w doku. Nie za społeczeństwo. Modelowanie zagrożeń nie polega na paranoi. Chodzi o spokój. Najpierw nazywasz złe rzeczy, żeby później nie udawać szoku. W przypadku Walrusa główny temat jest prosty: nie polegaj na jednym węźle, jednej ścieżce ani jednym szczęśliwym dniu. Używaj dowodów i kar, aby zapewnić uczciwość węzłów. Używaj skrótów, aby wykryć manipulacje. Używaj kodowania kasowania, aby brakujące części cię nie zabiły. A po swojej stronie chroń klucze, dbaj o ścisłą logikę kontraktu i zakładaj, że ktoś spróbuje głupiego ataku… i sprytnego… i tego „po co oni to robią?”. Bo tak zrobią. A jeśli zaplanujesz to teraz, twoi użytkownicy nigdy nie będą musieli tego zauważyć. To najlepszy rodzaj bezpieczeństwa. Cichy. Prawie niewidoczny. Jak port działający sprawnie, podczas gdy na morzu panuje burza.