Merkeziyetsiz kullanıcı arayüzleri için IPFS
İnanılmaz yeni bir merkeziyetsiz uygulama (dapp) yazdınız. Hatta bunun için bir kullanıcı arayüzü bile yazdınız. Ancak şimdi, buluttaki tek bir sunucudan ibaret olan kullanıcı arayüzünüzü çökerterek birinin onu sansürlemeye çalışacağından korkuyorsunuz. Bu eğitimde, ilgilenen herkesin gelecekte erişmek üzere bir sunucuya sabitleyebilmesi (pin) için kullanıcı arayüzünüzü gezegenler arası dosya sistemine (IPFS) (opens in a new tab) koyarak sansürden nasıl kaçınacağınızı öğreneceksiniz.
Tüm işi yapması için Fleek (opens in a new tab) gibi üçüncü taraf bir hizmet kullanabilirsiniz. Bu eğitim, daha fazla iş gerektirse bile ne yaptıklarını anlayacak kadarını kendi yapmak isteyenler içindir.
Yerel olarak başlama
Birden fazla üçüncü taraf IPFS sağlayıcısı (opens in a new tab) vardır, ancak test için IPFS'yi yerel olarak çalıştırarak başlamak en iyisidir.
-
Web sitenizi içeren bir dizin oluşturun. Eğer Vite (opens in a new tab) kullanıyorsanız, şu komutu kullanın:
pnpm vite build -
IPFS Desktop'ta İçe Aktar > Klasör (Import > Folder) seçeneğine tıklayın ve önceki adımda oluşturduğunuz dizini seçin.
-
Yeni yüklediğiniz klasörü seçin ve Yeniden Adlandır'a (Rename) tıklayın. Daha anlamlı bir isim verin.
-
Tekrar seçin ve Bağlantıyı paylaş'a (Share link) tıklayın. URL'yi panoya kopyalayın. Bağlantı
https://ipfs.io/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJbenzeri bir şey olacaktır. -
Durum'a (Status) tıklayın. Ağ geçidi adresini görmek için Gelişmiş (Advanced) sekmesini genişletin. Örneğin, benim sistemimde adres
http://127.0.0.1:8080şeklindedir. -
Adresinizi bulmak için bağlantı adımındaki yolu ağ geçidi adresiyle birleştirin. Örneğin, yukarıdaki örnek için URL
http://127.0.0.1:8080/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJşeklindedir. Sitenizi görmek için bu URL'yi bir tarayıcıda açın.
Yükleme
Artık dosyaları yerel olarak sunmak için IPFS'yi kullanabilirsiniz, ki bu pek de heyecan verici değildir. Bir sonraki adım, siz çevrimdışıyken bunları dünyanın erişimine açmaktır.
Çok sayıda iyi bilinen sabitleme (pinning) hizmeti (opens in a new tab) vardır. Bunlardan birini seçin. Hangi hizmeti kullanırsanız kullanın, bir hesap oluşturmanız ve IPFS masaüstünüzdeki içerik tanımlayıcısını (CID) bu hizmete sağlamanız gerekir.
Kişisel olarak, 4EVERLAND (opens in a new tab)'i kullanması en kolay olanı olarak buldum. İşte bunun için talimatlar:
-
Kontrol paneline (opens in a new tab) gidin ve cüzdanınızla giriş yapın.
-
Sol kenar çubuğunda Storage > 4EVER Pin seçeneğine tıklayın.
-
Upload > Selected CID seçeneğine tıklayın. İçeriğinize bir isim verin ve IPFS masaüstünden CID'yi sağlayın. Şu anda bir CID,
Qmile başlayan ve ardındanQmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJgibi base-58 kodlu (opens in a new tab) bir hash'i temsil eden 44 harf ve rakamdan oluşan bir dizedir, ancak bunun değişmesi muhtemeldir (opens in a new tab). -
Başlangıç durumu Queued (Kuyrukta) şeklindedir. Pinned (Sabitlendi) olarak değişene kadar sayfayı yeniden yükleyin.
-
Bağlantıyı almak için CID'nize tıklayın. Uygulamamı buradan (opens in a new tab) görebilirsiniz.
-
Bir aydan daha uzun süre sabitlenmesi için hesabınızı etkinleştirmeniz gerekebilir. Hesap etkinleştirme maliyeti yaklaşık 1 dolardır. Eğer kapattıysanız, tekrar etkinleştirme sorulması için çıkış yapıp yeniden giriş yapın.
IPFS'den kullanma
Bu noktada, IPFS içeriğinizi sunan merkezi bir ağ geçidine giden bir bağlantınız var. Kısacası, kullanıcı arayüzünüz biraz daha güvenli olabilir ancak yine de sansüre dirençli değildir. Gerçek bir sansür direnci için kullanıcıların IPFS'yi doğrudan bir tarayıcıdan (opens in a new tab) kullanması gerekir.
Bunu yükledikten (ve masaüstü IPFS çalıştıktan) sonra, herhangi bir sitede /ipfs/<CID> (opens in a new tab) adresine gidebilirsiniz ve bu içeriği merkeziyetsiz bir şekilde sunulmuş olarak alırsınız.
Dezavantajlar
IPFS dosyalarını güvenilir bir şekilde silemezsiniz, bu nedenle kullanıcı arayüzünüzü değiştirdiğiniz sürece, onu merkezi bırakmak veya IPFS üzerinde değiştirilebilirlik sağlayan bir sistem olan gezegenler arası isim sistemini (IPNS) (opens in a new tab) kullanmak muhtemelen en iyisidir. Elbette, değiştirilebilir olan her şey sansürlenebilir; IPNS durumunda bu, karşılık geldiği özel anahtara sahip kişiye baskı yapılarak gerçekleştirilebilir.
Ek olarak, bazı paketlerin IPFS ile sorunları vardır, bu nedenle web siteniz çok karmaşıksa bu iyi bir çözüm olmayabilir. Ve elbette, sunucu entegrasyonuna dayanan hiçbir şey sadece istemci tarafının IPFS üzerinde olmasıyla merkeziyetsiz hale getirilemez.
ENS aracılığıyla keşfedilebilirlik
Eğer bir ENS adını (vitalik.eth gibi) web sitenize yönlendirirseniz, bu tamamen merkeziyetsiz bir web sayfası olarak kabul edilecek ve dweb3.wtf (opens in a new tab) hizmeti tarafından otomatik olarak sabitlenecektir; ayrıca tıpkı DuckDuckGo, Brave Search veya Google'ın geleneksel web için yaptığı gibi web3compass.net (opens in a new tab) arama motoru üzerinden aranabilir hale getirilecektir.
Sonuç
Tıpkı Ethereum'un dapp'inizin veritabanı ve iş mantığı yönlerini merkeziyetsizleştirmenize izin vermesi gibi, IPFS de kullanıcı arayüzünü merkeziyetsizleştirmenize olanak tanır. Bu, dapp'inize yönelik bir saldırı vektörünü daha kapatmanızı sağlar.
Çalışmalarımın daha fazlası için buraya bakın (opens in a new tab).