Töötada välja tarkvara detsentraliseeritud mootorrataste rendiks. Kes ütles, et see on lihtne?

Selles artiklis räägin, kuidas me püüdsime luua detsentraliseeritud mootorrataste rendi süsteemi nutilepingute abil ja miks me ikkagi vajame tsentraliseeritud teenust.

Töötada välja tarkvara detsentraliseeritud mootorrataste rendiks. Kes ütles, et see on lihtne?

Kuidas kõik algas

2018. aasta novembris osalesime asjade internetile ja plokiahelale pühendatud hackathonil. Meie meeskond valis ideeks mootorrataste jagamise, kuna meil oli sponsorilt saadud mootorratas. Prototüüp nägi välja nagu mobiilirakendus, mis võimaldas mootorratta käivitada NFC kaudu. Turunduse seisukohalt toetati ideed jutuga "helgest tulevikust" avatud ökosüsteemis, kus igaüks võib saada rendileandjaks või -võtjaks ning kõik see nutilepingute alusel.

See idee meeldis meie sidusrühmadele ning nad otsustasid selle prototüübiks muuta näitustel demonstreerimiseks. Pärast mitmeid edukaid esitusi Mobile World Congressil ja Bosch Connected World 2019. aastal, otsustati testida mootorrataste rentimist tegelike kasutajate, Deutsche Telekomi töötajate seas. Nii alustasime täieõigusliku MVP arendamist.

Plokiahel karkasside peal

Ma arvan, et pole vaja selgitada, mis vahe on esitluseks mõeldud projektiga ja projektiga, mida inimesed tegelikult kasutavad. Meil oli kuus kuud aega, et muuta toore prototüüp millegiks, mis sobib piloteerimiseks. Siis saime aru, mida tähendab "valu".

Kuna soovisime muuta meie süsteemi detsentraliseerituks ja avatud, otsustasime kasutada Ethereum'i nutilepinguid. Valik langes just sellele detsentraliseeritud veebiteenuste platvormile tänu selle populaarsusele ja võimalusele luua serverivaba rakendus. Kavandasime oma projekti ellu viia järgmiselt.

Töötada välja tarkvara detsentraliseeritud mootorrataste rendiks. Kes ütles, et see on lihtne?

Kahjuks on nutileping kood, mis täidetakse virtuaalses masinas tehingu hetkel, ja see ei saa asendada täielikku server. Näiteks ei saa nutileping täita edasilükatud või planeeritud toiminguid. Meie projektis takistas see minutipõhise renditeenuse loomist, nagu enamustes tänapäevastes autorendi teenustes. Seetõttu võtsime krüptovaluutat kasutajalt pärast tehingu lõppu, ilma et oleksime kindlad, et tal on piisavalt raha. Selline lähenemine on vastuvõetav ainult sisemise piloodi jaoks ja lisab kindlasti probleeme täieõigusliku tootmisprojekti kavandamisel.

Kõigile eelnenud lisandub platvormi niiskus. Näiteks, kui kirjutate nutilepingut, mille loogika erineb ERC-20 tokenitest, seisate silmitsi vigade töötlemise probleemiga. Tüüpiliselt, kui meie meetodite sisend on vale või need ei tööta õigesti, saame vastuseks veakoodi. Ethereumis ei saa me aga midagi muud kui kütuse, mida kulutati selle funktsiooni täitmiseks. Kütus on valuuta, mida tuleb maksta tehingute ja arvutuste eest: mida rohkem operatsioone teie koodis, seda rohkem peate maksma. Seetõttu, et mõista, miks kood ei tööta, testite seda kõigepealt, simuleerides kõiki võimalikke vigu, ja hardcode'ite kulutatud gaasi veakoodina. Kuid kui muudate oma koodi, see vigade töötlemine enam ei toimi.

Lisaks on praktiliselt võimatu luua mobiilirakendust, mis töötaks plokiahelaga õiglaselt, kasutamata võtmeid, mis on salvestatud kuskil pilves. Kuigi ausad rahakotid eksisteerivad, ei paku nad liideseid väliste tehingute allkirjastamiseks. See tähendab, et natiivset rakendust ei saa tekkida, kui selles ei ole sisseehitatud krüpto rahakotti, millele kasutajatel oleks vähe usaldust (ma isiklikult ei usaldaks). Seetõttu pidime ka siin nurka lõikama. Nutilepingud edastati privaatvõrku Ethereum ja rahakott oli pilves. Kuid vaatamata sellele kogesid meie kasutajad kõiki detsentraliseeritud teenuste "võlusid" nagu pikkade tehingute ootamine mitu korda üürimise sessiooni jooksul.

Kõik see viib meid sellise arhitektuurini. Olge nõus, see erineb oluliselt sellest, mida me kavandasime.

Töötada välja tarkvara detsentraliseeritud mootorrataste rendiks. Kes ütles, et see on lihtne?

Äss varrukas: Iseseisev identiteet

Täielikult detsentraliseeritud süsteemi loomine pole võimalik ilma detsentraliseeritud identifitseerimise süsteemita. Selle eest vastutab Self-Sovereign Identity (SSI), mille põhiolemus on kesksest identiteedipakkujast (IDP) loobumine ja andmete ning vastutuse jagamine inimestele. Nüüd otsustab kasutaja ise, millised andmed on talle vajalikud ja kellega ta neid jagab. Kõik see teave asub kasutaja seadmes. Kuid vahetamiseks on meil vaja detsentraliseeritud krüptograafiliste tõendite salvestussüsteemi. Kõik kaasaegsed SSI kontseptsiooni rakendused kasutavad salvestamiseks plokiahelat.

„Mis teema on siin äss?“ — küsite teie. Me alustasime teenust sisetestsimiseks oma töötajate seas Berliinis ja Bonnis ning seisime silmitsi Saksamaa ametiühingute esitatud raskustega. Saksamaal on ettevõtetel keelatud jälgida töötajate liikumisi, ja seda kontrollivad ametiühingud. Need piirangud muudavad kasutajatunnistuste keskse andmebaasi loomise võimatuks, kuna sel juhul oleksime teadlikud töötajate asukohast. Samuti ei saanud me neid mitte kontrollida, kuna oli olemas skuuterite varguse risk. Kuid Self-Sovereign Identity (SSI) tõttu said meie kasutajad süsteemi anonüümsetena kasutada, ja skuuter ise kontrollis nende juhilube enne rentimise alustamist. Tulemusena säilisid meil anonüümsed kasutajametriigid, meil ei olnud mingeid dokumente ega isikuandmeid: kõik need olid salvestatud ise juhtide seadmetesse. Seega oli SSI tänu meie projekti probleemide lahendamiseks valmis juba enne selle tekkimist.

Seade viskas probleeme

Me ei rakendanud iseseisvat digitaalset identiteeti, kuna see nõuab krüptograafias ekspertiisi ja suurt töömahtu. Selle asemel kasutasime meie partnerite Jolocom toodet ning integreerisime nende mobiilse rahakoti ja teenused meie platvormiga. Kahjuks on sellel tootel üks oluline puudus: peamine arenduskeel on Node.js.

Selline tehnolooge anke väga piirati meie riistvara valikut, mis integreeriti skootrisse. Õnneks langes meie valik projekti alguses Raspberry Pi Zero kasuks, ja me kasutasime täieliku mikrokonsooli eeliseid. See võimaldas meil käivitada mahukat Node.js-i skootris. Lisaks saime jälgimise ja kaugjuurdepääsu läbi vpn, kasutades valmis tööriistu.

Kokkuvõtteks

Hoolimata kõigist “valudest” ja probleemidest käivitati projekt. Mitte kõik ei töötanud nii nagu plaanisime, kuid skootriga oli tõesti võimalik sõita, kui neid rentida.

Jah, tegime mitmeid vigu arhitektuuri kavandamisel, mis ei võimaldanud meil teenust täielikult detsentraliseerida, kuid isegi nende vigade puudumisel oleks serverivaba platvormi loomine ilmselt keeruline. Üks asi on luua veel üks krüptopüramiid ja hoopis teine – täielik teenus, kus tuleb käsitleda vigu, lahendada piiriüleseid juhtumeid ja täita edasi lükatud ülesandeid. Lootkem, et hiljuti ilmunud uued platvormid on paindlikumad ja funktsionaalsemad.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster