Razviti softver za decentralizirani najam skutera. Tko je rekao da će biti lako?

U ovom ću članku govoriti o tome kako smo pokušali izgraditi decentralizirani najam skutera na pametnim ugovorima i zašto nam je još uvijek trebala centralizirana usluga.

Razviti softver za decentralizirani najam skutera. Tko je rekao da će biti lako?

Kako je sve počelo

U studenom 2018. sudjelovali smo na hackathonu posvećenom Internetu stvari i blockchainu. Naš tim je odabrao dijeljenje skutera kao ideju jer smo imali skuter od sponzora ovog hackathona. Prototip je izgledao kao mobilna aplikacija koja omogućuje pokretanje skutera putem NFC-a. S marketinške strane, ideja je potkrijepljena pričom o “svijetloj budućnosti” s otvorenim ekosustavom u kojem svatko može postati podstanar ili stanodavac, a sve na temelju pametnih ugovora.

Našim se dionicima jako svidjela ova ideja i odlučili su je pretvoriti u prototip za izlaganje na izložbama. Nakon nekoliko uspješnih demonstracija na Mobile World Congressu i Bosch Connected Worldu 2019. godine, odlučeno je testirati najam skutera sa stvarnim korisnicima, zaposlenicima Deutsche Telekoma. Tako smo počeli razvijati punopravni MVP.

Blockchain na štakama

Mislim da ne vrijedi objašnjavati koja je razlika između projekta koji se prikazuje na pozornici i onoga koji će koristiti stvarni ljudi. U šest mjeseci morali smo sirovi prototip pretvoriti u nešto prikladno za pilota. I tada smo shvatili što znači "bol".

Kako bismo naš sustav učinili decentraliziranim i otvorenim, odlučili smo koristiti Ethereum pametne ugovore. Izbor je pao na ovu platformu decentraliziranih online usluga zbog njene popularnosti i mogućnosti izrade aplikacije bez poslužitelja. Naš smo projekt planirali realizirati na sljedeći način.

Razviti softver za decentralizirani najam skutera. Tko je rekao da će biti lako?

Ali, nažalost, pametni ugovor je kod koji izvršava virtualni stroj u trenutku transakcije i ne može zamijeniti punopravni poslužitelj. Na primjer, pametni ugovor ne može izvršiti radnje na čekanju ili planirane radnje. U našem projektu to nam nije omogućilo implementaciju usluge najma po minuti, kao što to čini većina modernih usluga dijeljenja automobila. Stoga smo korisnika nakon obavljene transakcije teretili za kriptovalutu, a da nismo bili sigurni da ima dovoljno novca. Ovaj pristup je prihvatljiv samo za interni pilot i, naravno, dodaje probleme pri dizajniranju potpunog proizvodnog projekta.

Svemu navedenom dodaje se i vlažnost same platforme. Na primjer, ako napišete pametni ugovor s logikom koja se razlikuje od ERC-20 tokena, naići ćete na probleme s rukovanjem pogreškama. Obično, ako je unos netočan ili naše metode ne rade ispravno, kao odgovor dobivamo kod pogreške. U slučaju Ethereuma, ne možemo dobiti ništa osim količine plina potrošenog za obavljanje ove funkcije. Plin je valuta koja se mora platiti za transakcije i izračune: što više operacija u vašem kodu, to ćete više platiti. Dakle, da biste razumjeli zašto kôd ne radi, prvo ga testirate simuliranjem svih mogućih pogrešaka i kodirate potrošeni plin kao kod pogreške. Ali ako promijenite svoj kod, ovo rukovanje pogreškom će se prekinuti.

Osim toga, gotovo je nemoguće izraditi mobilnu aplikaciju koja pošteno radi s blockchainom, bez korištenja ključa pohranjenog negdje u oblaku. Iako postoje pošteni novčanici, oni ne pružaju sučelja za potpisivanje vanjskih transakcija. To znači da nećete vidjeti izvornu aplikaciju osim ako ima ugrađeni kripto novčanik, u koji će korisnici imati malo povjerenja (ja mu ne bih vjerovao). Kao rezultat toga, i ovdje smo morali rezati kut. Pametni ugovori isporučeni su privatnoj mreži Ethereum, a novčanik je bio temeljen na oblaku. No, unatoč tome, naši su korisnici iskusili sve „slasti“ decentraliziranih usluga u obliku dugog čekanja na transakcije nekoliko puta po sesiji najma.

Sve nas to dovodi do ove arhitekture. Slažem se, jako je drugačije od onoga što smo planirali.

Razviti softver za decentralizirani najam skutera. Tko je rekao da će biti lako?

As u rupi: Samostalni suvereni identitet

Ne možete izgraditi potpuno decentraliziran sustav bez decentraliziranog identiteta. Za ovaj dio zadužen je Self-Sovereign Identity (SSI) čija je bit da izbacite centralized identity provider (IDP) i sve podatke i odgovornost za njih distribuirate ljudima. Sada korisnik odlučuje koje podatke treba i s kim će ih dijeliti. Sve ove informacije nalaze se na uređaju korisnika. Ali za razmjenu trebat će nam decentralizirani sustav za pohranjivanje kriptografskih dokaza. Sve moderne implementacije SSI koncepta koriste blockchain kao pohranu.

"Kakve to veze ima s asom na rupi?" - pitaš. Pokrenuli smo uslugu internog testiranja na vlastitim zaposlenicima u Berlinu i Bonnu, a naišli smo na poteškoće u vidu njemačkih sindikata. U Njemačkoj je tvrtkama zabranjeno pratiti kretanje zaposlenika, a sindikati to kontroliraju. Ova ograničenja stavljaju točku na centraliziranu pohranu podataka o identitetu korisnika, jer bismo u tom slučaju znali gdje se nalaze zaposlenici. Ujedno ih nismo mogli ne provjeriti zbog mogućnosti krađe skutera. Ali zahvaljujući Self-Sovereign Identity, naši su korisnici koristili sustav anonimno, a sam skuter je provjerio njihovu vozačku dozvolu prije početka najma. Kao rezultat toga, pohranili smo anonimne korisničke metrike; nismo imali nikakve dokumente ili osobne podatke: svi su bili sadržani na uređajima samih vozača. Tako je zahvaljujući SSI-ju rješenje problema u našem projektu bilo spremno i prije nego što se pojavilo.

Uređaj mi je zadavao probleme

Nismo sami implementirali Self-Sovereign Identity jer zahtijeva stručnost u kriptografiji i puno vremena. Umjesto toga, iskoristili smo proizvod naših partnera Jolocom i integrirali njihov mobilni novčanik i usluge u našu platformu. Nažalost, ovaj proizvod ima jedan značajan nedostatak: glavni razvojni jezik je Node.js.

Ova tehnologija uvelike ograničava naš izbor hardvera ugrađenog u skuter. Srećom, na samom početku projekta odabrali smo Raspberry Pi Zero te smo iskoristili sve prednosti punopravnog mikroračunala. To nam je omogućilo pokretanje glomaznog Node.js na skuteru. Osim toga, dobili smo nadzor i daljinski pristup putem VPN-a pomoću gotovih alata.

U zaključku

Unatoč svim “mukama” i problemima, projekt je pokrenut. Nije sve išlo kako smo planirali, ali stvarno je bilo moguće voziti skutere uz iznajmljivanje istih.

Da, napravili smo niz grešaka prilikom projektiranja arhitekture koje nam nisu dopuštale da uslugu učinimo potpuno decentraliziranom, ali čak i bez tih grešaka teško da bismo uspjeli stvoriti platformu bez servera. Jedna je stvar napisati još jednu kripto-piramidu, a nešto sasvim drugo napisati potpunu uslugu u kojoj morate rješavati pogreške, rješavati granične slučajeve i izvršavati zadatke na čekanju. Nadajmo se da će nove platforme koje su se nedavno pojavile biti fleksibilnije i funkcionalnije.

Izvor: www.habr.com

Dodajte komentar