Snowflake Kimlik Protokolü ve Hydro dApp Mağazası

Hydro Türkiye
Hydro Türkiye
Published in
8 min readSep 14, 2018

Anurag Angara — İngilizceden Çeviren: M. Talha Altınkaya

Arkaplan: Snowflake’i Planlama

Project Hydro’nun Snowflake aşamasını planlarken, ekibimiz dijital kimlik kavramını dikkatlice değerlendirdi. Kimlik alanındaki çoğu blockchain takımının sağladığı değerden farklı bir değer sağladığımızdan emin olmak istedik ve birçok ekibin çeşitli uygulamalarda müstakil olarak kullanılabilen dijital kimlikler üretmekte olduğunu fark ettik. Bu dijital kimlikler, günümüzde dünyanın dört bir yanındaki insanlar tarafından kullanılan gerçek dünya kimliklerine benzemektedir: sürücü belgeleri, pasaportlar, erişim kartları vb. Dijital bir kimlik oluşturmanın zorluğu, bu kimliklerin sadece onu kabul eden sistemler kadar kullanışlı olmasıdır. Örneğin, yalnızca Amerika Birleşik Devletleri’ndeki işletmeler tarafından kabul edilen bir dijital sürücü lisansım varsa, Fransa’da bir mekanda kabul edilen tamamen ayrı bir dijital kimliği yönetmem gerekiyor. Dahası, bu dijital kimliklerin her biri, bir birey hakkında farklı formatlarda farklı bilgileri kodlar/şifreler. Bu süreç, tekil bir dijital kimlik formatı üzerinde küresel bir fikir birliği elde edebilseydik, ideal olacaktı, ancak bu durum dijital kimliğin gerçekçi bir şekilde yayılması gibi görünmemektedir.

Bu soyutlamayı bir adım ileriye taşıyarak, bir kullanıcının etkileşimde bulunduğu herhangi bir akıllı sözleşmede kodlanmış herhangi bir bilginin, o kullanıcının kimliği ile konuşabileceğini fark ettik. Sezgisel bir analoji ile ifade etmek gerekirse: “Akıllı telefonuma indirdiğim mobil uygulamalara ve bu uygulamaların her birindeki verilere bakmak, benim temel kimliklerim hakkında [ fundamental identity] sadece ulusal kimlik kartıma [nüfus cüzdanıma] bakmaktan çok daha fazlasını ifade ediyor.” Dijital dünyada, indirdiğim bu uygulamalardan biri, Amerikan kimlik kartımın dijital bir yorumu [rendition] olabilirken, diğeri de Fransız kimlik kartımın bir icrası olabilir. Bu nedenle, dijital bir kimlik oluşturmak yerine, kullanıcıların herhangi bir formatta, herhangi bir tanımlayıcı bilgiyi kolaylıkla yönetebilmelerini ve toplayabilmelerini sağlayan bir dijital kimlik protokolü oluşturmaya başladık.

Bu mantık bizi bir Snowflake Kimlik Token’ının bir kullanıcının Snowflake dApp mağazasına giriş kapısı olduğu bir altyapıya yönlendirdi. Düşük seviyeli bir kimlik yapısı olarak bu, geliştiricilerin herhangi bir kullanıcı bilgisini kodlayabilecek herhangi bir akıllı sözleşme/dApp oluşturmasına olanak tanır. Bir Snowflake Kimlik Token’ı ile karşılaştırmak için blockchain olmayan [non-blockchain] en kolay benzetim [analogy] bir kullanıcının geleneksel uygulama mağazasına erişiminin bir kapısı olarak işlev gören bir iCloud veya Google Play hesabıdır.

Kullanıcıların kredi kartlarını bir iCloud veya Google Play hesabına bağlayabilmeleri gibi, Hydro kullanıcıları da Snowflake Identity Token’dan HYDRO token bakiyesini yatırabilir[deposit] ve çekebilir[withdraw]. Bu mekanizma, dApp geliştiricilerinin, uygulama içi satın almalar, aylık abonelikler, bir uygulamayı indirmek için ödeme yapma ve daha fazlası gibi şeyleri programlı olarak ücretlendirmelerini kusursuzlaştırır.

Bu noktada, Snowflake şöyle görünüyordu:

Hala bir şeylerin eksik olduğunu hissettik — konsepti sevdik, ancak daha kullanışlı hale getirmemiz gerekiyordu.

Snowflake’in genel mimarisine karar verdikten sonra, bunu güvenli hale getirmenin ve Ethereum dApps’lerinde yaygın olan kullanıcı dostu sorunların üstesinden gelmenin bir yoluna ihtiyacımız vardı. Kullanıcılar mobil uygulamamızda şu anda zaten bir cüzdandan bir HydroID oluşturduğundan dolayı, Hydro mobil uygulamasında aynı cüzdandan bir kullanıcının Snowflake Identity Token’ı da yaratmanın en mantıklı şey olacağını düşündük. Nitekim bu, Hydro mobil uygulamasını, dApp mağazası tarafından sağlanan dApp’lerin ekosistemine karşı bir kullanıcının tek durak noktası yapar.

Bununla birlikte, bir kullanıcının Kimlik Token’ı oluşturulduktan sonra, yalnızca kullanıcıya, Hydro mobil uygulamasının hafızasında yerel olarak depolanan tekil bir cüzdandan bu Kimlik’e erişmesi için izin vermenin çok kısıtlayıcı olacağını belirledik. Günümüz dünyasında kullanıcılar, birden fazla cihazdaki hesaplarına erişebilmeyi bekliyor — telefonlar, tabletler, masaüstü bilgisayarlar vb.

Snowflake’in ilk mimarisi altında, bu talebi karşılamanın tek yolu, kullanıcılardan kendi özel anahtarlarını [private key] ister manuel olarak isterse kuracağımız bir çeşit bulut altyapısı aracılığıyla, her bir farklı cihaza geçirmelerini istemek olacaktı. Fakat Hydro uygulamasındaki özel anahtar güvenli kimlik doğrulaması için tasarlandığından, bu tür önemli geçişler bizim için bir seçenek değildi — kullanıcı hatası için çok fazla açık alan bıraktı ve kabul edilemez güvenlik tehditleri ortaya çıkardı. Bu noktada biz bir çekirdek kimliğini korurken, cihazlar arasında dApp’lere erişmek için alternatif ve standart bir çözüm bulmamız gerektiğini fark ettik.

Çizim tahtası bizi bir süre “çoklu adres yönetimi” çözümüne yönlendirdi. Blockchain’in yaygın bir şekilde kabul görmesini sağlamak için, kullanıcılar kilit yönetiminin nüanslarını öğrenmek zorunda kalmamalıdır. [Yani Private Key’i nasıl saklarım gibi onlarca yöntemi öğrenmek zorunda kalmamalıdır. ta.] Kullanıcıların Snowflake Token’larına birden çok cüzdandan erişmelerine izin vererek, sistemlerin yerel olarak depolanmış cüzdanları tamamen arka uçta [back-end] oluşturabilecekleri bir dünyaya yol açıyoruz ve kullanıcılar telefonlarını, Ethereum adreslerinin nüanslarını [ince farklarını] anlamadan kimliklerini birleştirmek adına yeni cihazları güvenli bir şekilde doğrulamak için kullanabilirler.

Bu nedenle Snowflake kullanıcı akışını aşağıda görebileceğiniz gibi genişlettik:

Snowflake dApp Mağazası

Şimdi, dApp mağazasının kullanıcı etkileşimini daha ayrıntılı olarak inceleyelim. Kullanıcı, Snowflake kontrol panelinden dApp mağazasına erişir. DApp mağazası, geliştiriciler tarafından Snowflake ekosistemine yapılan tüm dApp’lerden oluşmaktadır. DApp mağazasına bir dApp eklemek için, bir geliştiricinin akıllı sözleşmesi için birkaç değişiklik yapması ve kullanıcıların kendi dApp’i ile etkileşim kurması için React’ta bir modal oluşturması gerekir. Geliştiriciler dApp mağazasına dApp’leri ekleme süreci hakkında daha fazla ayrıntı elde edebilmek için geliştirici kılavuzuna erişebilir.

Kullanıcılar için, geleneksel bir uygulama mağazasındaki bazı işlevler üzerine düşündük. Bazı uygulamalar indirmek için ücretsizdir, diğerleri ise ücretlidir. Bazı uygulamalar uygulama içi satın alma işlemlerine sahipken, diğerleri abonelik için aylık ücret alır. Ekibimizin dApps oluşturma deneyiminde (özellikle kullanıcılar ERC 20 token ile ödeme yaparken) kullanıcıları belirli ödeme modelleri altında akıllı bir sözleşmeden ücretlendirmek için bu tür işlevleri kodlamanın gereksiz bir şekilde zor olduğunu gördük. Geliştiricilerin ödeme yapıları yerine dApp’lerinin temel işlevlerine odaklanabilmeleri için, önceden tanımlanmış kurallar altındaki kullanıcılara programlı olarak ödeme olanağı veren dApp’lere izin veren yerel ödeme akışları oluşturduk. Kullanıcılar için bu yararlıdır, çünkü doğrudan gösterge/kullanım panellerinden kullandıkları her bir dApp için ne kadar ödeme yaptıklarını görebilirler. Abonelik iptal edebilir, token çekebilir ya da gerektiğinde her bir dApp için fon ayırtabilirler. Kullanıcılar akıllı telefon veya masaüstü ara-yüzlerinde geleneksel uygulamalar ekledikleri veya kaldırdıkları gibi çok sayıda dApp ekleyebilir veya kaldırabilirler.

Snowflake kontrol panelini kullanma

Snowflake kontrol paneli şu anda erken bir Alfa sürümünde —ve biz bu panele snowflake sözleşmesinden ana işlevselliği ekledik. Şimdi odak noktamız, Snowflake sözleşmesinde kodlamamız gereken ek çekirdek işlevlerini belirlemek için dApp kullanıcılarından ve akıllı sözleşme geliştiricilerinden geri bildirim toplamaktır.

Kontrol panelini kullanmak için, önce Rinkeby testnet üzerinde ETH ve HYDRO almanız gerekecektir. Testnet ETH’si edinmek için, aşağıdaki StackExchange bağlantısındaki adımları izleyin:

Testnet HYDRO’su edinmek için, bu (aşağıdaki) sayfada MetaMask üzerinden Rinkeby hesabınızı bağlayın:

ve getMoreTokens işlevini “yazın” ki bu işlev 10,000 HYDRO oluşturan HYDRO token sözleşmesinin Rinkeby versiyonunda bir işlevdir ve bu tokenları cüzdanınıza çeker.

Testnet ETH ve HYDRO’sunu aldıktan sonra bir HydroID oluşturmanız gerekecektir. Gelecekte kullanım paneli Hydro mobil uygulamasında oluşturulan HydroID’ler ile uyumlu olacak. Bir HydroID elde ettikten sonra, Snowflake Kimlik Tokenınızı talep etmeniz gerekecektir.

Bir Snowflake talep [claim] ettikten sonra DApp’leri (çözücüler) yönetmek için sekmeleri gözlemleyecek, adresleri yönetecek ve Snowflake Kimlik Tokenlarınızdan istediğiniz kadar token yatırıp çekeceksiniz. Cüzdanınızdaki ETH ve HYDRO bakiyesine ek olarak Snowflake Kimlik Jetonlarınızdaki HYDRO bakiyesini de gözlemleyeceksiniz.

Bu noktada, dApp mağazasında yerleşik olarak bulunan tüm dApp’leri görüntüleyebilir, bunları kullanım panelinize ekleyebilir veya çıkarabilir, kullanım panelinize erişmek istediğiniz adresleri ekleyebilir veya çıkarabilir ve HYDRO’nuzu Snowflake Kimlik Token’ınıza yatırıp geri çekebilirsiniz.

Tüm bunları özetlediğimiz canlı yayın özetimizde, kullanım/gösterge panelinin mevcut tüm işlevlerinin ayrıntılı bir görünümünü izleyebilirsiniz. Rinkeby testnet’teki MetaMask’ı kullanmayı bilen kişiler kontrol panelini kendileri için deneyerek, (biz iyileştirmeleri planlarken) bize geri bildirimde bulunurlarsa seviniriz!

Sonuç — Hepsi Bir Arada — All in All

Snowflake’deki işlevleri nasıl tanımladığımıza dair bazı tanımlar.

dApp store: geliştiricilerin dApp’lerini ekleyebildikleri ve kullanıcıların da dashboard’larından bu dApp’leri ekleyip kaldırmak için kolayca yönetilebilen bir alan oluşturduk.

Snowflake Dashboard: Kullanıcıların dApp mağazasına eriştiği kullanıcı arayüzü.

Çözücü [resolver]: Geliştiricinin dApp mağazasında bulunan geliştirdiği herhangi bir dApp.

“Bir Çözücü Ayarlamak”: Kullanıcının bakış açısından — geleneksel bir uygulama mağazasından bir uygulamayı indirmeye benzer.

“Bir Çözücü Kaldırmak”: Kullanıcının bakış açısından — indirilen bir uygulamayı geleneksel bir uygulama mağazasından silmeye benzer.

“Adres Yönetimi”: Kullanıcının birden fazla Ethereum adresinden dApp mağazasına erişmesini sağlayan Snowflake protokolünün bir işlevi. Bu önemlidir çünkü kullanıcının programların altında yatan temel işlevselliği anlaması gerekmeden, cihazlarının her birine yerel olarak benzersiz adresler oluşturmasına olanak sağlar. Ayrıca, kullanıcılar özel anahtarları [PV Key] bir konumdan diğerine taşımak zorunda olmadıkları için platformdaki güvenliği de artırır.

Snowflake Identity Token: Kullanıcıların çözücüler arasında gezinmesine, çözücülere ödeme yapmasına, çözücüler ekleyip kaldırmasına ve birden çok adrese dağılmış HYDRO tokenları yönetmesine olanak tanıyan bir araç — ve aynı zamanda bir kullanıcı için Snowflake protokolüne bir ağ geçidi (tıpkı Apple ekosisteminde olduğu gibi) benim itunes hesabımın benim iPad, MacBook ve iPhone’um gibi pek çok cihazda bile Apple ekosistemine açılan bir ağ geçidi olması gibi!

Smart Contract düzeyinde Snowflake’in yaptığı şeylerin düzenlenmiş bir listesi:

  1. Bir bireyin çekirdek kimliğinin dijital bir görüntüsü olarak algılanabilecek, bir birey için benzersiz, değiştirilemeyen, devredilemeyen bir Snowflake Kimlik Token’ı yaratır.
  2. Bir bireyin birden fazla Ethereum adresinin sahipliğini kanıtlamasına izin verir. Birden fazla cihazda dApps ile aktif olarak etkileşime giren çoğu kişi, birçok cüzdanı koruma mücadelelerine aşinadır. Snowflake birden fazla cüzdanı birbirine bağlar ve bunlarla ilişkili veriler için bir sorgu noktası oluşturur. Bu durum, seed words’leri [tohum kelimeler] cihazlara aktarma ihtiyacını azaltır, kimlik avı veya kötü amaçlı yazılımlarla ilişkili riskleri azaltır.
  3. Bir bireyin, birden çok hesaptan erişilebilen tek bir Hydro bakiyesini sürdürmesine/korumasına izin verir. Bu, bir kullanıcı Hydro ile bir hizmet için ödeme yaparken, her bir cüzdanında uygun bakiyeyi korumakla ilgili endişe duymaya gerek olmadığı anlamına gelir, daha doğrusu sadece kendi Snowflake’i içinde, seed words’leri [tohum kelimeler] cihazlar arasında aktarma ihtiyacını daha da azaltır.
  4. Bir kişinin Snowflake Kimlik Token’ının sorgu yapısından, veri eklemesine veya kaldırmasına izin verir. Bu özellik, bir kullanıcının verilerinin Çözülmesi adını verdiğimiz bir Akıllı Sözleşme’de kodlanmış her türlü veri ile ilgilidir. Bir kullanıcının Snowflake’ine veri eklediğini söylediğimiz zaman, Snowflake’den bir Resolver’e veya talep [claim] edilen adreslerinden birine işaret ettiklerini kastediyoruz. Bu Çözücü, kullanıcının adresiyle ilişkili her tür veri yapısını içerebilir: merkle hashları, zincir dışı veri kümeleri için işaretçiler, düz metin herkese açık veriler, güvenli çok aboneli hesaplama sağlayan şifrelenmiş veriler, sıfır bilgi kanıtlarının arkasına gizlenmiş veriler, vb.
  5. Bir işletme gibi bir varlığın, bir kullanıcının Snowflake’ini sorgulamak için, standart, konsolide, programatik bir şekilde ilişkili herhangi bir veriden anlayış/kavrama [insight] elde etmesini sağlar. Bu, onların iş mantığını bu sorguların sonuçlarına göre tasarlamalarını sağlar.
  6. API’ların, kullanıcıların zincirdeki verilerini sorgulamalarına olanak tanır ve böylece işletmelerin iş mantığını, blockchain geliştiricilerin işe alınmasına gerek kalmadan, değişmez, zincir üzerindeki veri yapılarından sürdürebilmelerini sağlar.
  7. DApp geliştiricilerinin, aylık abonelik ücretleri gibi programlı faturalandırma modellerini kurmak için Hydro’daki dApp’lerini kolayca paraya dönüştürmelerine izin verir.
  8. Kullanıcıların, tek bir kontrol panelinden tüm bu dApp’lere aktarım ödenekleri ayarlayarak dApp’lerin abonelik ücretlerini ödeyerek kolayca etkileşimde bulunmalarını sağlar.
  9. Kullanıcıların kendi Snowflake’leri ile ilişkili verileri tek bir kontrol panelinden çözücüler ekleyip çıkararak kolayca yönetmelerini sağlar.
  10. Bir kullanıcının tek bir kontrol panelinden etkileşime girdiği deploy edilmiş her bir Çözücü için basit bir dApp açıklaması görüntüler.
  11. DApp’lerin kullanıcılarını, uzun bir genel anahtar yerine HydroID olarak adlandırılan basit, kısa bir tanımlayıcı yoluyla tanımlamasına ve bunlarla etkileşime girmesine izin verir.
  12. Kullanıcıların uzun kamusal anahtarlar yerine Snowflake’lerin kısa HydroID’lerinden yararlanan varlıklara geçmesine izin verir.

Sonuç olarak Snowflake, Hydro ekosistem içindeki dApp’lere değer katarken, tüm çekirdek işlevlerini korumasını sağlar. Kullanıcıların, blockchain teknolojisinin yaygın olarak benimsenmesi için önemli olan dApp’ler ile etkileşimde bulunmasını kolaylaştırır. Son olarak, işletmeler, hükumetler ve diğer kurumların -kullanıcılarla platformlar arasında gereksiz bilgi toplamaya ve iletmeye zorlamadan- kullanıcılarla programlanabilir bir biçimde etkileşimde bulunmasını kolaylaştırır.

Her zaman olduğu gibi, Discord aracılığıyla bana(Anurag’a) ya da ekibimizdeki herhangi birisine herhangi bir soruyu sormaktan çekinmeyin. Eğer MetaMask’a yabancı değilseniz lütfen sistemi test edin ve lütfen geri bildirim anketini doldurun!

--

--