IPFS dla zdecentralizowanych interfejsów użytkownika
Napisałeś niesamowitą nową zdecentralizowaną aplikację (dapp). Napisałeś dla niej nawet interfejs użytkownika. Ale teraz obawiasz się, że ktoś spróbuje ją ocenzurować, wyłączając Twój interfejs użytkownika, który znajduje się na pojedynczym serwerze w chmurze. W tym samouczku dowiesz się, jak uniknąć cenzury, umieszczając swój interfejs użytkownika w międzyplanetarnym systemie plików (IPFS) (opens in a new tab), dzięki czemu każdy zainteresowany będzie mógł przypiąć go do serwera w celu uzyskania dostępu w przyszłości.
Mógłbyś użyć usługi innej firmy, takiej jak Fleek (opens in a new tab), aby wykonała całą pracę. Ten samouczek jest dla osób, które chcą zrobić wystarczająco dużo, aby zrozumieć, co robią, nawet jeśli wymaga to więcej pracy.
Rozpoczęcie pracy lokalnie
Istnieje wielu zewnętrznych dostawców IPFS (opens in a new tab), ale najlepiej zacząć od uruchomienia IPFS lokalnie w celach testowych.
-
Zainstaluj interfejs użytkownika IPFS (opens in a new tab).
-
Utwórz katalog ze swoją stroną internetową. Jeśli używasz Vite (opens in a new tab), użyj tego polecenia:
pnpm vite build -
W IPFS Desktop kliknij Import > Folder i wybierz katalog utworzony w poprzednim kroku.
-
Wybierz właśnie przesłany folder i kliknij Rename (Zmień nazwę). Nadaj mu bardziej znaczącą nazwę.
-
Wybierz go ponownie i kliknij Share link (Udostępnij link). Skopiuj adres URL do schowka. Link będzie podobny do
https://ipfs.io/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ. -
Kliknij Status. Rozwiń kartę Advanced (Zaawansowane), aby zobaczyć adres bramy. Na przykład w moim systemie adres to
http://127.0.0.1:8080. -
Połącz ścieżkę z kroku z linkiem z adresem bramy, aby znaleźć swój adres. Na przykład dla powyższego przykładu adres URL to
http://127.0.0.1:8080/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ. Otwórz ten adres URL w przeglądarce, aby zobaczyć swoją stronę.
Przesyłanie
Teraz możesz używać IPFS do serwowania plików lokalnie, co nie jest zbyt ekscytujące. Następnym krokiem jest udostępnienie ich światu, gdy jesteś offline.
Istnieje wiele dobrze znanych usług przypinania (pinning services) (opens in a new tab). Wybierz jedną z nich. Niezależnie od tego, z jakiej usługi korzystasz, musisz utworzyć konto i podać jej identyfikator treści (CID) ze swojego IPFS Desktop.
Osobiście uważam, że 4EVERLAND (opens in a new tab) jest najłatwiejszy w użyciu. Oto instrukcje dla niego:
-
Przejdź do pulpitu nawigacyjnego (opens in a new tab) i zaloguj się za pomocą swojego portfela.
-
Na lewym pasku bocznym kliknij Storage > 4EVER Pin.
-
Kliknij Upload > Selected CID. Nadaj swojej treści nazwę i podaj CID z IPFS Desktop. Obecnie CID to ciąg znaków zaczynający się od
Qm, po którym następują 44 litery i cyfry reprezentujące hash zakodowany w base-58 (opens in a new tab), taki jakQmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ, ale to prawdopodobnie ulegnie zmianie (opens in a new tab). -
Początkowy status to Queued (W kolejce). Odświeżaj, aż zmieni się na Pinned (Przypięto).
-
Kliknij swój CID, aby uzyskać link. Możesz zobaczyć moją aplikację tutaj (opens in a new tab).
-
Być może będziesz musiał aktywować swoje konto, aby było przypięte na dłużej niż miesiąc. Aktywacja konta kosztuje około 1 dolara. Jeśli je zamknąłeś, wyloguj się i zaloguj ponownie, aby ponownie poproszono Cię o aktywację.
Korzystanie z IPFS
W tym momencie masz link do scentralizowanej bramy, która serwuje Twoją treść IPFS. Krótko mówiąc, Twój interfejs użytkownika może być nieco bezpieczniejszy, ale nadal nie jest odporny na cenzurę. Aby uzyskać prawdziwą odporność na cenzurę, użytkownicy muszą korzystać z IPFS bezpośrednio z przeglądarki (opens in a new tab).
Po zainstalowaniu tego (i uruchomieniu IPFS Desktop), możesz przejść do /ipfs/<CID> (opens in a new tab) na dowolnej stronie, a otrzymasz tę treść, serwowaną w sposób zdecentralizowany.
Wady
Nie można w niezawodny sposób usuwać plików IPFS, więc dopóki modyfikujesz swój interfejs użytkownika, prawdopodobnie najlepiej jest pozostawić go scentralizowanym lub użyć międzyplanetarnego systemu nazw (IPNS) (opens in a new tab), systemu, który zapewnia zmienność na wierzchu IPFS. Oczywiście wszystko, co jest zmienne, może zostać ocenzurowane, w przypadku IPNS poprzez wywieranie presji na osobę posiadającą klucz prywatny, któremu on odpowiada.
Dodatkowo, niektóre pakiety mają problem z IPFS, więc jeśli Twoja strona internetowa jest bardzo skomplikowana, może to nie być dobre rozwiązanie. I oczywiście nic, co opiera się na integracji z serwerem, nie może zostać zdecentralizowane tylko poprzez umieszczenie strony klienta w IPFS.
Odkrywalność poprzez ENS
Jeśli wskażesz nazwę ENS (np. vitalik.eth) na swoją stronę internetową, zostanie ona uznana za w pełni zdecentralizowaną stronę internetową i zostanie automatycznie przypięta przez usługę dweb3.wtf (opens in a new tab), a także udostępniona do wyszukiwania za pośrednictwem wyszukiwarki web3compass.net (opens in a new tab), podobnie jak robią to DuckDuckGo, Brave Search lub Google dla tradycyjnej sieci.
Wnioski
Podobnie jak Ethereum pozwala na decentralizację bazy danych i logiki biznesowej Twojej zdecentralizowanej aplikacji (dapp), IPFS pozwala na decentralizację interfejsu użytkownika. Pozwala to na wyeliminowanie jeszcze jednego wektora ataku na Twoją aplikację dapp.