İlk tam yığın web 3.0 dApp’imi oluşturma
Blockchain teknolojisinin beni heyecanlandıran ilk uygulamalarından biri (elbette Crypto’ya baktıktan sonra) merkezi olmayan sosyal medya. Tüketici verilerini korumak ve gerçekten sansürsüz, kullanıcı merkezli bir platform oluşturmak için dijital etkileşimlerden merkezi bir otoriteyi kaldırma fikri ilgimi çekiyordu. Web 3.0.
Instagram ve TikTok gibi tekel güç şirketlerinin ne kadar tekel gücüne sahip olduklarına baktım. veri merkezli iş modeli. Kullanıcıların, arkadaşlarının ve etkileyicilerinin söylediklerini okumak için akışlarında gezinerek bu şirketler milyarlarca dolar kazanabilir. Bunu, sürekli olarak kullanıcı davranış kalıplarını toplayarak ve bunları yalnızca diğer şirketlere satarak değil, aynı zamanda bu verileri bir kullanıcının deneyimini daha da kişiselleştirmek için kullanarak yaparlar. diğer oyuncuların sektöre girmesi önündeki engeli artırmak.
Yüzeyde bu iyi görünüyor, ancak en çok veriye sahip olan şirket her zaman kazanacağından rekabete çok aykırı bir iş modeli. eşitsizlik.
Temel olarak, merkezi olmayan defter teknolojisinin yarattığı şey, HERKES için eşit bir oyun alanıdır. Bu, bir grup insanın üstün olduğu ve tüm kullanıcılarının onun astları olduğu anlamına gelmez. Bu demektir Kod Yasadır böylece her türlü yolsuzluk silinebilir ve insanlar platforma katkıda bulunmaları için teşvik edilir ve bunun karşılığında kendilerine ödeme yapılır.
Peki merkezi olmayan bir platform bu sorunları nasıl azaltabilir? Yeni başlayanlar için, kullanıcılara kendi verileri üzerinde kontrol sağlayan kullanıcı davranış kalıplarını toplayan merkezi bir otorite yoktur. Bu yön, orada olmasını sağlar tüketici verileri için pazar yok tüketicilerin farkında bile olmadığı web2.0’daki gibi. Bir başka önemli husus da, hiçbir merkezi otoritenin kendi çıkarları için gösterilen içeriği manipüle edemediği gerçek “ifade özgürlüğü”dür.
Elbette, her iki sosyal medya türünün de doğasında var olan dezavantajlar vardır, ancak daha geniş ölçekte bakıldığında, Web 3.0 alanındaki sosyal ağlar, çok daha adil tüm paydaşlar için eşit koşullar sağlamak ve şirketlerin tüketici verileri yoluyla barındırdığı haksız avantajları ortadan kaldırmak.
Temel olarak daha adil ve etik bir iş modelinin yanı sıra, üçüncü web’in özellikleri de geleneksel web2.0 özelliklerinden çok daha havalı.
Para kazanma için NFT’ler
Bu ağlar blok zincirinde olduğundan, herhangi bir gönderi belirtilebilir ve değer atanabilir. Gönderilerin dönüşmesine izin verme NFT’ler içerik oluşturucular için bir para kazanma katmanı ekleyin çekici daha fazla etkileşim bu ağlar ile. Örneğin Instagram, bir NFT pazar yeri ile deneyler yapmaya başladı bile, ancak bu entegrasyon, tüm sosyal platform aynı zamanda blok zincirinde olduğunda daha fazla keşfedilebilir.
Ek olarak, NFT’ler herhangi bir platforma aktarılabilir, böylece kullanıcılar bir sosyal medya platformunda kazandıkları kredileri alabilir ve kullandıkları diğer Web 3.0 platformlarında kullanabilirler, bu da temelde itibarlarını beraberinde getirir.
DAO’lar aracılığıyla merkezi olmayan yönetişim
Bu platformların bir başka harika özelliği de, kullanıcıların platformların nasıl gelişebileceği konusunda doğrudan söz sahibi olmalarıdır. izinleri aracılığıyla merkezi olmayan özerk kuruluşlar (DAO’lar)akıllı sözleşmeler, insanları daha demokratik bir şekilde memnun etmek için sosyal ağın nasıl değiştirilmesi gerektiğini belirleyebilir.
Tamam, bu gelecekteki olasılıklar hakkında yeterince, hadi inşa edelim.
Merkezi olmayan sosyal medyaya olan ilgimi ve bu konudaki çalışma bilgimi geliştirmek istedim. sağlamlık ve bir sosyal ağ oluşturmak için tam yığın uygulamalar oluşturmak merkezi olmayan uygulama (dApp).
Devam etmeden önce nihai ürünü kontrol edin
Her ikisi için de kodun GitHub depoma göz atın başlangıç aşaması ve arka uç tüm kod için
Bu uygulama şunları içerir:
- MetaMask cüzdanını sosyal ağa bağlayan bir kullanıcı
- Herkese açık herhangi bir mesaj yüklemek
- Başkalarının mesajlarını okuma yeteneği
Ama içine giren çok şey vardı. Daha önce nasıl yapacağımı bilmediğim birçok yeni beceri bulmak. Tanrıya şükür, uygulamayı oluştururken göz ardı edeceğim teknik kavramları gerçekten anlamamı sağladığı için bu makaleyi yazmaya karar verdim.
Uygulamaya giren bileşenler şunlardır:
- Başlangıç aşaması: Temel React.JS Uygulaması
- arka uç: Solidity’de bir akıllı sözleşme ve sözleşmeyi dağıtmak ve çalıştırmak için bazı JS dosyaları
Bu dApp’i de oluşturmak istiyorsanız, göz atın bu öğretici nasıl başlayacağınız konusunda
Şimdi, bu programın nasıl çalıştığını incelemek için arka uç akıllı sözleşmelerini parçalayalım.
Akıllı sözleşmemi bozarak başlayalım… önce önemli şeylerle
Sözleşmenin başlatılması
Bu kodu başlatmak için, özellikle başka bir lisans (örneğin MIT) kullanırken iyi bir uygulama olan lisans tanımlayıcısını bildirmeliyiz. Bu durumda lisans önemli olmadığı için Lisanssız olarak beyan ediyorum.
Daha sonra, kullandığımız Solidity sürümünü bildirmeli ve Solidity’yi yerel olarak çalıştırmamıza izin veren Hardhart kitaplığını içe aktarmalıyız. Ethereum ağı test amacıyla sahte ETH ve sahte hesaplar sağlamanın yanı sıra. kontrol etmeyi öneriyorum Hardhart herhangi bir akıllı sözleşme yazmakla ilgileniyorsanız. Bu proje, Hardhat kullanılmadan mümkün olmazdı.
Akıllı sözleşmeyi detaylandırma
.Sol dosyasını hazırladıktan sonra akıllı sözleşmeyi yazmaya başladım. Bir akıllı sözleşmenin formatı, tüm yürütülebilir kodların ayraçların içine girdiği diğer dillerdeki bir sınıfa çok benzer bir şekilde kurulur.
Sözleşmeyle etkileşim hakkında birkaç özelliği tutmak için birkaç tamsayı ve bir dizi (dolaylı olarak 0 olarak başlatıldı) başlatarak başladım. Bu değişkenler hakkında benzersiz olan şey, bunların durum değişkenler, sözleşmenin hafızasında kalıcı olarak saklandıkları anlamına gelir.
Ardından, arayüzde göreceğiniz kullanıcı detayları (adres, zaman damgası ve mesaj) için parametrelerin girildiği iki etkinlik oluşturdum. Bir etkinlik Solidity, verileri gerçek akıllı sözleşme tarafından erişilemeyen bir işlem günlüğünde depolayan benzersiz bir veri türüdür. Olay daha sonra bu verileri, blok zincirinde herhangi bir değişiklik olduğunda güncellenen ön uç istemciye gönderir. bu etkinlik anahtar kelime ile eşleştirilmiş yaymak sözleşmede daha sonra kullanılan anahtar kelime.
Olaylar Bu durumda değerlidirler, çünkü onlar olmadan her mesaj gönderildiğinde, her kullanıcının mesajı görmek için sayfasını yenilemesi gerekir. Programın şu anda tasarlanma şekli etkinlik Ve yaymak çağrılar, program gerçek zamanlı olarak güncellenebilir.
sonra ilan ederim yapı bu, esasen içinde herhangi bir veriyi saklamama izin veren özel bir veri tipidir (burada kullanıcıdan toplanan üç parametreyi sakladım). yapılar bir veri listesi saklamaya yardım et, bu yüzden onları burada kullandım.
Daha sonra asıl sallama eylemi için bir işlev yarattım, buna esasen tam olarak “” adını verdim.tweetleme” kullanıcının akıllı sözleşme ile etkileşime girmesi için.
Bu kod bloğunda, tekrarlanan kullanım mesaj gönderen sadece kullanıcının cüzdan adresi olan gelir. Bu özellik, işlevi çağıran kullanıcının (el sallayarak veya “tweetleyerek”) geçerli bir cüzdan adresi kullanmasını sağladığından dolaylı olarak bir kimlik doğrulama katmanı görevi görür.
İşlev içinde, bir kullanıcının ne sıklıkta “tweet” atabileceğine ilişkin bir sınır vardır (beş dakikada bir), ancak bu sınırdan kurtulmak için bunu daha sonra değiştirdim. Sözleşmeyi yürütmek için bu kodun bir parçası gerektiğinden, onu burada tuttum.
Bir sonraki blok, sözleşmenin kullanıcının girişini topladığı ve ardından kaydedilen dalgaların toplam sayısını yinelediği yerdir. Bu, ön uçta gösterebileceğim bir sayı, ancak kullanıcıya hiçbir değer sağlamadığı için gerekli olmadığını hissettim.
Buradaki son blok, “itmek” kullanıcıdan gelen veriler yukarıda başlatılan Wave dizisine. Bu eylem, ön uçta kullanımı için kullanıcı verilerini değiştirmemize izin verir.
Burada yapacağımız ilk şey yaymak daha önce bildirdiğimiz NewWave() olayı. yayan etkinlik bir işlevi çağırmak gibidir. bu etkinlik bildirim, gelecekte çağrılacak bir işlevin eşdeğerini oluşturur ve yaymak anahtar kelime, ön uçla etkileşime giren şeydir.
Son üç işlev, yalnızca ön uç için dalga sayısının gerekli değerini döndürür. Sonunda bu ölçümleri kullanmadım, ancak kullanıcının bilgisi için onları atabilirdim.
Arka ucun diğer bölümleri
Akıllı sözleşmeyi sunucuya dağıtmak için çoğunlukla arka uçta kullandığım birkaç dosya daha vardı. Görli test ağı ve sözleşmeyi yürütmek. Bu dosyalar (konuşlandırma.js Ve run.js) Onları kontrol etmekle ilgileniyorsanız. Kodumun arka ucunu kontrol et Github.
Bu benim ilk defa bir bina inşa etmemdi. React.JS Sonunda karmaşık arka ucumu bir web uygulaması aracılığıyla kullanılabilir hale getirirken çok eğlendim. Size hayatımın birkaç bölümünü anlatacağım. tepki uygulaması gibi bazı bölümleri hariç tutun. CSS ve arka ucumdan aldığım bazı tekrarlayan kısımlar. Kodun tamamını görmek için şuraya göz atın: başlangıç aşaması GitHub’da.
Burada içe aktarılan ve tanımlanan çok şey var, ancak yalnızca önemli şeylerin üzerinden geçeceğim. Dördüncü satırda, Abi ön uç ile arka ucu birbirine bağlayan anahtar kısımdır. Bu Abi tarafından oluşturuldu WavePortal.json akıllı sözleşmenin ön uçla iletişim kurması için oluşturulan dosya.
Ne olduğunu daha fazla açıklamak için Abi işte bir örnek. Kodu derlediğinizde, yazıldığı dilden bilgisayarların konuştuğu dil olan makine koduna çevrilir. bu Abi esasen çevrilen kodun yapısını bilgisayarın anlayabileceği şekilde yerleştirir.
Bu kullanım durumu, programları diğer kitaplıklara bağlarken aynıdır (örn. ön uçtan arka uca).
Takip eden sabitler daha sonra sözleşmeden alınan verilere göre beyan edilir.
Kodun bu kısmı, kullanıcının cihazlarını bağlayıp bağlamadığını görmek için önemli bir kontrol yapar. MetaMask cüzdanı. Kod benzersiz bir şekilde ayarlanmıştır, böylece kullanıcının cüzdanı zaten bağlıysa, kullanıcının buna ihtiyacı olmadığı için “cüzdanınızı bağlama” düğmesi kaybolur.
Herhangi bir Web3.0 sitesindeki “cüzdanınızı bağlayın” düğmesi, herhangi bir uygulama için ÇOK ÖNEMLİ olan herhangi bir Web2.0 sitesindeki “giriş” düğmesinin eşdeğeridir. Bu benzetme ile genel cüzdan adresi kullanıcı adı olur ve özel anahtar olur şifre.
Bu koşullu kod bloğu, kullanıcının cüzdanı bağlandığında çalışır ve ön ucun iletişim Akıllı sözleşme ile.
A Sağlayıcı ile iletişim kurmak için kullanılır. Ethereum düğümü. Akıllı sözleşmeden veri göndermek ve almak için Metamask tarafından sağlanan düğümleri kullanıyoruz. Bu işlemler aracılığıyla yapılır eterler en üstte içe aktarılan kitaplık.
A imzalayan aynı zamanda bir fonksiyonudur eterler kitaplığıdır ve mesajları imzalamak ve bu imzalı mesajları Ethereum ağına göndermek için kullanılır, böylece herhangi bir işlemi gerçekleştirebilir. durumları değiştir. İmzalama bir veri parçası, bazılarını kullanarak yasal olduğunu kanıtlamanın bir yoludur. matematiksel kanıtlar. Algoritma, yalnızca verileri imzalayan kişi tarafından bilinen ve daha sonra bir doğrulama kullanılarak doğrulanabilecek gizli bir anahtar oluşturur. Genel anahtar bu, onu imzalayan kişinin sahip olduğunu gösterir Özel anahtar.
Bu, blok zincirinde toplanan ve depolanan tüm kullanıcı verilerini gösteren kodun son bölümlerinden biridir. Bu, kullanıcılar için nihai üründür.
Nispeten basit olduğu için ön uç kodunun bir kısmını atladım ve sadece bu kodla ana mimari anlaşılabilir.