Töötage välja detsentraliseeritud rollerite laenutamise tarkvara. Kes ütles, et see saab olema lihtne?

Selles artiklis räägin sellest, kuidas püüdsime detsentraliseeritud tõukerattarenti nutikate lepingute alusel üles ehitada ja miks me ikkagi vajasime tsentraliseeritud teenust.

Töötage välja detsentraliseeritud rollerite laenutamise tarkvara. Kes ütles, et see saab olema lihtne?

Kuidas see kõik algas

2018. aasta novembris võtsime osa asjade internetile ja plokiahelale pühendatud häkatonist. Meie meeskond valis ideeks tõukeratta jagamise, kuna meil oli tõukeratas selle häkatoni sponsorilt. Prototüüp nägi välja nagu mobiilirakendus, mis võimaldab NFC kaudu rollerit käivitada. Turunduslikust vaatenurgast toetas ideed lugu “helgest tulevikust” avatud ökosüsteemiga, kus igaüks võib saada üürnikuks või üürileandjaks ja seda kõike nutikate lepingute alusel.

Meie sidusrühmadele see idee väga meeldis ja nad otsustasid muuta selle prototüübiks näitustel eksponeerimiseks. Pärast mitmeid edukaid demonstratsioone Mobile World Congressil ja Bosch Connected Worldil 2019. aastal otsustati tõukerattarenti testida päris kasutajate ehk Deutsche Telekomi töötajatega. Nii hakkasimegi välja töötama täisväärtuslikku MVP-d.

Blockchain karkudel

Ma arvan, et ei tasu seletada, mis vahe on laval näidataval projektil ja sellisel, mida hakkavad kasutama päris inimesed. Kuue kuuga pidime toorprototüübi tegema piloodile sobivaks. Ja siis saime aru, mida tähendab “valu”.

Selleks, et muuta meie süsteem detsentraliseerituks ja avatuks, otsustasime kasutada Ethereumi nutikaid lepinguid. Valik langes sellele detsentraliseeritud võrguteenuste platvormile selle populaarsuse ja võimaluse tõttu luua serverita rakendusi. Plaanisime oma projekti ellu viia järgmiselt.

Töötage välja detsentraliseeritud rollerite laenutamise tarkvara. Kes ütles, et see saab olema lihtne?

Kuid paraku on nutikas leping kood, mille virtuaalmasin tehingu tegemise ajal käivitab ja see ei saa asendada täisväärtuslikku serverit. Näiteks ei saa nutikas leping teha ootel või ajastatud toiminguid. Meie projektis ei võimaldanud see rakendada minutirenditeenust, nagu seda teeb enamik kaasaegseid autojagamisteenuseid. Seetõttu debiteerisime kasutajalt pärast tehingu sooritamist krüptovaluutat, olemata kindlad, et tal on piisavalt raha. Selline lähenemine on vastuvõetav ainult sisepiloodi jaoks ja loomulikult lisab probleeme täisväärtusliku tootmisprojekti kavandamisel.

Kõigele eelnevale lisandub platvormi enda niiskus. Näiteks kui kirjutate nutika lepingu, mille loogika erineb ERC-20 žetoonidest, ilmnevad veakäsitluse probleemid. Tavaliselt, kui sisend on vale või meie meetodid ei tööta õigesti, saame vastuseks veakoodi. Ethereumi puhul ei saa me midagi muud peale selle funktsiooni täitmiseks kulutatud gaasi koguse. Gaas on valuuta, millega tuleb tehingute ja arvutuste eest tasuda: mida rohkem toiminguid koodis, seda rohkem maksate. Et mõista, miks kood ei tööta, testige seda esmalt, simuleerides kõiki võimalikke vigu ja kodeerige kulutatud gaas veakoodina. Kuid kui muudate oma koodi, siis see veakäsitlus katkeb.

Lisaks on peaaegu võimatu luua mobiilirakendust, mis toimiks plokiahelaga ausalt, ilma kuskil pilves salvestatud võtit kasutamata. Kuigi ausad rahakotid on olemas, ei paku need välistehingute allkirjastamiseks liideseid. See tähendab, et te ei näe omarakendust, kui sellel pole sisseehitatud krüptorahakotti, mida kasutajad vähe usaldavad (ma ei usaldaks seda). Selle tulemusena pidime ka siin nurga alla lõikama. Nutikad lepingud viidi Ethereumi privaatvõrku ja rahakott oli pilvepõhine. Kuid vaatamata sellele kogesid meie kasutajad kõiki detsentraliseeritud teenuste “rõõme” – pikkade tehingute ootamise näol mitu korda rendiseansi jooksul.

Kõik see viib meid selle arhitektuuri juurde. Nõus, see on väga erinev sellest, mida me plaanisime.

Töötage välja detsentraliseeritud rollerite laenutamise tarkvara. Kes ütles, et see saab olema lihtne?

Äss augus: Iseseisev suveräänne identiteet

Ilma detsentraliseeritud identiteedita ei saa luua täiesti detsentraliseeritud süsteemi. Selle osa eest vastutab Self-Sovereign Identity (SSI), mille olemus seisneb selles, et viskate välja tsentraliseeritud identiteedi pakkuja (IDP) ja jagate kõik andmed ja vastutuse selle eest inimestele. Nüüd otsustab kasutaja, milliseid andmeid ta vajab ja kellega neid jagab. Kogu see teave asub kasutaja seadmes. Kuid vahetamiseks vajame detsentraliseeritud süsteemi krüptograafiliste tõendite salvestamiseks. Kõik SSI kontseptsiooni kaasaegsed teostused kasutavad salvestusruumina plokiahelat.

"Mis on sellel pistmist ässaga augus?" - te küsite. Käivitasime oma töötajate sisetestimise teenuse Berliinis ja Bonnis ning puutusime kokku raskustega Saksa ametiühingute näol. Saksamaal on ettevõtetel keelatud töötajate liikumist jälgida ja ametiühingud kontrollivad seda. Need piirangud lõpetavad kasutaja identiteediandmete tsentraliseeritud salvestamise, kuna sel juhul oleksime teada töötajate asukohast. Samal ajal ei saanud me neid kontrollimata jätta, kuna tõukerattad võivad ära varastada. Kuid tänu Self-Sovereign Identity'le kasutasid meie kasutajad süsteemi anonüümselt ja tõukeratas ise kontrollis enne rentimise alustamist nende juhiluba. Selle tulemusena salvestasime anonüümseid kasutajamõõdikuid, meil ei olnud dokumente ega isikuandmeid: need olid kõik draiverite endi seadmetes. Seega tänu SSI-le oli meie projekti probleemi lahendus valmis juba enne selle ilmumist.

Seade tekitas mulle probleeme

Me ei rakendanud Self-Sovereign Identity'i ise, kuna see nõuab krüptograafiateadmisi ja palju aega. Selle asemel kasutasime ära oma partnerite Jolocomi toodet ning integreerisime nende mobiilse rahakoti ja teenused meie platvormi. Kahjuks on sellel tootel üks oluline puudus: peamine arenduskeel on Node.js.

See tehnoloogiapakk piirab oluliselt meie rolleri sisseehitatud riistvara valikut. Õnneks valisime juba projekti alguses välja Raspberry Pi Zero ja kasutasime ära kõik täisväärtusliku mikroarvuti eelised. See võimaldas meil rolleril käivitada mahuka faili Node.js. Lisaks saime valmistööriistade abil jälgimise ja kaugjuurdepääsu VPN-i kaudu.

Kokkuvõttes

Vaatamata kõigele "valule" ja probleemidele käivitati projekt. Kõik ei õnnestunud nii, nagu plaanisime, kuid tõukeratastega oli tõesti võimalik sõita neid rentides.

Jah, me tegime arhitektuuri kujundamisel mitmeid vigu, mis ei võimaldanud meil teenust täielikult detsentraliseerida, kuid vaevalt oleksime isegi ilma nende vigadeta suutnud luua serverita platvormi. Üks asi on kirjutada järjekordne krüptopüramiidi ja hoopis teine ​​asi on kirjutada täisteenus, milles peate käsitlema vigu, lahendama piirjuhtumeid ja täitma pooleliolevaid ülesandeid. Loodame, et hiljuti ilmunud uued platvormid on paindlikumad ja funktsionaalsemad.

Allikas: www.habr.com

Lisa kommentaar