Razviti softver za decentralizirano iznajmljivanje skutera. Ko je rekao da će biti lako?

U ovom članku ću govoriti o tome kako smo pokušali izgraditi decentralizirano iznajmljivanje skutera na pametnim ugovorima i zašto nam je i dalje potrebna centralizirana usluga.

Razviti softver za decentralizirano iznajmljivanje skutera. Ko je rekao da će biti lako?

Kako je sve počelo

U novembru 2018. godine učestvovali smo na hakatonu posvećenom Internetu stvari i blockchainu. Naš tim je odabrao dijeljenje skutera kao ideju jer smo imali skuter od sponzora ovog hakatona. Prototip je izgledao kao mobilna aplikacija koja vam omogućava da pokrenete skuter putem NFC-a. Sa marketinške tačke gledišta, ideja je potkrijepljena pričom o “svjetloj budućnosti” s otvorenim ekosistemom u kojem svako može postati zakupac ili stanodavac, a sve na osnovu pametnih ugovora.

Ova ideja se jako svidjela našim dionicima, te su je odlučili 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 da se najam skutera testira sa stvarnim korisnicima, zaposlenima Deutsche Telekoma. Tako smo počeli da razvijamo punopravni MVP.

Blockchain na štakama

Mislim da nije vredno objašnjavati koja je razlika između projekta koji se prikazuje na sceni i onog koji će koristiti stvarni ljudi. Za šest mjeseci morali smo sirovi prototip pretvoriti u nešto prikladno za pilota. A onda smo shvatili šta znači „bol“.

Kako bismo naš sistem učinili decentraliziranim i otvorenim, odlučili smo koristiti Ethereum pametne ugovore. Izbor je pao na ovu platformu decentralizovanih onlajn usluga zbog njene popularnosti i mogućnosti izrade aplikacije bez servera. Planirali smo da realizujemo naš projekat na sledeći način.

Razviti softver za decentralizirano iznajmljivanje skutera. Ko je rekao da će biti lako?

Ali, nažalost, pametni ugovor je kod koji izvršava virtualna mašina u vrijeme transakcije i ne može zamijeniti punopravni server. Na primjer, pametni ugovor ne može izvršiti radnje na čekanju ili zakazane akcije. U našem projektu to nam nije omogućilo da implementiramo uslugu iznajmljivanja po minuti, kao što to čini većina modernih servisa za dijeljenje automobila. Stoga smo korisniku zadužili kriptovalutu nakon završetka transakcije, a da nismo bili sigurni da ima dovoljno novca. Ovaj pristup je prihvatljiv samo za interni pilot i, naravno, dodaje probleme prilikom dizajniranja punopravnog proizvodnog projekta.

Svemu navedenom dodaje se i vlaga same platforme. Na primjer, ako napišete pametni ugovor s logikom različitom od ERC-20 tokena, naići ćete na probleme s rukovanjem greškama. Obično, ako je unos netačan ili naše metode ne rade ispravno, kao odgovor dobijamo kod greške. U slučaju Ethereuma, ne možemo dobiti ništa osim količine gasa potrošenog za obavljanje ove funkcije. Plin je valuta koja se mora platiti za transakcije i obračune: što više operacija u vašem kodu, više ćete platiti. Dakle, da biste razumjeli zašto kod ne radi, prvo ga testirate simulacijom svih mogućih grešaka i tvrdim kodiranjem potrošenog plina kao kod greške. Ali ako promijenite svoj kod, ovo rukovanje greškama će se prekinuti.

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

Sve nas to dovodi do ove arhitekture. Slažem se, veoma se razlikuje od onoga što smo planirali.

Razviti softver za decentralizirano iznajmljivanje skutera. Ko je rekao da će biti lako?

As u rupi: Samosuvereni identitet

Ne možete izgraditi potpuno decentralizovan sistem bez decentralizovanog identiteta. Za ovaj dio je odgovoran Self-Sovereign Identity (SSI), čija je suština da izbacite centraliziranog provajdera identiteta (IDP) i sve podatke i odgovornost za njih distribuirate ljudima. Sada korisnik odlučuje koji su mu podaci potrebni i s kim će ih podijeliti. Sve ove informacije nalaze se na uređaju korisnika. Ali za razmjenu će nam trebati decentralizirani sistem za pohranjivanje kriptografskih dokaza. Sve moderne implementacije SSI koncepta koriste blockchain kao skladište.

“Kakve to veze ima sa asom u rupi?” - pitate. Pokrenuli smo servis za interno testiranje vlastitih zaposlenika u Berlinu i Bonu, a naišli smo na poteškoće u vidu njemačkih sindikata. U Njemačkoj je kompanijama zabranjeno praćenje kretanja zaposlenih, a to kontrolišu sindikati. Ova ograničenja stavljaju tačku na centralizirano pohranjivanje podataka o identitetu korisnika, jer bi u tom slučaju znali lokaciju zaposlenih. Istovremeno, nismo mogli a da ih ne provjerimo zbog mogućnosti krađe skutera. Ali zahvaljujući Self-Sovereign Identity, naši korisnici su anonimno koristili sistem, a sam skuter je provjerio njihovu vozačku dozvolu prije početka iznajmljivanja. Kao rezultat toga, pohranili smo anonimne korisničke metrike; nismo imali nikakve dokumente ili lične 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 stvarao probleme

Nismo sami implementirali Self-Sovereign Identity, jer zahtijeva stručnost u kriptografiji i puno vremena. Umjesto toga, iskoristili smo prednosti Jolocomovog proizvoda naših partnera 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.

Ovaj tehnološki niz uvelike ograničava naš izbor hardvera ugrađenog u skuter. Na sreću, na samom početku projekta odabrali smo Raspberry Pi Zero i iskoristili sve prednosti punopravnog mikroračunara. Ovo nam je omogućilo da pokrenemo glomazan Node.js na skuteru. Osim toga, dobili smo nadzor i daljinski pristup putem VPN-a koristeći gotove alate.

U zaključku

Uprkos svim „bolima“ i problemima, projekat je pokrenut. Nije sve funkcionisalo kako smo planirali, ali je zaista bilo moguće voziti skutere iznajmljivanjem.

Da, napravili smo brojne greške prilikom dizajniranja arhitekture koja nam nije omogućila da servis bude potpuno decentralizovan, ali čak i bez ovih grešaka teško da bismo mogli da kreiramo platformu bez servera. Jedno je napisati još jednu kripto-piramidu, a sasvim drugo napisati kompletan servis u kojem trebate rješavati greške, rješavati granične slučajeve i obavljati zadatke na čekanju. Nadajmo se da će nove platforme koje su se nedavno pojavile biti fleksibilnije i funkcionalnije.

izvor: www.habr.com

Dodajte komentar