Merkezi olmayan scooter kiralama için yazılım geliştirin. Kolay olacağını kim söyledi?

Bu yazımda akıllı sözleşmeler üzerine merkezi olmayan scooter kiralamayı nasıl oluşturmaya çalıştığımızdan ve neden hala merkezi bir hizmete ihtiyaç duyduğumuzdan bahsedeceğim.

Merkezi olmayan scooter kiralama için yazılım geliştirin. Kolay olacağını kim söyledi?

Her şey nasıl başladı

Kasım 2018'de Nesnelerin İnterneti ve Blockchain'e adanmış bir hackathon'a katıldık. Ekibimiz bu hackathonun sponsorundan bir scooter aldığımız için fikir olarak scooter paylaşımını seçti. Prototip, NFC aracılığıyla bir scooter başlatmanıza olanak tanıyan bir mobil uygulamaya benziyordu. Pazarlama açısından bakıldığında bu fikir, akıllı sözleşmelere dayalı olarak herkesin kiracı veya ev sahibi olabileceği açık bir ekosisteme sahip "parlak bir gelecek" hikayesiyle destekleniyordu.

Paydaşlarımız bu fikri çok beğendiler ve sergilerde sergilenmek üzere prototip haline getirmeye karar verdiler. 2019 yılında Mobile World Congress ve Bosch Connected World'de yapılan birçok başarılı gösterinin ardından scooter kiralamanın gerçek kullanıcılarla, yani Deutsche Telekom çalışanlarıyla test edilmesine karar verildi. Böylece tam teşekküllü bir MVP geliştirmeye başladık.

Koltuk değnekleri üzerinde Blockchain

Sahnede gösterilecek bir proje ile gerçek insanlar tarafından kullanılacak bir proje arasındaki farkın ne olduğunu açıklamaya değer olduğunu düşünmüyorum. Altı ay içinde kaba prototipi pilota uygun bir şeye dönüştürmek zorunda kaldık. Ve sonra “acı”nın ne demek olduğunu anladık.

Sistemimizi merkezi olmayan ve açık hale getirmek için Ethereum akıllı sözleşmelerini kullanmaya karar verdik. Popülerliği ve sunucusuz bir uygulama oluşturma yeteneği nedeniyle seçim, merkezi olmayan çevrimiçi hizmetlerden oluşan bu platformda kaldı. Projemizi şu şekilde hayata geçirmeyi planladık.

Merkezi olmayan scooter kiralama için yazılım geliştirin. Kolay olacağını kim söyledi?

Ancak ne yazık ki akıllı sözleşme, işlem sırasında sanal makine tarafından yürütülen bir koddur ve tam teşekküllü bir sunucunun yerini tutamaz. Örneğin bir akıllı sözleşme, bekleyen veya planlanmış eylemleri gerçekleştiremez. Bu durum bizim projemizde çoğu modern araç paylaşım hizmetinin yaptığı gibi dakika başına kiralama hizmetini uygulamamıza izin vermedi. Bu nedenle, işlemi tamamladıktan sonra yeterli parası olduğundan emin olmadan kullanıcıdan kripto para birimini borçlandırdık. Bu yaklaşım yalnızca dahili bir pilot uygulama için kabul edilebilir ve elbette tam teşekküllü bir üretim projesi tasarlanırken sorunlara neden olur.

Yukarıdakilerin tümüne, platformun kendisinin nemi de eklenmiştir. Örneğin ERC-20 tokenlarından farklı bir mantıkla akıllı sözleşme yazarsanız hata işleme sorunlarıyla karşılaşırsınız. Genellikle giriş yanlışsa veya yöntemlerimiz düzgün çalışmıyorsa yanıt olarak bir hata kodu alırız. Ethereum söz konusu olduğunda bu işlevi gerçekleştirmek için harcanan gaz miktarından başka bir şey elde edemeyiz. Gas, işlemler ve hesaplamalar için ödenmesi gereken bir para birimidir: Kodunuzda ne kadar çok işlem yapılırsa o kadar çok ödersiniz. Kodun neden çalışmadığını anlamak için önce tüm olası hataları simüle ederek kodu test edin ve harcanan gazı bir hata kodu olarak kodlayın. Ancak kodunuzu değiştirirseniz bu hata işleme bozulur.

Ayrıca bulutta bir yerde saklanan bir anahtarı kullanmadan, blockchain ile dürüst bir şekilde çalışan bir mobil uygulama oluşturmak neredeyse imkansızdır. Dürüst cüzdanlar mevcut olmasına rağmen harici işlemleri imzalamak için arayüz sağlamazlar. Bu, yerleşik bir kripto cüzdanı olmadığı sürece yerel bir uygulama görmeyeceğiniz anlamına gelir; kullanıcılar buna çok az güvenir (ben buna güvenmem). Sonuç olarak burada da işimizi kesmek zorunda kaldık. Akıllı sözleşmeler özel Ethereum ağına teslim edildi ve cüzdan bulut tabanlıydı. Ancak buna rağmen kullanıcılarımız, kiralama oturumu başına birkaç kez işlemler için uzun süre beklemek şeklinde merkezi olmayan hizmetlerin tüm "zevklerini" deneyimlediler.

Bütün bunlar bizi bu mimariye götürüyor. Katılıyorum, planladığımızdan çok farklı.

Merkezi olmayan scooter kiralama için yazılım geliştirin. Kolay olacağını kim söyledi?

Delikteki As: Kendi Kendine Egemen Kimlik

Merkezi olmayan bir kimlik olmadan tamamen merkezi olmayan bir sistem kuramazsınız. Bu kısımdan Kendi Kendini Egemen Kimlik (SGK) sorumludur, bunun özü, merkezi kimlik sağlayıcıyı (IDP) atmanız ve bununla ilgili tüm verileri ve sorumluluğu insanlara dağıtmanızdır. Artık kullanıcı hangi verilere ihtiyacı olduğuna ve bunları kiminle paylaşacağına karar veriyor. Tüm bu bilgiler kullanıcının cihazında bulunur. Ancak takas için kriptografik kanıtların saklanacağı merkezi olmayan bir sisteme ihtiyacımız olacak. SSI konseptinin tüm modern uygulamaları, depolama olarak blockchain'i kullanıyor.

"Bunun deliğe giren asla ne ilgisi var?" - sen sor. Berlin ve Bonn'da kendi çalışanlarımıza yönelik şirket içi test hizmetini başlattık ve Alman sendikaları nedeniyle zorluklarla karşılaştık. Almanya'da şirketlerin çalışanların hareketlerini izlemesi yasak ve sendikalar bunu kontrol ediyor. Bu kısıtlamalar, kullanıcı kimlik verilerinin merkezi olarak depolanmasına son veriyor, çünkü bu durumda çalışanların yerini bileceğiz. Aynı zamanda scooterların çalınma ihtimali nedeniyle kontrol etmeden de yapamadık. Ancak Self-Sovereign Identity sayesinde kullanıcılarımız sistemi anonim olarak kullandı ve scooter, kiralamaya başlamadan önce ehliyetlerini kendisi kontrol etti. Sonuç olarak, anonim kullanıcı ölçümlerini sakladık; elimizde herhangi bir belge veya kişisel veri yoktu: bunların hepsi sürücülerin cihazlarında bulunuyordu. Böylece SGK sayesinde projemizdeki sorunun çözümü daha ortaya çıkmadan hazır oldu.

Cihaz bana sorun çıkardı

Kriptografide uzmanlık ve çok fazla zaman gerektirdiğinden, Kendi Kendine Egemen Kimlik'i kendimiz uygulamadık. Bunun yerine iş ortaklarımızın Jolocom ürününden faydalanarak onların mobil cüzdan ve hizmetlerini platformumuza entegre ettik. Ne yazık ki bu ürünün önemli bir dezavantajı var: Ana geliştirme dili Node.js'dir.

Bu teknoloji yığını, bir scooterın içine yerleştirilmiş donanım seçimimizi büyük ölçüde sınırlıyor. Neyse ki projenin en başında Raspberry Pi Zero'yu seçtik ve tam donanımlı bir mikro bilgisayarın tüm avantajlarından yararlandık. Bu, büyük Node.js'leri scooter üzerinde çalıştırmamıza olanak sağladı. Ayrıca hazır araçları kullanarak VPN üzerinden izleme ve uzaktan erişim aldık.

Sonuç olarak

Tüm “acılara” ve sorunlara rağmen proje hayata geçirildi. Her şey planladığımız gibi gitmedi ama scooter kiralayarak binmek gerçekten mümkündü.

Evet, mimariyi tasarlarken hizmeti tamamen merkezi olmayan hale getirmemize izin vermeyen bir takım hatalar yaptık, ancak bu hatalar olmasaydı bile sunucusuz bir platform oluşturmamız pek mümkün olmazdı. Başka bir kripto piramidi yazmak başka bir şey, hataları ele almanız, sınır vakalarını çözmeniz ve bekleyen görevleri yerine getirmeniz gereken tam teşekküllü bir hizmet yazmak başka bir şey. Umalım ki son dönemde ortaya çıkan yeni platformlar daha esnek ve işlevsel olsun.

Kaynak: habr.com

Yorum ekle