Disvolvu programaron por malcentralizita skotero-luado. Kiu diris, ke ĝi estos facila?

En ĉi tiu artikolo mi parolos pri kiel ni provis konstrui malcentralizitan skoter-luadon sur inteligentaj kontraktoj kaj kial ni ankoraŭ bezonas centralizitan servon.

Disvolvu programaron por malcentralizita skotero-luado. Kiu diris, ke ĝi estos facila?

Kiel ĉio komencis

En novembro 2018, ni partoprenis en hakatono dediĉita al Interreto de Aĵoj kaj blokĉeno. Nia teamo elektis skoterdividadon kiel ideon ĉar ni havis skoteron de la sponsoro de ĉi tiu hakatono. La prototipo aspektis kiel poŝtelefona aplikaĵo, kiu ebligas al vi komenci skoteron per NFC. De merkata vidpunkto, la ideo estis subtenata de rakonto pri "brila estonteco" kun malferma ekosistemo, kie iu ajn povas fariĝi luanto aŭ mastro, ĉio bazita sur inteligentaj kontraktoj.

Niaj koncernatoj tre ŝatis ĉi tiun ideon, kaj ili decidis transformi ĝin en prototipon por montri ĉe ekspozicioj. Post pluraj sukcesaj manifestacioj ĉe Mobile World Congress kaj Bosch Connected World en 2019, estis decidite testi la skoterluon kun realaj uzantoj, Deutsche Telekom-dungitoj. Do ni komencis evoluigi plentaŭgan MVP.

Blokoĉeno sur lambastonoj

Mi pensas, ke ne indas klarigi, kia estas la diferenco inter projekto montrata sur scenejo kaj tiu, kiu estos uzata de realaj homoj. En ses monatoj ni devis igi la krudan prototipon en io taŭga por piloto. Kaj tiam ni komprenis, kion signifas "doloro".

Por malcentralizi kaj malfermi nian sistemon, ni decidis uzi inteligentajn kontraktojn de Ethereum. La elekto falis sur ĉi tiu platformo de malcentralizitaj interretaj servoj pro ĝia populareco kaj la kapablo konstrui senservilan aplikaĵon. Ni planis efektivigi nian projekton jene.

Disvolvu programaron por malcentralizita skotero-luado. Kiu diris, ke ĝi estos facila?

Sed, bedaŭrinde, inteligenta kontrakto estas kodo efektivigita de virtuala maŝino dum transakcio, kaj ĝi ne povas anstataŭigi plenrajtan servilon. Ekzemple, inteligenta kontrakto ne povas plenumi pritraktatajn aŭ planitajn agojn. En nia projekto, tio ne permesis al ni efektivigi pominutan luservon, kiel la plej multaj modernaj aŭtkunhavaj servoj faras. Tial ni ŝuldis kriptan moneron de la uzanto post kompletigi la transakcion sen esti certaj, ke li havas sufiĉe da mono. Ĉi tiu aliro estas nur akceptebla por interna piloto kaj, kompreneble, aldonas problemojn dum desegnado de plenkreska produktadprojekto.

Al ĉio ĉi supre aldoniĝas la malsekeco de la platformo mem. Ekzemple, se vi skribas inteligentan kontrakton kun logiko malsama ol ERC-20-ĵetonoj, vi renkontos problemojn pri eraro pritraktado. Kutime, se la enigo estas malĝusta aŭ niaj metodoj ne funkcias ĝuste, ni ricevas erarkodon kiel respondo. En la kazo de Ethereum, ni ne povas akiri ion alian ol la kvanton da gaso elspezita por plenumi ĉi tiun funkcion. Gaso estas valuto, kiu devas esti pagita por transakcioj kaj kalkuloj: ju pli da operacioj en via kodo, des pli vi pagos. Do por kompreni kial la kodo ne funkcias, vi unue provas ĝin simulante ĉiujn eblajn erarojn kaj malmola kodigo de la elspezita gaso kiel erarkodo. Sed se vi ŝanĝas vian kodon, ĉi tiu erartraktado rompiĝos.

Krome, estas preskaŭ neeble krei moveblan aplikaĵon, kiu funkcias kun la blokĉeno honeste, sen uzi ŝlosilon stokita ie en la nubo. Kvankam honestaj monujoj ekzistas, ili ne provizas interfacojn por subskribi eksterajn transakciojn. Ĉi tio signifas, ke vi ne vidos indiĝenan aplikaĵon krom se ĝi havas enkonstruitan kriptan monujon, al kiu uzantoj malmulte fidos (mi ne fidus ĝin). Kiel rezulto, ni ankaŭ devis tranĉi angulon ĉi tie. Inteligentaj kontraktoj estis liveritaj al la privata Ethereum-reto, kaj la monujo estis bazita en nubo. Sed malgraŭ tio, niaj uzantoj spertis ĉiujn "ĝojojn" de malcentralizitaj servoj en formo de longaj atendoj por transakcioj plurfoje per luo-sesio.

Ĉio ĉi kondukas nin al ĉi tiu arkitekturo. Konsentu, ĝi estas tre malsama ol tio, kion ni planis.

Disvolvu programaron por malcentralizita skotero-luado. Kiu diris, ke ĝi estos facila?

Aso en la truo: Mem-Suverena Identeco

Vi ne povas konstrui tute malcentralizitan sistemon sen malcentralizita identeco. Mem-Suverena Identeco (SSI) respondecas pri ĉi tiu parto, kies esenco estas, ke vi forĵetas la centralizitan identecan provizanton (IDP) kaj distribuas ĉiujn datumojn kaj respondecon pri ĝi al la homoj. Nun la uzanto decidas kiajn datumojn li bezonas kaj kun kiu li dividos ĝin. Ĉiuj ĉi tiuj informoj troviĝas sur la aparato de la uzanto. Sed por la interŝanĝo ni bezonos malcentralizitan sistemon por stoki kriptajn pruvojn. Ĉiuj modernaj efektivigoj de la SSI-koncepto uzas blokĉenon kiel stokadon.

"Kion ĉi tio rilatas al la aso en la truo?" - vi demandas. Ni lanĉis la servon por interna testado ĉe niaj propraj dungitoj en Berlino kaj Bonn, kaj ni renkontis malfacilaĵojn en la formo de germanaj sindikatoj. En Germanio, kompanioj estas malpermesitaj kontroli la movadojn de dungitoj, kaj sindikatoj kontrolas tion. Ĉi tiuj limigoj ĉesigas centralizitan stokadon de uzantidentecaj datumoj, ĉar en ĉi tiu kazo ni scius la lokon de dungitoj. Samtempe, ni ne povis ne kontroli ilin pro la ebleco de ŝtelado de skoteroj. Sed danke al Mem-Suverena Identeco, niaj uzantoj uzis la sistemon anonime, kaj la skotero mem kontrolis sian stirpermesilon antaŭ ol komenci la luadon. Kiel rezulto, ni stokis anonimajn uzant-metrikojn; ni havis neniujn dokumentojn aŭ personajn datumojn: ili ĉiuj estis enhavitaj sur la aparatoj de la ŝoforoj mem. Tiel, dank' al SSI, la solvo de la problemo en nia projekto estis preta eĉ antaŭ ol ĝi aperis.

La aparato donis al mi problemojn

Ni mem ne efektivigis Mem-Suverenan Identecon, ĉar ĝi postulas kompetentecon pri kriptografio kaj multe da tempo. Anstataŭe, ni profitis la produkton de niaj partneroj Jolocom kaj integris ilian moveblan monujon kaj servojn en nian platformon. Bedaŭrinde, ĉi tiu produkto havas unu gravan malavantaĝon: la ĉefa evolulingvo estas Node.js.

Ĉi tiu teknologia stako multe limigas nian elekton de aparataro konstruita en skotero. Feliĉe, komence de la projekto, ni elektis la Raspberry Pi Zero, kaj ni profitis ĉiujn avantaĝojn de plena mikrokomputilo. Ĉi tio permesis al ni ruli volumenan Node.js sur la skotero. Krome, ni ricevis monitoradon kaj foran aliron per VPN uzante pretajn ilojn.

En konkludo

Malgraŭ ĉiuj "doloroj" kaj problemoj, la projekto estis lanĉita. Ne ĉio funkciis kiel ni planis, sed vere eblis veturi per skoteroj luante ilin.

Jes, ni faris kelkajn erarojn dum desegnado de la arkitekturo, kiuj ne permesis al ni fari la servon tute malcentralizita, sed eĉ sen ĉi tiuj eraroj ni apenaŭ povintus krei senservila platformo. Unu afero estas skribi alian kriptopiramidon, kaj tute alia verki plenrajtan servon, en kiu vi devas trakti erarojn, solvi limajn kazojn kaj plenumi pritraktatajn taskojn. Ni esperu, ke la novaj platformoj, kiuj aperis lastatempe, estos pli flekseblaj kaj funkciaj.

fonto: www.habr.com

Aldoni komenton