Vyvíjejte software pro decentralizovaný pronájem skútrů. Kdo řekl, že to bude snadné?

V tomto článku budu hovořit o tom, jak jsme se snažili vybudovat decentralizovaný pronájem skútrů na smart kontraktech a proč jsme stále potřebovali centralizovanou službu.

Vyvíjejte software pro decentralizovaný pronájem skútrů. Kdo řekl, že to bude snadné?

Jak to všechno začalo

V listopadu 2018 jsme se zúčastnili hackathonu věnovaného internetu věcí a blockchainu. Náš tým si jako nápad vybral sdílení koloběžek, protože jsme měli koloběžku od sponzora tohoto hackathonu. Prototyp vypadal jako mobilní aplikace, která umožňuje nastartovat koloběžku přes NFC. Z marketingového hlediska byl nápad podpořen příběhem o „světlé budoucnosti“ s otevřeným ekosystémem, kde se nájemcem nebo pronajímatelem může stát každý, a to vše na základě chytrých smluv.

Našim zainteresovaným stranám se tento nápad opravdu líbil a rozhodli se z něj udělat prototyp pro vystavení na výstavách. Po několika úspěšných ukázkách na Mobile World Congress a Bosch Connected World v roce 2019 bylo rozhodnuto otestovat půjčovnu skútrů s reálnými uživateli, zaměstnanci Deutsche Telekom. Začali jsme tedy vyvíjet plnohodnotné MVP.

Blockchain o berlích

Myslím, že nemá cenu vysvětlovat, jaký je rozdíl mezi projektem, který se má ukázat na pódiu, a projektem, který budou používat skuteční lidé. Za šest měsíců jsme museli ze surového prototypu udělat něco vhodného pro pilota. A pak jsme pochopili, co znamená „bolest“.

Aby byl náš systém decentralizovaný a otevřený, rozhodli jsme se používat Ethereum smart kontrakty. Volba padla na tuto platformu decentralizovaných online služeb kvůli její popularitě a schopnosti vybudovat aplikaci bez serveru. Náš projekt jsme plánovali realizovat následovně.

Vyvíjejte software pro decentralizovaný pronájem skútrů. Kdo řekl, že to bude snadné?

Inteligentní smlouva je však bohužel kód spuštěný virtuálním strojem v okamžiku transakce a nemůže nahradit plnohodnotný server. Inteligentní smlouva například nemůže provádět čekající nebo naplánované akce. V našem projektu nám to neumožnilo zavést službu pronájmu za minutu, jak to dělá většina moderních služeb sdílení aut. Proto jsme po dokončení transakce odepsali uživateli kryptoměnu, aniž bychom si byli jisti, že má dostatek peněz. Tento přístup je přijatelný pouze pro interní pilot a samozřejmě přináší problémy při návrhu plnohodnotného výrobního projektu.

Ke všemu výše uvedenému se přidává vlhkost samotné plošiny. Pokud například napíšete inteligentní smlouvu s logikou odlišnou od tokenů ERC-20, narazíte na problémy se zpracováním chyb. Obvykle, pokud je vstup nesprávný nebo naše metody nefungují správně, obdržíme jako odpověď chybový kód. V případě Etherea nemůžeme získat nic jiného než množství plynu vynaloženého na plnění této funkce. Plyn je měna, kterou je nutné platit za transakce a výpočty: čím více operací ve vašem kódu, tím více zaplatíte. Abyste tedy pochopili, proč kód nefunguje, nejprve jej otestujte simulací všech možných chyb a napevno zakódujte spotřebovaný plyn jako chybový kód. Pokud však kód změníte, toto zpracování chyb se přeruší.

Navíc je téměř nemožné vytvořit mobilní aplikaci, která by s blockchainem pracovala poctivě, bez použití klíče uloženého někde v cloudu. Přestože poctivé peněženky existují, neposkytují rozhraní pro podepisování externích transakcí. To znamená, že nativní aplikaci neuvidíte, pokud nemá vestavěnou kryptopeněženku, které budou uživatelé málo důvěřovat (já bych jí nevěřil). V důsledku toho jsme zde také museli uříznout roh. Inteligentní smlouvy byly dodány do soukromé sítě Ethereum a peněženka byla založena na cloudu. Ale i přes to naši uživatelé zažili všechny „radosti“ decentralizovaných služeb v podobě dlouhého čekání na transakce několikrát za pronájem.

To vše nás vede k této architektuře. Souhlasím, je to velmi odlišné od toho, co jsme plánovali.

Vyvíjejte software pro decentralizovaný pronájem skútrů. Kdo řekl, že to bude snadné?

Eso v díře: Self-Sovereign Identity

Bez decentralizované identity nelze vybudovat zcela decentralizovaný systém. Za tuto část je zodpovědná Self-Sovereign Identity (SSI), jejíž podstatou je, že vyhodíte centralizovaného poskytovatele identity (IDP) a všechna data a odpovědnost za ně distribuujete lidem. Nyní se uživatel rozhodne, jaká data potřebuje a s kým je bude sdílet. Všechny tyto informace jsou umístěny na zařízení uživatele. Ale pro výměnu budeme potřebovat decentralizovaný systém pro ukládání kryptografických důkazů. Všechny moderní implementace konceptu SSI využívají blockchain jako úložiště.

"Co to má společného s esem v jamce?" - ptáš se. Spustili jsme službu pro interní testování na vlastních zaměstnancích v Berlíně a Bonnu a narazili jsme na potíže v podobě německých odborů. V Německu mají firmy zakázáno sledovat pohyb zaměstnanců a odbory to kontrolují. Tato omezení ukončila centralizované ukládání údajů o identitě uživatele, protože v tomto případě bychom znali polohu zaměstnanců. Zároveň jsme je nemohli nekontrolovat kvůli možnosti odcizení skútrů. Ale díky Self-Sovereign Identity naši uživatelé používali systém anonymně a samotný skútr před zahájením půjčovny zkontroloval jejich řidičský průkaz. V důsledku toho jsme ukládali anonymní uživatelské metriky, neměli jsme žádné dokumenty ani osobní údaje: všechny byly obsaženy na zařízeních samotných řidičů. Díky SSI tak bylo řešení problému v našem projektu připraveno ještě dříve, než se objevilo.

Zařízení mi dělalo problémy

Samostatnou identitu jsme neimplementovali sami, protože vyžaduje odbornost v kryptografii a spoustu času. Místo toho jsme využili výhod produktu Jolocom našich partnerů a integrovali jejich mobilní peněženku a služby do naší platformy. Bohužel má tento produkt jednu podstatnou nevýhodu: hlavním vývojovým jazykem je Node.js.

Tato technologie značně omezuje náš výběr hardwaru zabudovaného do skútru. Naštěstí jsme hned na začátku projektu zvolili Raspberry Pi Zero a využili jsme všech výhod plnohodnotného mikropočítače. To nám umožnilo provozovat objemný Node.js na skútru. Navíc jsme dostali monitoring a vzdálený přístup přes VPN pomocí hotových nástrojů.

Konečně,

Přes všechnu „bolest“ a problémy byl projekt spuštěn. Ne všechno fungovalo, jak jsme plánovali, ale na koloběžkách se opravdu dalo jezdit tak, že si je půjčili.

Ano, při návrhu architektury jsme udělali řadu chyb, které nám neumožnily službu zcela decentralizovat, ale i bez těchto chyb bychom jen stěží dokázali vytvořit bezserverovou platformu. Jedna věc je napsat další kryptopyramidu a něco úplně jiného je napsat plnohodnotnou službu, ve které potřebujete řešit chyby, řešit hraniční případy a provádět čekající úkoly. Doufejme, že nové platformy, které se v poslední době objevily, budou flexibilnější a funkčnější.

Zdroj: www.habr.com

Přidat komentář