Vyvíjajte softvér pre decentralizovaný prenájom skútrov. Kto povedal, že to bude ľahké?

V tomto článku budem hovoriť o tom, ako sme sa snažili vybudovať decentralizovaný prenájom skútrov na smart kontraktoch a prečo sme stále potrebovali centralizovanú službu.

Vyvíjajte softvér pre decentralizovaný prenájom skútrov. Kto povedal, že to bude ľahké?

Ako to všetko začalo

V novembri 2018 sme sa zúčastnili hackathonu venovaného internetu vecí a blockchainu. Náš tím si ako nápad zvolil zdieľanie skútrov, keďže sme mali skúter od sponzora tohto hackathonu. Prototyp vyzeral ako mobilná aplikácia, ktorá umožňuje naštartovať kolobežku cez NFC. Z marketingového hľadiska bol nápad podporený príbehom o „svetlej budúcnosti“ s otvoreným ekosystémom, kde sa nájomcom alebo prenajímateľom môže stať každý, a to všetko na základe smart kontraktov.

Našim zainteresovaným stranám sa tento nápad naozaj páčil a rozhodli sa ho premeniť na prototyp na vystavenie na výstavách. Po niekoľkých úspešných demonštráciách na Mobile World Congress a Bosch Connected World v roku 2019 bolo rozhodnuté otestovať požičovňu skútrov s reálnymi užívateľmi, zamestnancami Deutsche Telekom. Začali sme teda vyvíjať plnohodnotné MVP.

Blockchain o barlách

Myslím si, že nemá cenu vysvetľovať, aký je rozdiel medzi projektom, ktorý sa má ukázať na pódiu, a projektom, ktorý budú používať skutoční ľudia. Za šesť mesiacov sme museli zo surového prototypu urobiť niečo vhodné pre pilota. A potom sme pochopili, čo znamená „bolesť“.

Aby bol náš systém decentralizovaný a otvorený, rozhodli sme sa použiť Ethereum smart kontrakty. Voľba padla na túto platformu decentralizovaných online služieb kvôli jej popularite a schopnosti vybudovať aplikáciu bez servera. Náš projekt sme plánovali realizovať nasledovne.

Vyvíjajte softvér pre decentralizovaný prenájom skútrov. Kto povedal, že to bude ľahké?

Ale, bohužiaľ, inteligentná zmluva je kód vykonávaný virtuálnym strojom v čase transakcie a nemôže nahradiť plnohodnotný server. Inteligentná zmluva napríklad nemôže vykonávať čakajúce alebo naplánované akcie. V našom projekte nám to neumožnilo implementovať službu prenájmu za minútu, ako to robí väčšina moderných služieb zdieľania áut. Preto sme po dokončení transakcie odpísali od používateľa kryptomenu bez toho, aby sme si boli istí, že má dostatok peňazí. Tento prístup je prijateľný len pre interný pilot a samozrejme pridáva problémy pri navrhovaní plnohodnotného výrobného projektu.

K všetkému vyššie uvedenému sa pridáva vlhkosť samotnej plošiny. Napríklad, ak napíšete inteligentnú zmluvu s logikou odlišnou od tokenov ERC-20, narazíte na problémy so spracovaním chýb. Zvyčajne, ak je vstup nesprávny alebo naše metódy nefungujú správne, dostaneme ako odpoveď chybový kód. V prípade Etherea nemôžeme získať nič iné ako množstvo plynu vynaloženého na vykonávanie tejto funkcie. Plyn je mena, ktorá sa musí platiť za transakcie a výpočty: čím viac operácií vo vašom kóde, tým viac zaplatíte. Aby ste pochopili, prečo kód nefunguje, najprv ho otestujte simuláciou všetkých možných chýb a napevno zakódujte spotrebovaný plyn ako chybový kód. Ak však zmeníte kód, toto spracovanie chýb sa preruší.

Navyše je takmer nemožné vytvoriť mobilnú aplikáciu, ktorá by s blockchainom pracovala poctivo, bez použitia kľúča uloženého niekde v cloude. Hoci poctivé peňaženky existujú, neposkytujú rozhrania na podpisovanie externých transakcií. To znamená, že natívnu aplikáciu neuvidíte, pokiaľ nemá vstavanú kryptopeňaženku, ktorej budú používatelia málo dôverovať (neveril by som jej). Tým pádom sme tu museli aj utnúť. Inteligentné zmluvy boli dodané do súkromnej siete Ethereum a peňaženka bola založená na cloude. Napriek tomu však naši používatelia zažili všetky „pôžitky“ decentralizovaných služieb v podobe dlhého čakania na transakcie niekoľkokrát za prenájmu.

To všetko nás vedie k tejto architektúre. Súhlasíte, je to veľmi odlišné od toho, čo sme plánovali.

Vyvíjajte softvér pre decentralizovaný prenájom skútrov. Kto povedal, že to bude ľahké?

Eso v diere: Self-Sovereign Identity

Nemôžete vybudovať úplne decentralizovaný systém bez decentralizovanej identity. Za túto časť je zodpovedná Self-Sovereign Identity (SSI), ktorej podstatou je, že vyhodíte centralizovaného poskytovateľa identity (IDP) a všetky dáta a zodpovednosť za ne rozdelíte medzi ľudí. Teraz sa používateľ rozhodne, aké údaje potrebuje a s kým ich bude zdieľať. Všetky tieto informácie sa nachádzajú na zariadení používateľa. Na výmenu však budeme potrebovať decentralizovaný systém na uchovávanie kryptografických dôkazov. Všetky moderné implementácie konceptu SSI využívajú blockchain ako úložisko.

"Čo to má spoločné s esom v jamke?" - pýtaš sa. Spustili sme službu na interné testovanie na vlastných zamestnancoch v Berlíne a Bonne a narazili sme na ťažkosti v podobe nemeckých odborov. V Nemecku majú firmy zakázané sledovať pohyb zamestnancov a odbory to kontrolujú. Tieto obmedzenia ukončili centralizované ukladanie údajov o identite používateľov, keďže v tomto prípade by sme poznali polohu zamestnancov. Zároveň sme si ich nemohli pomôcť a neskontrolovali sme ich kvôli možnosti odcudzenia skútrov. Ale vďaka Self-Sovereign Identity naši používatelia používali systém anonymne a samotný skúter si pred začatím požičovne skontroloval ich vodičský preukaz. V dôsledku toho sme uložili anonymné používateľské metriky; nemali sme žiadne dokumenty ani osobné údaje: všetky boli obsiahnuté na zariadeniach samotných vodičov. Vďaka SSI bolo teda riešenie problému v našom projekte pripravené ešte skôr, ako sa objavilo.

Zariadenie mi spôsobilo problémy

Samostatnú identitu sme neimplementovali sami, pretože si vyžaduje odbornosť v kryptografii a veľa času. Namiesto toho sme využili produkt našich partnerov Jolocom a integrovali ich mobilnú peňaženku a služby do našej platformy. Bohužiaľ, tento produkt má jednu významnú nevýhodu: hlavným vývojovým jazykom je Node.js.

Táto technológia značne obmedzuje náš výber hardvéru zabudovaného do skútra. Našťastie sme hneď na začiatku projektu zvolili Raspberry Pi Zero a využili sme všetky výhody plnohodnotného mikropočítača. To nám umožnilo spustiť objemný Node.js na kolobežke. Okrem toho sme dostali monitoring a vzdialený prístup cez VPN pomocou hotových nástrojov.

na záver

Napriek všetkým „bolestiam“ a problémom sa projekt rozbehol. Nie všetko fungovalo tak, ako sme plánovali, ale jazdiť na kolobežkách sa naozaj dalo tak, že si ich požičali.

Áno, pri navrhovaní architektúry sme urobili množstvo chýb, ktoré nám neumožnili úplne decentralizovať službu, no aj bez týchto chýb by sme len ťažko dokázali vytvoriť bezserverovú platformu. Jedna vec je napísať ďalšiu krypto-pyramídu a úplne iná je napísať plnohodnotnú službu, v ktorej musíte riešiť chyby, riešiť hraničné prípady a vykonávať čakajúce úlohy. Dúfajme, že nové platformy, ktoré sa nedávno objavili, budú flexibilnejšie a funkčnejšie.

Zdroj: hab.com

Pridať komentár