Kehitä ohjelmisto hajautettua skootterivuokrausta varten. Kuka sanoi, että se olisi helppoa?

Tässä artikkelissa puhun siitä, kuinka yritimme rakentaa hajautettua skootterivuokrausta älykkäille sopimuksille ja miksi tarvitsimme edelleen keskitettyä palvelua.

Kehitä ohjelmisto hajautettua skootterivuokrausta varten. Kuka sanoi, että se olisi helppoa?

Kuinka kaikki alkoi

Marraskuussa 2018 osallistuimme esineiden Internetiin ja lohkoketjuun omistettuun hackathoniin. Tiimimme valitsi skootterien jakamisen ideaksi, koska meillä oli skootteri tämän hackathonin sponsorilta. Prototyyppi näytti mobiilisovellukselta, jonka avulla voit käynnistää skootterin NFC:n kautta. Markkinoinnin näkökulmasta ajatusta tuki tarina "valoisasta tulevaisuudesta", jossa on avoin ekosysteemi, jossa kuka tahansa voi ryhtyä vuokralaiseksi tai vuokranantajaksi, kaikki älykkäiden sopimusten pohjalta.

Sidosryhmämme pitivät tästä ideasta todella, ja he päättivät tehdä siitä prototyypin näyttelyissä esitettäväksi. Useiden menestyksekkäiden esittelyjen jälkeen Mobile World Congressissa ja Bosch Connected Worldissä vuonna 2019 päätettiin testata skootterivuokrausta oikeiden käyttäjien, Deutsche Telekomin työntekijöiden kanssa. Joten aloimme kehittää täysimittaista MVP:tä.

Blockchain kainalosauvoilla

Mielestäni on turha selittää, mitä eroa on lavalla näytettävän projektin ja oikeiden ihmisten käyttämän projektin välillä. Kuudessa kuukaudessa meidän oli muutettava raakaprototyyppi lentäjälle sopivaksi. Ja sitten ymmärsimme mitä "kipu" tarkoittaa.

Tehdäksemme järjestelmästämme hajautetun ja avoimen, päätimme käyttää Ethereumin älykkäitä sopimuksia. Valinta putosi tälle hajautettujen verkkopalvelujen alustalle sen suosion ja kyvyn rakentaa palvelimeton sovellus. Suunnittelimme toteuttavamme projektimme seuraavasti.

Kehitä ohjelmisto hajautettua skootterivuokrausta varten. Kuka sanoi, että se olisi helppoa?

Mutta valitettavasti älykäs sopimus on koodi, jonka virtuaalikone suorittaa tapahtuman yhteydessä, eikä se voi korvata täysimittaista palvelinta. Esimerkiksi älykäs sopimus ei voi suorittaa odottavia tai ajoitettuja toimintoja. Projektissamme tämä ei mahdollistanut minuuttivuokrauksen toteuttamista, kuten useimmat nykyaikaiset autonjakopalvelut tekevät. Siksi veloitimme kryptovaluuttaa käyttäjältä tapahtuman suorittamisen jälkeen emmekä olleet varmoja, että hänellä oli tarpeeksi rahaa. Tämä lähestymistapa on hyväksyttävä vain sisäisessä pilotissa ja tietysti lisää ongelmia täysimittaisen tuotantoprojektin suunnittelussa.

Kaikkeen yllä olevaan lisätään itse alustan kosteus. Jos esimerkiksi kirjoitat älykkään sopimuksen, jonka logiikka eroaa ERC-20-tokeneista, kohtaat virheenkäsittelyongelmia. Yleensä, jos syöttö on väärä tai menetelmämme eivät toimi oikein, saamme vastauksena virhekoodin. Ethereumin tapauksessa emme voi saada mitään muuta kuin tämän toiminnon suorittamiseen kulutetun kaasun määrää. Kaasu on valuutta, joka on maksettava tapahtumista ja laskelmista: mitä enemmän toimintoja koodissasi on, sitä enemmän maksat. Joten ymmärtääksesi miksi koodi ei toimi, testaa se ensin simuloimalla kaikki mahdolliset virheet ja koodaa kulutettu kaasu virhekoodiksi. Mutta jos muutat koodia, tämä virheenkäsittely katkeaa.

Lisäksi on lähes mahdotonta luoda mobiilisovellusta, joka toimii lohkoketjun kanssa rehellisesti, ilman jonnekin pilveen tallennettua avainta. Vaikka rehellisiä lompakoita on olemassa, ne eivät tarjoa rajapintoja ulkoisten tapahtumien allekirjoittamiseen. Tämä tarkoittaa, että et näe alkuperäistä sovellusta, ellei siinä ole sisäänrakennettua kryptolompakkoa, johon käyttäjät eivät juurikaan luota (en luottaisi siihen). Seurauksena oli, että meidän oli myös leikattava nurkka täällä. Älykkäät sopimukset toimitettiin yksityiseen Ethereum-verkkoon ja lompakko oli pilvipohjainen. Mutta tästä huolimatta käyttäjämme kokivat kaikki hajautettujen palvelujen "ilot" pitkien tapahtumien odotusten muodossa useita kertoja vuokra-istunnon aikana.

Kaikki tämä johtaa meidät tähän arkkitehtuuriin. Samaa mieltä, se on hyvin erilainen kuin suunnittelimme.

Kehitä ohjelmisto hajautettua skootterivuokrausta varten. Kuka sanoi, että se olisi helppoa?

Ässä reiässä: Self-Suvereign Identity

Et voi rakentaa täysin hajautettua järjestelmää ilman hajautettua identiteettiä. Self-Sovereign Identity (SSI) vastaa tästä osasta, jonka ydin on, että hylkäät keskitetyn identiteetin tarjoajan (IDP) ja jaat kaikki tiedot ja vastuun siitä ihmisille. Nyt käyttäjä päättää, mitä tietoja hän tarvitsee ja kenen kanssa hän jakaa ne. Kaikki nämä tiedot sijaitsevat käyttäjän laitteessa. Mutta vaihtoa varten tarvitsemme hajautetun järjestelmän kryptografisten todisteiden tallentamiseen. Kaikki nykyaikaiset SSI-konseptin toteutukset käyttävät lohkoketjua tallennustilana.

"Mitä tekemistä tällä on reiän ässän kanssa?" - kysyt. Käynnistimme palvelun sisäiseen testaukseen omilla työntekijöillämme Berliinissä ja Bonnissa, ja kohtasimme vaikeuksia saksalaisten ammattiliittojen muodossa. Saksassa yrityksiä on kielletty valvomasta työntekijöiden liikkumista, ja ammattiliitot valvovat tätä. Nämä rajoitukset lopettivat käyttäjien henkilötietojen keskitetyn tallennuksen, koska tällöin tietäisimme työntekijöiden sijainnin. Samaan aikaan emme voineet olla tarkistamatta niitä, koska skootterit voitiin varastaa. Mutta Self-Sovereign Identityn ansiosta käyttäjämme käyttivät järjestelmää nimettömästi, ja skootteri itse tarkisti heidän ajokorttinsa ennen vuokrauksen aloittamista. Tämän seurauksena tallensimme anonyymejä käyttäjämittareita, meillä ei ollut asiakirjoja tai henkilötietoja: ne kaikki sisältyivät kuljettajien itsensä laitteisiin. Siten SSI:n ansiosta projektimme ongelman ratkaisu oli valmis jo ennen sen ilmestymistä.

Laite aiheutti minulle ongelmia

Emme ole itse toteuttaneet Self-Sovereign Identityä, koska se vaatii kryptografian asiantuntemusta ja paljon aikaa. Sen sijaan hyödynsimme kumppaneidemme Jolocomin tuotetta ja integroimme heidän mobiililompakkonsa ja palvelut alustamme. Valitettavasti tällä tuotteella on yksi merkittävä haittapuoli: tärkein kehityskieli on Node.js.

Tämä teknologiapino rajoittaa suuresti skootteriin sisäänrakennettujen laitteistojen valintaa. Onneksi valitsimme projektin alussa Raspberry Pi Zeron ja hyödynsimme kaikki täysimittaisen mikrotietokoneen edut. Tämän ansiosta pystyimme ajamaan ison Node.js:n skootterilla. Lisäksi saimme valvontaa ja etäkäyttöä VPN:n kautta valmiilla työkaluilla.

lopuksi

Kaikesta "tuskasta" ja ongelmista huolimatta projekti käynnistettiin. Kaikki ei toiminut niin kuin suunnittelimme, mutta skootterilla oli todella mahdollista ajaa vuokraamalla.

Kyllä, teimme arkkitehtuuria suunnitellessamme useita virheitä, jotka eivät mahdollistaneet palvelun täysin hajauttamista, mutta ilman näitäkin virheitä tuskin olisimme pystyneet luomaan palvelimetonta alustaa. On eri asia kirjoittaa toinen kryptopyramidi ja aivan toinen kirjoittaa täysimittainen palvelu, jossa täytyy käsitellä virheitä, ratkaista rajatapauksia ja suorittaa vireillä olevia tehtäviä. Toivotaan, että äskettäin ilmestyneet uudet alustat ovat joustavampia ja toimivampia.

Lähde: will.com

Lisää kommentti