Vyvinúť softvér na decentralizovaný prenájom skútrov. Kto povedal, že to bude jednoduché?

V tomto článku sa podelím o to, ako sme sa snažili vybudovať decentralizovaný prenájom skútrov na smart kontraktoch a prečo sme aj tak potrebovali centralizovanú službu.

Vyvinúť softvér na decentralizovaný prenájom skútrov. Kto povedal, že to bude jednoduché?

Ako to všetko začalo

V novembri 2018 sme sa zúčastnili hackathonu venovaného internetu vecí a blockchainu. Naša tím si vybral nápad na zdieľanie skútrov, pretože sme mali skúter od sponzora tohto hackathonu. Prototyp vyzeral ako mobilná aplikácia, ktorá umožňovala spustenie skútra cez NFC. Z hľadiska marketingu bola myšlienka posilnená rozprávaním o "jasnej budúcnosti" s otvorenou ekosystémou, kde sa každý môže stať nájomcom alebo prenajímateľom, a to všetko na báze inteligentných kontraktov.

Tento nápad sa veľmi páčil našim zainteresovaným stranám a rozhodli sa ho premeniť na prototyp na prezentáciu na výstavách. Po niekoľkých úspešných prezentáciách na Mobile World Congress a Bosch Connected World v roku 2019 sme sa rozhodli otestovať prenájom skútrov na skutočných používateľoch, zamestnancoch Deutsche Telekom. Tak sme sa pustili do vývoja plnohodnotného MVP.

Blockchain na barlách

Myslím si, že niet potrebné vysvetľovať, aký je rozdiel medzi projektom na prezentáciu na pódiu a tým, ktorým budú skutoční ľudia používať. Po šiestich mesiacoch sme museli premeniť surový prototyp na niečo vhodné na pilotný projekt. A vtedy sme si uvedomili, čo znamená "bolesť".

Aby sme urobili náš systém decentralizovaný a otvorený, rozhodli sme sa využiť smart kontrakty Ethereum. Výber padol na túto platformu decentralizovaných online služieb kvôli jej popularite a možnosti vytvoriť serverless aplikáciu. Plánovali sme realizovať náš projekt nasledovne.

Vyvinúť softvér na decentralizovaný prenájom skútrov. Kto povedal, že to bude jednoduché?

Ale, žiaľ, smart kontrakt je kód, ktorý sa vykonáva virtuálnou strojom v okamihu transakcie, a nemôže nahradiť plnohodnotný serverNapríklad, smart kontrakt nemôže vykonávať odložené alebo naplánované akcie. V našom projekte to zabránilo realizácii minutového servisu prenájmu, ako to robí väčšina moderných carsharingov. Preto sme od užívateľa strhávali kryptomenu po dokončení operácie bez toho, aby sme mali istotu, že má dostatočné množstvo financií. Tento prístup je prijateľný iba na internom pilote a samozrejme pridáva problémy pri navrhovaní plnohodnotného produkčného projektu.

K všetkému uvedenému sa pridáva aj vlhkosť samotnej platformy. Napríklad, ak napíšete smart kontrakt s logikou odlišnou od tokenov ERC-20, narazíte na problém spracovania chýb. Zvyčajne pri nesprávnom vstupe alebo nesprávnej funkcii našich metód dostaneme ako odpoveď chybový kód. V prípade Ethereum nemôžeme získať nič iné ako množstvo plynu vynaloženého na vykonanie tejto funkcie. Plyn je mena, ktorú treba zaplatiť za transakcie a výpočty: čím viac operácií v vašom kóde, tým viac zaplatíte. Preto, aby ste pochopili, prečo kód nefunguje, najprv ho testujete, simulujete všetky možné chyby a hardcodujete vynaložený plyn ako chybový kód. Ale ak zmeníte svoj kód, táto správa chýb sa rozpadne.

Okrem toho je takmer nemožné vytvoriť mobilnú aplikáciu pracujúcu s blockchainom 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, ak v nej nebude zabudovaná krypto-peňaženka, ku ktorej budú užívatelia mať malú dôveru (ja by som neveril). V dôsledku toho sme aj tu museli zarezať roh. Smart kontrakty sa dodávali do privátnej siete Ethereum a peňaženka bola cloudová. Ale aj tak naši užívatelia pocítili všetky "príjemnosti" decentralizovaných služieb v podobe dlhého čakania na transakcie niekoľkokrát počas prenájmu.

Toto všetko nás privádza k takejto architektúre. Súhlasíte, že sa výrazne líši od toho, čo sme plánovali.

Vyvinúť softvér na decentralizovaný prenájom skútrov. Kto povedal, že to bude jednoduché?

Eso v rukáve: Self-Sovereign Identity

Nie je možné vybudovať úplne decentralizovaný systém bez decentralizovanej identifikácie. Na túto časť sa vzťahuje Self-Sovereign Identity (SSI), ktorej podstata spočíva v tom, že sa zbavíte centralizovaného poskytovateľa identít (IDP) a dáte všetky údaje a zodpovednosť za ne do rúk ľudí. Teraz sa používateľ sám rozhoduje, aké údaje potrebuje a s kým ich bude zdieľať. Všetky tieto informácie sú na zariadení používateľa. Na výmenu však potrebujeme decentralizovaný systém uchovávania kryptografických dôkazov. Všetky moderné realizácie konceptu SSI používajú blockchain ako uložište.

„Aký má tús v rukáve?“ — opýtate sa. Službu sme uvádzali na interné testovanie na našich vlastných zamestnancoch v Berlíne a Bonne a stretli sme sa s ťažkosťami v podobe nemeckých odborov. V Nemecku je spoločnostiam zakázané sledovať pohyby zamestnancov, a odbory to kontrolujú. Tieto obmedzenia robia konvenčné uchovávanie dát identifikačných údajov používateľov nemožným, pretože by sme v takom prípade vedeli, kde sa zamestnanci nachádzajú. Na druhej strane sme ich nemohli nekontrolovať kvôli možnosti krádeže skútrov. Ale vďaka Self-Sovereign Identity používali naši používatelia systém anonymne, pričom skútr sám overoval platnosť vodičského preukazu pred začatím prenájmu. Výsledkom bolo, že sme uchovávali anonymizované metriky používateľov, nemali sme žiadne dokumenty a osobné údaje: všetky tieto informácie mali sami vodiči vo svojich zariadeniach. Takže vďaka SSI bolo riešenie problému v našom projekte pripravené ešte pred jeho vznikom.

Zariadenie prinieslo problémy

Neimplementovali sme Self-Sovereign Identity samostatne, pretože to si vyžaduje odborné znalosti 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 zásadnú nevýhodu: hlavný jazyk vývoja je Node.js.

Tento technologický stack nás veľmi obmedzuje vo výbere hardvéru, ktorý môžeme integrovať do skútrov. Našťastie sme 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 skútri. Okrem toho sme získali monitorovanie a vzdialený prístup cez vpn, pričom sme využili hotové nástroje.

Na záver

Napriek všetkej „bolesti“ a problémom, projekt bol spustený. Nie všetko fungovalo tak, ako sme plánovali, ale na skútroch sa naozaj dalo jazdiť, ak sme si ich prenajali.

Áno, urobili sme niekoľko chýb pri navrhovaní architektúry, ktoré nám nedovolili vytvoriť úplne decentralizovanú službu, ale aj bez týchto chýb by sa nám pravdepodobne nepodarilo vytvoriť serverless platformu. Jedna vec je napísať ďalšiu kryptomenu a úplne iná je plnohodnotná služba, kde treba spracovávať chyby, riešiť okrajové prípady a vykonávať odložené úlohy. Dúfajme, že nové platformy, ktoré sa nedávno objavili, budú flexibilnejšie a funkčnejšie.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster