Bumuo ng software para sa desentralisadong pagrenta ng scooter. Sinong nagsabing magiging madali?

Sa artikulong ito ay pag-uusapan ko kung paano namin sinubukang bumuo ng desentralisadong pagrenta ng scooter sa mga matalinong kontrata at kung bakit kailangan pa rin namin ng isang sentralisadong serbisyo.

Bumuo ng software para sa desentralisadong pagrenta ng scooter. Sinong nagsabing magiging madali?

Kung paano ang lahat ng ito ay nagsimula

Noong Nobyembre 2018, nakibahagi kami sa isang hackathon na nakatuon sa Internet of Things at blockchain. Pinili ng aming team ang pagbabahagi ng scooter bilang isang ideya dahil mayroon kaming scooter mula sa sponsor ng hackathon na ito. Ang prototype ay mukhang isang mobile application na nagbibigay-daan sa iyong magsimula ng scooter sa pamamagitan ng NFC. Mula sa pananaw sa marketing, ang ideya ay sinusuportahan ng isang kuwento tungkol sa isang "maliwanag na kinabukasan" na may bukas na ecosystem kung saan sinuman ay maaaring maging nangungupahan o may-ari, lahat ay nakabatay sa mga matalinong kontrata.

Talagang nagustuhan ng aming mga stakeholder ang ideyang ito, at nagpasya silang gawin itong isang prototype para ipakita sa mga eksibisyon. Pagkatapos ng ilang matagumpay na demonstrasyon sa Mobile World Congress at Bosch Connected World noong 2019, napagpasyahan na subukan ang pagrenta ng scooter sa mga tunay na user, mga empleyado ng Deutsche Telekom. Kaya nagsimula kaming bumuo ng isang ganap na MVP.

Blockchain sa mga saklay

Sa palagay ko ay hindi sulit na ipaliwanag kung ano ang pagkakaiba ng isang proyekto na ipapakita sa entablado at ang isa na gagamitin ng mga totoong tao. Sa anim na buwan kailangan naming gawing bagay ang krudo na prototype na angkop para sa isang piloto. At pagkatapos ay naunawaan namin kung ano ang ibig sabihin ng "sakit".

Upang gawing desentralisado at bukas ang aming system, nagpasya kaming gumamit ng mga smart contract ng Ethereum. Ang pagpili ay nahulog sa platform na ito ng mga desentralisadong serbisyo sa online dahil sa katanyagan nito at ang kakayahang bumuo ng isang serverless na application. Binalak naming ipatupad ang aming proyekto bilang mga sumusunod.

Bumuo ng software para sa desentralisadong pagrenta ng scooter. Sinong nagsabing magiging madali?

Ngunit, sa kasamaang-palad, ang isang matalinong kontrata ay isang code na pinaandar ng isang virtual machine sa oras ng isang transaksyon, at hindi nito mapapalitan ang isang ganap na server. Halimbawa, ang isang matalinong kontrata ay hindi makakapagsagawa ng mga nakabinbin o nakaiskedyul na pagkilos. Sa aming proyekto, hindi kami nito pinahintulutan na magpatupad ng per-minute rental service, gaya ng ginagawa ng karamihan sa mga modernong serbisyo sa pagbabahagi ng sasakyan. Samakatuwid, nag-debit kami ng cryptocurrency mula sa user pagkatapos makumpleto ang transaksyon nang hindi nakatitiyak na mayroon siyang sapat na pera. Ang diskarte na ito ay katanggap-tanggap lamang para sa isang panloob na piloto at, siyempre, nagdaragdag ng mga problema kapag nagdidisenyo ng isang ganap na proyekto sa produksyon.

Idinagdag sa lahat ng nasa itaas ay ang dampness ng platform mismo. Halimbawa, kung sumulat ka ng matalinong kontrata na may lohika na iba sa mga token ng ERC-20, makakatagpo ka ng mga problema sa paghawak ng error. Kadalasan, kung mali ang input o hindi gumagana nang tama ang aming mga pamamaraan, nakakatanggap kami ng error code bilang tugon. Sa kaso ng Ethereum, wala tayong makukuha maliban sa halaga ng gas na ginugol para maisagawa ang function na ito. Ang gas ay isang currency na dapat bayaran para sa mga transaksyon at kalkulasyon: mas maraming operasyon sa iyong code, mas marami kang babayaran. Kaya para maunawaan kung bakit hindi gumagana ang code, subukan mo muna ito sa pamamagitan ng pagtulad sa lahat ng posibleng error at hardcode ang gas na ginastos bilang error code. Ngunit kung babaguhin mo ang iyong code, masisira ang paghawak ng error na ito.

Bilang karagdagan, halos imposible na lumikha ng isang mobile application na gumagana sa blockchain nang matapat, nang hindi gumagamit ng isang susi na nakaimbak sa isang lugar sa cloud. Bagama't umiiral ang mga tapat na wallet, hindi sila nagbibigay ng mga interface para sa pag-sign ng mga panlabas na transaksyon. Nangangahulugan ito na hindi ka makakakita ng native na application maliban kung mayroon itong built-in na crypto wallet, kung saan kakaunti ang pagtitiwalaan ng mga user (hindi ko ito pagtitiwalaan). Dahil dito, kinailangan din naming maghiwa-hiwalay dito. Ang mga matalinong kontrata ay inihatid sa pribadong Ethereum network, at ang wallet ay cloud-based. Ngunit sa kabila nito, naranasan ng aming mga user ang lahat ng "kasiyahan" ng mga desentralisadong serbisyo sa anyo ng mahabang paghihintay para sa mga transaksyon nang maraming beses sa bawat session ng pagrenta.

Ang lahat ng ito ay humahantong sa amin sa arkitektura na ito. Agree, ibang-iba ito sa pinlano namin.

Bumuo ng software para sa desentralisadong pagrenta ng scooter. Sinong nagsabing magiging madali?

Ace sa butas: Self-Sovereign Identity

Hindi ka makakabuo ng ganap na desentralisadong sistema nang walang desentralisadong pagkakakilanlan. Ang Self-Sovereign Identity (SSI) ay responsable para sa bahaging ito, ang esensya nito ay itapon mo ang centralized identity provider (IDP) at ipamahagi ang lahat ng data at responsibilidad para dito sa mga tao. Ngayon ang gumagamit ay nagpapasya kung anong data ang kailangan niya at kung kanino niya ito ibabahagi. Ang lahat ng impormasyong ito ay matatagpuan sa device ng user. Ngunit para sa palitan kakailanganin namin ng isang desentralisadong sistema para sa pag-iimbak ng cryptographic na ebidensya. Ang lahat ng modernong pagpapatupad ng konsepto ng SSI ay gumagamit ng blockchain bilang imbakan.

"Ano ang kinalaman nito sa alas sa butas?" - tanong mo. Inilunsad namin ang serbisyo para sa panloob na pagsubok sa sarili naming mga empleyado sa Berlin at Bonn, at nakatagpo kami ng mga paghihirap sa anyo ng mga unyon ng manggagawang Aleman. Sa Germany, ang mga kumpanya ay ipinagbabawal na subaybayan ang mga galaw ng mga empleyado, at kontrolado ito ng mga unyon ng manggagawa. Ang mga paghihigpit na ito ay nagwawakas sa sentralisadong imbakan ng data ng pagkakakilanlan ng user, dahil sa kasong ito malalaman natin ang lokasyon ng mga empleyado. Kasabay nito, hindi namin maiwasang suriin ang mga ito dahil sa posibilidad na manakaw ang mga scooter. Ngunit salamat sa Self-Sovereign Identity, ginamit ng aming mga user ang system nang hindi nagpapakilala, at ang scooter mismo ang nagsuri ng kanilang lisensya sa pagmamaneho bago simulan ang pagrenta. Bilang resulta, nag-imbak kami ng mga hindi kilalang sukatan ng user; wala kaming anumang mga dokumento o personal na data: lahat sila ay nakapaloob sa mga device ng mga driver mismo. Kaya, salamat sa SSI, ang solusyon sa problema sa aming proyekto ay handa na bago pa man ito lumitaw.

Ang aparato ay nagbigay sa akin ng mga problema

Hindi kami mismo ang nagpatupad ng Self-Sovereign Identity, dahil nangangailangan ito ng kadalubhasaan sa cryptography at maraming oras. Sa halip, sinamantala namin ang produkto ng aming mga partner na Jolocom at isinama ang kanilang mobile wallet at mga serbisyo sa aming platform. Sa kasamaang palad, ang produktong ito ay may isang makabuluhang disbentaha: ang pangunahing wika ng pag-develop ay Node.js.

Lubos na nililimitahan ng stack ng teknolohiyang ito ang aming pagpili ng hardware na binuo sa isang scooter. Sa kabutihang palad, sa pinakadulo simula ng proyekto, pinili namin ang Raspberry Pi Zero, at sinamantala namin ang lahat ng mga pakinabang ng isang ganap na microcomputer. Nagbigay-daan ito sa amin na magpatakbo ng napakalaking Node.js sa scooter. Bilang karagdagan, nakatanggap kami ng pagsubaybay at malayuang pag-access sa pamamagitan ng VPN gamit ang mga handa na tool.

Sa pagtatapos

Sa kabila ng lahat ng "sakit" at mga problema, ang proyekto ay inilunsad. Hindi lahat ay gumana tulad ng aming pinlano, ngunit talagang posible na sumakay ng mga scooter sa pamamagitan ng pagrenta sa kanila.

Oo, nakagawa kami ng ilang mga pagkakamali kapag nagdidisenyo ng arkitektura na hindi nagpapahintulot sa amin na gawing ganap na desentralisado ang serbisyo, ngunit kahit na wala ang mga pagkakamaling ito ay halos hindi kami makakagawa ng walang server na platform. Isang bagay na magsulat ng isa pang crypto-pyramid, at isa pa ang magsulat ng isang ganap na serbisyo kung saan kailangan mong pangasiwaan ang mga error, lutasin ang mga borderline na kaso at magsagawa ng mga nakabinbing gawain. Umaasa tayo na ang mga bagong platform na lumitaw kamakailan ay magiging mas flexible at functional.

Pinagmulan: www.habr.com

Magdagdag ng komento