• Rezultati Niso Bili Najdeni

Decentraliziran sistem za analizo videotokov

N/A
N/A
Protected

Academic year: 2022

Share "Decentraliziran sistem za analizo videotokov"

Copied!
130
0
0

Celotno besedilo

(1)

Univerza v Ljubljani

Fakulteta za računalništvo in informatiko

Aleks Vujić

Decentraliziran sistem za analizo videotokov

MAGISTRSKO DELO

MAGISTRSKI ŠTUDIJSKI PROGRAM DRUGE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

Smer: Računalništvo in Informatika

Mentor : prof. dr. Vlado Stankovski

Ljubljana, 2022

(2)
(3)

Avtorske pravice. Rezultati magistrskega dela so intelektualna lastnina avtorja in Fakultete za računalništvo in informatiko Univerze v Ljubljani. Za objavljanje ali izkori- ščanje rezultatov magistrskega dela je potrebno pisno soglasje avtorja, Fakultete za raču- nalništvo in informatiko ter mentorja.

©2022 Aleks Vujić

(4)
(5)

Zahvala

Zahvaljujem se svojemu mentorju prof. dr. Vladu Stankovskemu za vso strokovno pomoč, zanimive diskusije, nasvete, ideje in spodbudo, ki sem jo čutil ves čas med izdelavo te magistrske naloge. Zahvaljujem se tudi dr. Petru Kochovskemu za nesebično deljenje širokega tehničnega znanja, uporabne us- meritve in hitro odzivnost.

Iskreno se zahvaljujem svojim staršem, mami Eriki in očetu Milutinu ter bratu Stefanu, ker verjamete vame. Hvala za vse spodbudne besede, pomoč in motivacijo, ko je sam nisem uspel najti. Hvala tudi tebi, moja Nina, da mi vedno stojiš ob strani, brezmejno verjameš vame ter me spodbujaš na študijski in karierni poti.

Zahvaljujem se tudi vsem prijateljem in sošolcem za nepozabna študijska leta in prečudovite spomine.

Brez vas mi ne bi uspelo.

Aleks Vujić, 2022

(6)
(7)

”Čas je prepočasen za tiste, ki čakajo, prehiter za tiste, ki se bojijo, predolg za tiste, ki žalujejo, prekratek za tiste, ki se veselijo, toda za tiste, ki ljubijo, je neskončen.”

— Henry van Dyke

(8)
(9)

Kazalo

Povzetek Abstract

1 Uvod 1

2 Pregled trenutnega stanja 5

2.1 Ekosistemi v programskem inženirstvu . . . 6

2.2 Decentralizirane aplikacije . . . 10

2.3 Uporabniški vmesniki za interakcijo z verigo blokov . . . 14

2.4 Analiza videotokov z metodami umetne inteligence . . . 16

2.5 Decentraliziran spletni vmesnik za oblačno analizo videotokov 18 3 Zahteve po decentraliziranem ekosistemu 23 3.1 Transparentnost . . . 23

3.2 Sledljivost . . . 26

3.3 Regulacija dostopa do virov . . . 27

3.4 Sodelovanje uporabnikov v ekosistemu . . . 29

4 Ključne tehnologije 31 4.1 Veriga blokov . . . 32

4.2 Zaledni del . . . 36

4.3 Čelni del . . . 41

4.4 Tehnologija vsebnikov, namestitev in orkestracija . . . 46

(10)

5 Arhitektura rešitve 55

5.1 Komponente sistema . . . 55

5.2 Integracija komponent . . . 72

6 Spletni vmesnik za analizo videotokov 77 6.1 Vstopna točka v sistem . . . 77

6.2 Nadzorna plošča . . . 81

6.3 Upravljanje z metodami umetne inteligence . . . 84

6.4 Upravljanje z uporabnikovimi videotokovi . . . 87

6.5 Analiza videotoka . . . 89

6.6 Merjenje kakovosti storitev . . . 90

7 Zaključek 93 7.1 Glavni dosežki . . . 93

7.2 Uporaba rezultatov dela . . . 94

7.3 Nadaljnje delo . . . 95

(11)

Seznam uporabljenih kratic

kratica angleško slovensko

ABI Application Binary Interface binarni vmesnik aplikacije AI Artificial Intelligence umetna inteligenca

API Application Programming Interface

aplikacijski programski vmesnik

CD Continuous Delivery zvezna dostava

CI Continuous Integration zvezna integracija

CID Content ID enolični identifikator vsebine

CSS Cascading Style Sheets kaskadne slogovne predloge DAG Directed Acyclic Graph usmerjen aciklični graf Dapp Decentralized Application decentralizirana aplikacija DI Dependency Injection vstavljanje odvisnosti DSL Domain Specific Language domensko specifičen jezik

ETH Ethereum Ethereum

EVM Ethereum Virtual Machine Ethereumov navidezni stroj

FK Foreign Key tuji ključ

HTML Hypertext Markup Language

jezik za označevanje nadbesedila

HTTP Hypertext Transfer Protocol protokol za prenos hiperteksta

HTTPS Hypertext Transfer Protocol Secure

protokol za varni prenos hiperteksta

IoT Internet of Things internet stvari

IP Internet Protocol internetni protokol

(12)

JDBC Java Database Connectivity javanski vmesnik za povezovanje s podatkovno bazo

JSON JavaScript Object Notation objektna notacija za JavaScript

JVM Java Virtual Machine javanski navidezni stroj MSP Multi-Sided Platform večstranska platforma

P2P Peer-to-Peer točka-točka

PK Primary Key primarni ključ

PoA Proof-of-Authority dokaz o avtoriteti

PoW Proof-of-Work dokaz o delu

REST Representational State Transfer

predstavitveni prenos stanja SCSS Syntactically Awesome Style

Sheet

sintaktična nadgradnja CSS sintakse

SFS Smart File System pametni datotečni sistem SLA Service Level Agreement sporazum o ravni storitev SPA Single-Page Application enostranska aplikacija TTP Trusted Third Party zaupanja vredna tretja

oseba XML Extensible Markup

Language

razširljiv označevalni jezik

YAML YAML Ain’t Markup

Language

format za zapis podatkov v obliki ključ-vrednost

(13)

Definicije manj znanih pojmov

pojem razlaga

pametni datotečni sistem

Datotečni sistem, ki hrani dnevnik vseh še nepotrjenih sprememb. Uporablja se na Amiga računalnikih. Predstavljen je bil leta 1998.

vstavljanje odvisnosti

Tehnika, s katero objekt samodejno pridobi druge odvisne objekte, običajno v konstruktorju. V fazi testiranja lahko odvisne objekte priredimo.

domensko specifičen jezik

Programski jezik, specializiran za določeno aplikacijsko domeno. Je nasprotje

splošno-namenskega programskega jezika, ki ga lahko uporabljamo za širok spekter aplikacij.

Najbolj znan primer domensko specifičnega jezika je HTML, ki se uporablja za spletne strani.

zaupanja vredna tretja oseba

Entiteta, ki omogoča interakcijo med dvema strankama, saj ji zaupata obe strani. Pregleduje vso kritično transakcijsko komunikacijo in na ta način poiskuša zaznati goljufivo digitalno vsebino.

(14)
(15)

Povzetek

Naslov: Decentraliziran sistem za analizo videotokov

Povpraševanje po najnovejših modelih umetne inteligence za analizo stro- go varovanih videotokov, ki jih na enostaven način namestimo v oblak, je vse večje. Poraja se potreba po zaupanja vrednem tržnem ekosistemu, ki omogoča varno interakcijo s ponudniki virov. Z uporabo decentraliziranih aplikacij lahko dosežemo transparentnost delovanja in večje zaupanje upo- rabnikov v sistem. V okviru magistrske naloge smo predstavili zaledne, čelne in orkestracijske tehnologije, ki jih potrebujemo za razvoj decentraliziranih aplikacij in predlagali načrt arhitekture, ki združuje številne komponente.

Opisali smo interaktivno spletno aplikacijo za analizo videotokov, ki uporab- niku omogoča zagon izbrane metode umetne inteligence za analizo lastnega videotoka. Ključni podatki so shranjeni na pametni pogodbi, podatke iz zu- nanjih sistemov pa pridobi s prerokom. Kubernetes namesti metode umetne inteligence na infrastrukturo v obliki vsebnikov. V primerjavi s sorodnimi deli se odlikuje po monetizaciji storitev, zaupanju v sistem, dostopnosti metod in možnosti računanja na robu, kar predstavlja napredek najnovejših dosež- kov na tem področju. Aplikacija, razvita v tej magistrski nalogi, lahko služi kot primer dobre prakse za nadaljnje raziskovalno delo na področju razvoja decentraliziranih aplikacij. Prikaže, kako lahko integriramo verigo blokov, orkestracijo vsebnikov, umetno inteligenco in spletne uporabniške vmesnike.

Ključne besede

veriženje blokov, videotok, pametna pogodba, DevOps, globoko učenje

(16)
(17)

Abstract

Title: Decentralised System for Video Stream Analysis

The demand for the latest AI models for the analysis of strictly protected video streams, which are easily deployed to the cloud, is growing. There is a need for a trusted market ecosystem that allows for secure interaction with resource providers. By using decentralized applications, we can achieve oper- ational transparency and increase user trust in the system. In this master’s thesis, we presented backend, frontend and orchestration technologies needed to develop decentralized applications and proposed an architecture that in- tegrates many components. We described an interactive web application for video stream analysis that allows the user to run a selected AI model to an- alyze their own video stream. Key data is stored on the smart contract, and data from external systems is obtained from the oracle. Kubernetes deploys AI models on infrastructure in the form of containers. Compared to related works, it is distinguished by the monetization of services, trust in the system, accessibility of methods and the possibility of edge computing, which repre- sents the advancement of the state of the art in the field. The application developed in this master’s thesis can serve as an example of good practice for further research work in the field of decentralized application development.

It demonstrates how we can integrate blockchain, container orchestration, AI and web user interfaces.

Keywords

Blockchain, Videostream, Smart Contract, DevOps, Deep Learning

(18)
(19)

Poglavje 1 Uvod

Analiza videotokov predstavlja pomembno aktivnost v mnogih gospodarskih panogah. Izvajamo jo lahko z uporabo metod globokih nevronskih mrež, or- kestriramo pa jo s pomočjo računalništva v oblaku oz. v megli. Slovenska strategija pametne specializacije [1] obsega 9 področij (mobilnost, tovarne prihodnosti in druge), pri mnogih od teh so trenutno že v razvoju aplika- cije, ki uporabljajo globoko učenje za analizo videotokov. Take aplikacije bodo v prihodnosti realizirane na decentraliziran način in bodo omogočale analizo podatkov od roba do oblaka. Naprave, ki so nameščene bližje virom, imajo običajno manjše računske zmogljivosti, vendar zmanjšajo latenco pri procesiranju podatkov. Operacije, ki zahtevajo zmogljivejšo strojno opremo od naprav na robu, izvajamo v oblaku, kjer je na voljo veliko več računskih virov.

Pri razvoju sodobnih decentraliziranih aplikacij pomemben del specifi- kacije predstavljajo nefunkcionalne zahteve, s katerimi opisujemo obnašanje aplikacije glede na različne kriterije. Te lahko vključujejo:

1. Varnost, kjer navedemo varnostne mehanizme za preprečevanje napa- dov in željeno obnašanje v primeru napadov na sistem. Osredotočamo se na definiranje pravil, praks in zakonov, ki jih moramo upoštevati pri rokovanju z občutljivimi podatki [2].

2. Omejevanje dostopa in avtorizacija, kjer navedemo, kdo ima dostop do 1

(20)

določenega vira [3, 4].

3. Dokazila na verigi blokov, kjer lahko zahtevamo določen konsenzusni mehanizem, ki se uporablja za dosego sporazuma o stanju podatkov v omrežju [5, 6, 7].

Decentralizacija omogoča razvoj trajnostnih ekosistemov, kjer lahko ra- zlični akterji ponujajo in uporabljajo vire v ekosistemu [8]. Cilj dela je raz- viti model virov, ki ga lahko akterji uporabljajo pri delovanju ekosistema na področju analize videotokov z uporabo umetne inteligence. Uporabnikom želimo ponuditi platformo, ki omogoča trgovanje z metodami umetne inte- ligence s pomočjo pametnih pogodb na verigi blokov. Pri tem so v proces vključeni različni tipi uporabnikov – končni uporabniki, ponudniki računskih virov, razvijalci metod umetne inteligence in administratorji. Uporabniški vmesnik bo omogočal enostavno in prožno podporo zaganjanja in ustavlja- nja vsebnikov za analizo videotokov.

Tehnologije, ki jih lahko uporabimo pri razvoju takega sistema, so iz raz- ličnih področij, kot so internet stvari [9, 10], pametne pogodbe [11] in umetna inteligenca [12]. Običajno uporabljamo zaledni strežnik, ki se povezuje na podatkovno bazo, reagira na dogodke v pametni pogodbi in kliče njene funk- cije. Uporabljamo tudi čelni del, ki prikazuje uporabniški vmesnik, uporablja zaledni sistem in pametno pogodbo za pridobivanje podatkov ter omogoča uporabnikom upravljanje z vsebniki. Pomemben del predstavlja tudi orke- stracija vsebnikov, ki so s pomočjo umetne inteligence in računalniškega vida zmožni procesirati videotokove. Pogosto uporabljamo tudi koncepte zvezne integracije in postavitve programske opreme (angl. CI/CD), ki poskrbi za samodejno testiranje in dostavo novih različic uporabnikom [13].

Znanstveni dosežki te magistrske naloge so:

1. Razvit decentraliziran trg metod umetne inteligence, ki znatno zmanjša čas od zaključka razvoja metode do njene uporabe s strani uporabnikov.

2. Zaupanja vredna interakcija med akterji, kjer transparentnost in sle- dljivost dosežemo z decentralizacijo.

(21)

3

3. Omejevanje dostopa do virov s pomočjo prerokov. Objavili smo tudi članek [14], kjer prikažemo uporabo prerokov za doseganje skladnosti s predpisi pri čezmejni izmenjavi modelov umetne inteligence.

4. Shema arhitekture, ki povezuje številne samostojne komponente, med drugim čelni in zaledni del, podatkovno bazo, verigo blokov, pame- tno pogodbo in računsko infrastrukturo v oblaku, ki poganja vsebike z metodami umetne inteligence.

Magistrsko nalogo smo razdelili na smiselne celote. Začnemo s točno spe- cifikacijo problema, s katerim se ukvarjamo. Predstavimo osnovno idejo de- centralizirane aplikacije, ki analizira videotokove. Nato pregledamo sorodne članke iz področja ekosistemov, razvoja decentraliziranih aplikacij, uporabni- ških vmesnikov, analize videotokov in izpostavimo glavne novosti magisterija.

Nadaljujemo z zahtevami po decentraliziranem ekosistemu, kjer primerjamo centralizirane in decentralizirane aplikacije ter izpostavimo glavne prednosti decentraliziranega pristopa. Opišemo tudi ključne tehnologije, ki smo jih uporabili za razvoj aplikacije StreamAI. Nato predstavimo posamezne arhi- tekturne komponente sistema ter celotno arhitekturo, ki povezuje številne komponente v enoten sistem. Nadaljujemo s prikazom glavnega izdelka te magistrske naloge – decentralizirane spletne aplikacije za analizo videotokov, ki med seboj uspešno integrira verigo blokov, umetno inteligenco, orkestracijo vsebnikov, tržni ekosistem in interaktiven uporabniški vmesnik. Zaključimo s pregledom opravljenega dela. Podamo tudi vizijo za nadaljnji razvoj in izpostavimo možnosti uporabe dela v praksi.

(22)
(23)

Poglavje 2

Pregled trenutnega stanja

Decentralizirane aplikacije in ekosistemi, ki jih lahko gradimo na njihovih te- meljih, postajajo vse bolj priljubljene. S predstavitvijo Ethereumovih pame- tnih pogodb leta 2015 so se odprla vrata razvoju decentraliziranih aplikacij, ki so varne, anonimne in sledljive. Take aplikacije lahko pokrivajo različna področja, od ekonomije deljenja virov [15, 16, 17, 18], izvajanja elektronskih volitev [19, 20, 21] do sklepanja zavarovanj [22, 23, 24, 25]. Za uporabo pametnih pogodb se običajno poraja potreba po intuitivnem uporabniškem vmesniku, ki uporabnika vodi skozi postopek in mu prikrije zaledno komuni- kacijo z verigo blokov.

S pomočjo vsebnikov je postala uporaba in deljenje programov enostavna, saj le-ti vsebujejo vse potrebno, da se program izvaja, ne da bi uporabnik moral namestiti še dodatno programsko opremo [26]. Ravno zaradi tega se lahko nameščanje vsebnikov povsem avtomatizira, kar se odraža v porastu sistemov za avtomatizirano gradnjo, postavitev in integracijo aplikacij. V vsebnike lahko zapakiramo tudi metode umetne inteligence, ki so zmožne analizirati videotok v realnem času. Uporabniki jih lahko zaženejo in jim kot vhod podajo videotok, kot rezultat pa dobijo obvestila o zaznanih objektih (npr. zaznava vlomilca na dvorišču). Hitrost zaznave je pogosto odvisna od zmogljivosti grafične kartice in ravni optimizacije algoritmov za zaznavo [27].

Doslej so metode umetne inteligence pogosto razvijali raziskovalci v labo- 5

(24)

ratorijih, vendar njihovo znanje običajno ni doseglo širšega kroga uporabni- kov. Eden izmed razlogov je, da je namestitev in zagon metod umetne inteli- gence zahteven proces, ki pogosto zahteva konfiguracijo izvajalnega strežnika in namestitev potrebnih knjižnic ter orodij. Nemalokrat končni uporabniki nimajo potrebne infrastrukture za zagon in upravljanje takih aplikacij, zato jim moramo ponuditi že pripravljene navidezne stroje, kjer lahko na enosta- ven način poženejo metodo nad lastnimi podatki. Za zagotovitev nemotenega izvajanja se poslužujemo metod orkestracije vsebnikov, ki jih želimo name- stiti na rob omrežja, da zmanjšamo latenco pri časovno kritičnih zaznavah [28].

V tem poglavju predstavimo temeljne koncepte, potrebne za razumevanje magistrske naloge. Bralcu opišemo trenutno stanje na področju ekosistemov in predstavimo aktualne pristope za razvoj decentraliziranih aplikacij. Nato opišemo še uporabniške vmesnike, ki se uporabljajo za interakcijo z decentra- liziranimi sistemi. Predstavimo tudi napredne pristope za analizo videotokov, ki temeljijo na metodah računalniškega vida. Poglavje zaključimo s primer- javo že obstoječih pristopov s to magistrsko nalogo in izpostavimo znanstvene novosti. V tabeli 2.1 so izpostavljene glavne prednosti te magistrske naloge napram drugim člankom iz sorodnih področij.

2.1 Ekosistemi v programskem inženirstvu

Programski ekosistemi so sestavljeni iz množice programskih rešitev, ki jih razvijamo in vzdržujemo v istem okolju [36]. Na ta način programsko inže- nirstvo preseže tradicionalne meje, saj pri razvoju običajno sodeluje več pod- jetij ali samostojnih oseb. Akterji med seboj delujejo neodvisno. Kot primer lahko omenimo ekosistem iOS, kjer Apple preveri vse objavljene aplikacije in razvijalcem ponudi platformo, ki uporabnikom po vsem svetu omogoča prenos njihovih aplikacij. Od tega imata oba akterja korist – Apple dobi 30

% od prodaje, razvijalci pa imajo možnost ponuditi aplikacijo na globalnem trgu.

(25)

2.1. EKOSISTEMI V PROGRAMSKEM INŽENIRSTVU 7

RaziskavaKratekopis

Mone- tizacija storitev Raču- nanje narobu

Zaupanje vsistem Eko- sistem Dostopnost metod umetne inteligence

Decentra- lizirana aplikacija PrabhuD. indrugi[29]

Monetizacija zasebnihpodatkov naverigiblokov

DANEDADANEDA ThomasF.S. indrugi[30]

Karakteristike decentraliziranih ekosistemovza deljenjemedicinskih podatkov

NENEDADANEDA RicardoM. indrugi[31]

Trgpodatkoviz IoTnapravDANENEDANENE ShuiguangD. indrugi[32]

Sovpadanjeračunalništva voblakuinumetne inteligence

NEDANENEDANE VaikkunthM. indrugi[33]

Odgovornainvarna rešitevzaučenje nanapravi

NENEDADANEDA WalterDeB. indrugi[34]

Decentraliziranoomrežje zaumetnointeligencoDADADANEDADA MazinD. indrugi[35]

Monetizacijastoritevv javnemrobuomrežjas pametnimipogodbami

DADADADANEDA TodeloDADADADADADA Tabela2.1:Primerjavassorodnimideli.

(26)

Poleg programskih ekosistemov poznamo tudi ekosisteme digitalnih stori- tev in poslovne ekosisteme. Slednji opisuje dinamično strukturo organizacij, ki sodelujejo z namenom zagotoviti dodano vrednost končnim uporabnikom.

Tak ekosistem lahko nastane povsem spontano zaradi trenutnih potreb trga ali pa kot rezultat dolgoročnega načrta organizacij. Vsi člani ekosistema spo- štujejo skupne kodekse, vendar še vedno lahko odločajo neodvisno. Prav tako lahko po lastni volji zapustijo ekosistem ali pa se vanj včlanijo. Ekosistem digitalnih storitev lahko umestimo med poslovni in programski ekosistem.

To je ekosistem, kjer ponudniki storitev dosegajo zastavljene cilje in ustvar- jajo dodano vrednost z uporabo storitev drugih akterjev v sistemu. Različni tipi ekosistemov glede na njihovo dinamiko in odvisnost od uporabnikov so prikazani na sliki 2.1.

Dinamika ekosistema

Odvisnost od članov ekosistema Člani ekosistema si

delijo skupno ureditev in vrednost.

Taksonomija in skupni opisi kategoriziranih

storitev.

Skupna platforma za razvoj programske

opreme.

Poslovni ekosistem

Ekosistem digitalnih storitev

Programski ekosistem

Slika 2.1: Trije tipi ekosistemov glede na dinamiko in odvisnost od članov.

V raziskovalni dejavnosti je pogosto potrebno doseči interoperabilnost, zasebnost in zaupanje v podatke, da lahko dosežemo ponovljivost rezultatov.

Ko izvajamo eksperimente, je pomembno, da samo avtorizirane osebe lahko pregledujejo in delijo rezultate. Za ta namen je bil razvit decentraliziran eko- sistem BlockFlow [37], ki temelji na verigi blokov. Z njegovo pomočjo lahko znanstveniki izvajajo eksperimente in delijo ter shranjujejo zaupne podatke v interaktivnem in transparentnem okolju. V okviru članka so bili doseženi

(27)

2.1. EKOSISTEMI V PROGRAMSKEM INŽENIRSTVU 9

cilji na naslednjih področjih:

1. Omrežje: znanstvenik lahko ustvari omrežje verige blokov, ki predsta- vlja zaupanja vredno okolje za druge znanstvenike.

2. Ponovljivost: podatki morajo biti shranjeni na nespremenljiv in zaupen način.

3. Transparentnost: veriga blokov je že po naravi transparentna, kar po- meni, da so podatki in interakcije vidni vsem udeležencem.

4. Zasebnost: podatki so vidni samo avtoriziranim osebam.

5. Interoperabilnost: Podatke, pridobljene iz različnih eksperimentov, je možno združiti.

Raziskovalci na področju programskih ekosistemov se v člankih osredoto- čajo na naslednja podpodročja: programsko inženirstvo ([38, 39, 40, 41, 42]), kjer opisujejo, kako graditi skalabilne in zanesljive programske rešitve; poslo- vanje in vodenje ([43, 44, 45, 46, 47]), kjer so opisane metode za monetizacijo storitev in poslovni modeli; relacije med akterji ([48, 46, 49, 50, 51]), kjer opisujejo načine sodelovanja med uporabniki in povezava z industrijo ([52]), kjer je opisana integracija sistemov v obstoječe industrijske procese.

Iz naraščajočega števila člankov lahko zaključimo, da so programski eko- sistemi aktualno raziskovalno področje. Platformi Google Android in Apple iOS postavljata temelje dobrih praks, aktualni pa so tudi ekosistemi na po- dročju telemedicine [53] in letalske industrije [54]. Vse več pa se pojavljajo ekosistemi, ki v ozadju uporabljajo verigo blokov za dosego transparentnosti podatkov in operacij [37, 55]. V okviru magistrske naloge bomo gradili eko- sistem za ekonomijo trženja virov, pri tem pa bomo ponudnikom vsebnikov z umetno inteligenco omogočili enostavno monetizacijo ponujenih storitev.

Pomemben del ekosistemov je tudi ekonomija znotraj njih in način trže- nja virov. Pomembno je, da imajo vsi deležniki ekosistema določeno korist od njegove uporabe. Kupci morajo imeti možnost pregledovanja virov, ki

(28)

jih lahko najamejo ali kupijo. Če se odločijo za plačilo, gre večinski delež prodaje ponudniku vira, majhen del pa dobi tudi ponudnik ekosistema oz.

platforma. Na ta način zagotovimo trajnosten ekosistem, v katerem upo- rabniki delujejo en drugemu v korist. Vsak programski ekosistem stremi k temu, da bi si pridobil čim večjo bazo različnih tipov uporabnikov, kupcev in ponudnikov virov, saj je le na ta način platforma lahko operativna in dobič- konosna. Z večanjem števila uporabnikov pa se povečuje tudi odgovornost, saj moramo zagotavljati stalno delovanje in ukrepati ob morebitnih tehničnih ali vsebinskih težavah uporabnikov.

Vsak uporabnik ekosistema ima lastna merila in želje za kakovost ponu- jene storitve [56]. Če sistem ni zmožen zagotoviti potrebne kakovosti storitve, je velika verjetnost, da bodo uporabniki prešli h konkurentu. Končnemu upo- rabniku moramo pri časovno kritičnih aplikacijah ponuditi možnost pregleda metrik kakovosti. Nekaj pogostih metrik, ki zanimajo uporabnike, so raz- položljivost (angl. availability), varnost (angl. security), odzivni čas (angl.

response time) in zmožen pretok (angl. throughput) [57].

2.2 Decentralizirane aplikacije

Satoshi Nakamoto je v svojem članku Bitcoin: A Peer-to-Peer Electronic Cash System [58] svetu predstavil tehnologijo veriženja blokov (angl. block- chain). Definiral je matematične osnove potrebne za njeno delovanje in opisal javno zgodovino transakcij, ki je odporna na neželjene spremembe napadal- cev. Aplikacije, ki temeljijo na tehnologiji veriženja blokov, so aktivno raz- iskovalno področje, kjer znanstveniki eksperimentirajo z različnimi modeli.

Zmotno je prepričanje, da za decentralizirane aplikacije velja samo to, da ni- majo centralne točke odpovedi. Resnica je, da je za uspešno decentralizirano aplikacijo potrebno izpolniti več pogojev [59]:

1. Odprtokodnost – uporabniki zaprtokodne aplikacije morajo zaupati raz- vijalcem, da je aplikacija res decentralizirana in da nimajo dostopa do njihovih podatkov na centralnem viru. Zaprtokodne aplikacije pogosto

(29)

2.2. DECENTRALIZIRANE APLIKACIJE 11

odvrnejo uporabnike od uporabe, še posebej, če aplikacija upravlja z denarnimi sredstvi.

2. Interna valuta – aplikacije pogosto uporabljajo t.i. aplikacijski žeton (angl. appcoin). Ker so aplikacije večinoma odprtokodne, se pojavlja vprašanje, kako z njimi zaslužiti. Če bi dodali pristojbino (angl. fee) za transakcije, bi morali zaupati uporabnikom, da ne bodo kode pri- lagodili tako, da pristojbina ne bo več potrebna. To lahko rešimo z dodelitvijo žetonov v omrežju, ki jih morajo imeti uporabniki, če želijo uporabljati aplikacijo. Ker je število žetonov omejeno, je pričakovano, da bo tudi njihova vrednost naraščala. To seveda ne pomeni, da mo- rajo uporabniki dejansko plačati za uporabo storitve – ob registraciji jim lahko ponudimo simbolično število brezplačnih žetonov, ki jih lahko porabijo po potrebi.

3. Decentraliziran konsenzus – ne zanašamo se na centralni sistem za po- trjevanje veljavnosti transakcij. Veriga blokov je prva decentralizirana podatkovna baza transakcij, ki je bila od samega začetka načrtovana za visoko varnost. Če aplikacija potrebuje funkcionalnost, ki zahteva stri- njanje vseh za določeno stvar, je smiselna uporaba verige blokov, bolj natančno pametnih pogodb (angl. smart contract). To je del kode, ki se nahaja na verigi blokov. S tem se znebimo odvisnosti od zunanjih sistemov in pogosto pridobimo zaupanje uporabnikov.

4. Ni centralne točke odpovedi – decentraliziranih aplikacij ne moremo ugasniti, ker ne obstaja samo en strežnik, ki bi jih gostil. Aplikacijski podatki so porazdeljeni po vseh vozliščih, ki so med seboj neodvisna – če eno odpove, ostala delujejo nemoteno.

Prav tako kot klasične aplikacije, imajo tudi decentralizirane aplikacije (angl. decentralized applications, Dapps) uporabnike, mobilne aplikacije in strežnike. Bistvena razlika je v hranjenju ključnih podatkov, ki se v pri- meru decentraliziranih aplikacij nahajajo na verigi blokov v obliki pametnih pogodb.

(30)

Vitaly Dmitriyevich Buterin, eden od soustanoviteljev kriptovalute Ethe- reum, je v svojem članku [60] podrobno opisal njeno delovanje in namen, na koncu pa se je dotaknil še razvoja decentraliziranih aplikacij, ki temeljijo na Ethereumu. Pametne pogodbe omogočajo vsakomur, da razvije aplikacijo, ki se bo poganjala na navideznih strojih s predhodno pridobitvijo konsenza vseh v omrežju. Aplikacija lahko spreminja globalno stanje omrežja, ki se obnaša kot trdi disk. Shranjevanje večje količine podatkov na verigi blokov je odsvetovano, saj so stroški veliki. Vendar, koncept pošiljanja transakcij na verigo blokov ni najbolj uporabniško prijazen pristop, zato je Buterin že leta 2014 napovedal, da bodo za popularizacijo in dostopnost potrebni grafični uporabniški vmesniki, ki bodo uporabnikom prikrili kompleksnost interakcije z verigo blokov. Omenil je tudi, da bi klasično arhitekturo spletnih strani strežnik-odjemalec lahko zamenjali z arhitekturo veriga blokov-odjemalec. V praksi to ni vedno mogoče, saj mnoge aplikacije zahtevajo shranjevanje ve- like količine podatkov, kar je cenovno nesprejemljivo, če za zaledni sistem uporabljamo verigo blokov.

Pametne pogodbe lahko uporabljamo tudi za doseganje skladnosti s pred- pisi pri čezmejni izmenjavi modelov umetne inteligence [14]. Pri tem se uporabljajo namenski preroki (angl. oracle), ki so prilagojeni za napredno upravljanje z metodami umetne inteligence. V okviru članka smo raziskovali scenarij, ki predpostavlja, da se cevovod velepodatkov začne na eni lokaciji (npr. nadzorna kamera v Ljubljani) in potuje skozi varne internetne kanale proti nadaljnjim fazam procesiranja, ki se izvajajo na drugi lokaciji (npr.

zasebni oblak v Koreji). Shematski prikaz procesa je prikazan na sliki 2.2, njegovi koraki pa vključujejo:

1. S pomočjo grafičnega uporabniškega vmesnika uporabnik iz EU poda strinjanje za uporabo njegovih osebnih podatkov za določen čas, ko bo bival v Koreji (npr. uporabo njegovega biometričnega modela v metodah umetne inteligence).

2. Aplikacija pokliče funkcijo v pametni pogodbi, ki s pomočjo preroka

(31)

2.2. DECENTRALIZIRANE APLIKACIJE 13

uporabnik

1. preveri in potrdi regulacije 2. pridobi in namesti model umetne inteligence

repozitorij modelov umetne inteligence, ki vsebuje tudi model z uporabnikovimi

biometričnimi podatki

videotok

verifikacija osebe z uporabnikovim modelom

umetne inteligence v Koreji

Slika 2.2: Scenarij čezmejnega upravljanja s podatki.

za EU regulacijo potrdi obstoj potrebnih podatkov v repozitorijih in zapiše strinjanje na verigo blokov.

3. Ob prihodu v Korejo morajo biti uporabnikovi podatki nameščeni na varno računsko infrastrukturo v Koreji.

4. Komponente DECENTER platforme [61] izberejo najbolj primerno vo- zlišče za namestitev metode umetne inteligence v Korejskem oblaku.

5. Modul za upravljanje s podatki dovoli dostop na podlagi izpolnjenih EU in Korejskih regulacij ter osebnega dovoljenja lastnika biometričnih podatkov.

6. Ko uporabnik uspešno izvede plačilo, se mu izpiše API ključ, s katerim lahko dostopa do metode umetne inteligence.

7. Sporazum o ravni storitev (angl. Service Level Agreement, SLA) se pošlje infrastrukturi in uporabnikovi biometrični podatki so na voljo metodi umetne inteligence skozi celoten čas bivanja v Koreji.

(32)

2.3 Uporabniški vmesniki za interakcijo z ve- rigo blokov

Prav zaradi zahtevnosti interakcije z verigo blokov uporabniki potrebujejo enostaven način, da uporabljajo decentralizirane aplikacije. Cilj razvijalcev programske opreme, ki temelji na verigi blokov je, da kompleksnost operacij v ozadju skrijejo uporabniku in mu na ta način ponudijo pregleden in enostaven dostop do verige blokov. To lahko dosežemo z interaktivnimi in intuitivnimi uporabniškimi vmesniki, ki uporabnika vodijo skozi proces uporabe. Pogosto se uporabnik sploh ne zaveda, da aplikacija v ozadju uporablja verigo blokov.

Odličen primer decentralizirane aplikacije, kjer je enostavnost uporabe in pregleden uporabniški vmesnik izjemnega pomena, je sistem za elektronsko izvajanje volitev [62]. V okviru članka je bil razvit interaktiven uporabniški vmesnik, ki deluje na vseh najbolj razširjenih tipih naprav (mobilni telefoni, tablice, namizni računalniki).

Čeprav je večino opravkov že možno izvesti preko spleta, se volitve obi- čajno še vedno izvajajo fizično. Centraliziran sistem za volitve je dovzeten za prevare, zato se je bolj smiselno posluževati decentraliziranih sistemov [63], kjer lahko vsakdo pregleduje izvedene transakcije. Na ta način lahko volivci preverijo, ali je bil njihov glas uspešno oddan in upoštevan. Slika 2.3 predstavlja verigo blokov, kjer so modri krogi vozlišča v omrežju (validatorji), oranžni pravokotniki pa trije bloki. Zaradi dejstva, da se morajo vsa vozlišča v omrežju strinjati glede njegovega stanja (shranjene informacije), veriga blokov predstavlja zaupanja vreden transparenten medij za izvajanje volitev.

Verigo blokov lahko uporabniku približamo z inovativnimi uporabniškimi vmesniki. Predstavili smo že pristop, kjer so za to uporabili spletno stran za izvajanje volitev, možna pa je tudi uporaba mobilne aplikacije za ekono- mijo deljenja virov [64]. Svetovno znane aplikacije, ki to že omogočajo na centraliziran način so:

1. Uber – platforma za najem prevoza na zahtevo do željene lokacije,

(33)

2.3. UPORABNIŠKI VMESNIKI ZA INTERAKCIJO Z VERIGO

BLOKOV 15

Blok 3

Blok 2

Blok 1 Blok 3

Blok 2

Blok 1

Slika 2.3: Poenostavljena shema verige blokov – modri krogi so vozlišča, oranžni pravokotniki predstavljajo tri bloke.

2. AirBnB – platforma za najem nastanitev v lasti zasebnih uporabnikov, 3. JustPark – platforma za najem parkirnega mesta.

Slabost omenjenih platform je, da zahtevajo registracijo, kjer je obvezen vnos osebnih podatkov, poleg tega pa moramo za njihovo uporabo plačati (npr. pri rezervaciji in ponujanju nastanitve preko platforme AirBnB si pri- lastijo določen odstotek od cene najema). Elegantno rešitev omenjenih težav ponuja decentralizirana aplikacija, ki uporablja pametno pogodbo (glej sliko 2.4) za deljenje vsakodnevnih predmetov (kolo, kitara in podobni). Pri tem ni potrebna registracija in podajanje kakršnihkoli osebnih podatkov, prav tako ni potrebe po zaupanja vredni tretji osebi (angl. trusted third party, TTP).

Pametna pogodba vsebuje 4 ključne funkcije. Funkcijaustvari se pokliče ob kreiranju pametne pogodbe. Pošiljatelj transakcije postane hkrati tudi lastnik pogodbe. Funkcijaregistriraj se uporablja za dodajanje novega pred- meta – definirati moramo njegov opis, dnevno ceno najema, zahtevan polog in nekaj ostalih parametrov. Funkcijanajemi omogoča ostalim uporabnikom najem predmetov. Transakcija uspe le, če najemnik v transakciji pošlje vsaj toliko kriptovalute ETH, kot je zahtevan polog in, če je predmet ob času transakcije še na voljo. Funkcijapovrni omogoča lastniku pametne pogodbe vrnitev najetega predmeta. Pri tem se izračuna celotna cena najema, ki se

(34)

najemnik

Ethereum odjemalec 3. najemi

Ethereum veriga blokov lastnik

1. ustvari 2. registriraj

4. povrni Ethereum

odjemalec

pametna pogodba

Slika 2.4: Pametna pogodba za decentralizirano deljenje vsakdanjih pred- metov.

pošlje na račun lastnika.

Glede na naravo opisane aplikacije je najbolj smiselna mobilna platforma.

V okviru članka so razvili prototip Android aplikacije, ki najemnikom omo- goča najem vsakdanjih predmetov tako, da skenirajo QR kodo na premetu.

Po uspešnem branju kode se odprejo podrobnosti predmeta in cena najema.

S klikom na gumb Rent object uporabnik s pomočjo pametne pogodbe na- jame predmet (glej sliko 2.5).

2.4 Analiza videotokov z metodami umetne in- teligence

Video kamere, ki so zmožne zajemati dobro kvaliteto posnetka, so postale cenovno dostopne marsikomu [65]. To je povzročilo njihovo množično upo- rabo za nadzorne sisteme. Videotok, ki nastaja kot rezultat neprestanega snemanja, je pogosto potrebno analizirati v realnem času, da zaznamo in identificiramo različne objekte. Prav zaznava objektov je običajno vstopna točka za vse zahtevnejše nadaljnje analize. Te lahko vključujejo razpoznavo obrazov, registrskih tablic, trenutnih vremenskih razmer, oceno optimalnosti delovnih pogojev in analizo trendov. Procesiranje videotokov je proces, ki

(35)

2.4. ANALIZA VIDEOTOKOV Z METODAMI UMETNE

INTELIGENCE 17

Slika 2.5: Najem predmeta preko mobilne aplikacije.

zahteva računsko, omrežno in podatkovno zmogljive sisteme. Oblačne sto- ritve so zmožne nuditi zahtevane vire, zato se večina procesiranja dogaja tam.

Iz videotokov lahko razberemo dogodke in razpoznamo vedenje [66]. Pre- mikajoči se objekti niso nujno zanimivi za končnega uporabnika, saj se v naravnem svetu veliko stvari premika brez posebnega pomena (ptice, premi- kanje dreves v vetru). Običajno nas bolj zanimajo premiki, ki niso naravnega izvora – prihod neznane osebe ali vozila, odpiranje vrat ali premiki delovnih strojev. Za ta namen potrebujemo robustne pristope, ki so zmožni ločiti med pomembnimi in nepomembnimi premiki. Prav tako morajo delovati dobro v okoljih, kjer je zaradi zunanjih pojavov (dež, sneg, prah na leči kamere) otežena analiza videotoka.

Pametni nadzorni sistemi postajajo ključni del koncepta pametnih mest

(36)

[67], hkrati pa porajajo dvome v varnost sistema. Če jih primerjamo s klasič- nimi nadzornimi sistemi, ki so običajno realizirani kot monolitna aplikacija, pametni nadzorni sistemi omogočajo večjo skalabilnost in delujejo na decen- traliziran način za zagotavljanje analize velike količine podatkov iz naprav na robu. Če algoritme za analizo videotokov razdelimo na več med seboj neod- visnih mikrostoritev, lahko izboljšamo dostopnost in robustnost sistema. S pomočjo verige blokov lahko dosežemo varno sinhronizacijo podatkovnih baz med posameznimi mikrostoritvami, hkrati pa dosežemo varnost podatkov v nezaupnem omrežju. Pametna pogodba omogoča avtorizacijo uporabnikov in ponuja skalabilno in decentralizirano rešitev za omejevanje dostopa pametnih nadzornih sistemov.

V literaturi smo zasledili tudi pristope, ki namesto visokozmogljivih raču- nalnikov uporabljajo vgrajene sisteme, ki imajo omejene računske vire [68].

Kljub temu so zmožni razpoznati stoječa vozila in neželene objekte na avto- cestah s 6-sekundno zamudo, kar je sprejemljiv čas za upravitelja avtocest.

Sistem se je izkazal za uporabnega pri detekciji prometnih nesreč, saj že v 3 sekundah po nesreči zazna potencialen stoječ objekt (poškodovan avtomobil), v naslednjih treh pa z veliko gotovostjo zazna stoječe vozilo, kar samodejno sproži alarm in aktivira ustrezne intervencijske enote.

2.5 Decentraliziran spletni vmesnik za oblačno analizo videotokov

Po pregledu znanstvene literature smo umestili naše delo v širši kontekst član- kov iz področij, ki jih pokriva ta magistrska naloga – verige blokov, razvoja decentraliziranih aplikacij, ekosistemov metod umetne inteligence, modelov virov, integracije umetne inteligence in verige blokov, prerokov, pametnih pogodb in analize videotokov. Glavne novosti magisterija so izpostavljene v podpoglavjih 2.5.1, 2.5.2, 2.5.3 in 2.5.4.

(37)

2.5. DECENTRALIZIRAN SPLETNI VMESNIK ZA OBLAČNO

ANALIZO VIDEOTOKOV 19

2.5.1 Decentraliziran trg metod umetne inteligence

Umetna inteligenca odpira nove možnosti za napredno obdelavo podatkov na praktičnih domenah vsakdanjega življenja. Trenutni mehanizmi za distri- bucijo metod umetne inteligence so GitHub repozitoriji, akademske spletne strani in komercialni portali, vsem pa je skupno, da vsebujejo kar nekaj pomanjkljivosti. GitHub repozitoriji in akademske spletne strani ne ponu- jajo možnosti monetizacije. Postopki namestitve, konfiguracije in zagona so pogosto zahtevni in jih lahko izvedejo le strokovnjaki na tem področju. Ob- stoječi komercialni portali (Agorai, Algorithmia, OVHcloud AI, GravitzAI, SingularityNET in drugi) so večinoma centralizirani in kontrolirani s strani enega podjetja. Motivi uporabnikov portala in njenega upravitelja se lahko drastično razlikujejo, kar privede do konfliktov in enotne točke odpovedi.

Metode umetne inteligence, ki so objavljene na takih portalih, pogosto ne vsebujejo najnovejših znanstvenih dosežkov, ki jih raziskovalci objavljajo v GitHub repozitorije ali na raziskovalne spletne strani.

Obstoječe rešitve vsebujejo omenjene pomanjkljivosti, ki jih želimo v tej magistrski nalogi izboljšati ali odpraviti. V ta namen predstavimo napredni decentraliziran trg metod umetne inteligence z namenom pritegniti različne akterje, kjer vsak prispeva svoj delež k delovanju celotnega ekosistema. Raz- vijalci metod umetne inteligence lahko objavljajo najnovejše in najbolj izpo- polnjene modele, ki so jih razvili v laboratorijih. Čas od zaključka razvoja metode do njene množične uporabe iz strani uporabnikov je na ta način precej krajši. Ponudniki infrastrukture poskrbijo za to, da imajo metode zagoto- vljeno zmogljivo izvajalno okolje z grafičnimi karticami, velikimi količinami delovnega pomnilnika in hitrimi procesorji. Predstavljen sistem je decentra- liziran, kar pomeni, da je dosti bolj transparenten in zaupanja vreden kot sistem, kjer je v ozadju le eno podjetje.

(38)

2.5.2 Transparentna in zaupanja vredna interakcija med akterji

Transparentnost obstoječih centraliziranih sistemov, ki jih upravlja eno pod- jetje, je pogosto majhna. Uporabniki nimajo celotnega pregleda nad tem, katere operacije so se v sistemu zgodile. Tak vpogled imajo običajno le sis- temski administratorji. Grajenje zaupanja v sistem je dolgoročen postopek, ki pa ga lahko olajšamo ali pohitrimo z uporabo decentraliziranih sistemov.

Njihova pomembna konkurenčna prednost je nespremenljivost podatkov, ko so enkrat zapisani na verigo blokov. Oboji, centralizirani in decentralizirani sistemi imajo svoje prednosti in slabosti. V centraliziranih sistemih upravi- telj sistema zaračunava transakcijske stroške, kar ga tudi motivira, da zago- tavlja visoko kvaliteto delovanja storitev, stalno dopolnjuje funkcionalnosti in razrešuje morebitne konflikte med najemniki in ponudniki modelov ume- tne inteligence. V decentraliziranem sistemu so vsi navedeni cilji prav tako dosegljivi, vendar z večjo porabo energije in časa, saj morajo vse spremembe doseči strinjanje vseh vozlišč v verigi blokov. Trenutni algoritmi porabljajo veliko energije [69], vendar je velika verjetnost, da se bodo v prihodnosti izboljšali.

Ker je sistem razvit v tej magistrski nalogi decentraliziran, stremimo k temu, da si s tem pridobimo večje zaupanje uporabnikov v sistem in med uporabniki samimi (kupec zaupa prodajalcu). Zaradi uporabe verige blokov so uporabniki lahko prepričani, da so njihovi podatki nespremenljivi. Vse transakcije so javno vidne z orodji za analizo transakcij (npr. Etherscan).

2.5.3 Zaupanja vredni podatki in upravljanje z meto- dami umetne inteligence

S hitrim napredkom informacijske tehnologije lahko uporabniki in organiza- cije pridobijo in obdelujejo podatke iz različnih virov. Pri tem je pomembno, da zagotovimo integriteto podatkov, saj le na ta način lahko iz njih izluščimo smiselne ugotovitve [70]. V zadnjih letih se je pojavil koncept pametne pro-

(39)

2.5. DECENTRALIZIRAN SPLETNI VMESNIK ZA OBLAČNO

ANALIZO VIDEOTOKOV 21

izvodnje, ki s pomočjo velike količine podatkov v realnem času ustvarja po- slovno inteligenco in dodano vrednost podjetju. Poslovanje takih podjetij je pogosto odvisno od kvalitetnih podatkov. Pri njihovi obdelavi se poslužujejo konceptov velikih podatkov, strojnega učenja, naprednih simulacij in inter- neta stvari [71]. Pridobljeni podatki običajno potujejo skozi cevovod (angl.

pipeline), ki poskrbi za združevanje podatkov iz večih virov in shranjevanje v ustrezno podatkovno zbirko, kjer so podatki obdelani [72].

Tok podatkov v aplikaciji StreamAI, ki smo jo razvili v okviru magistr- ske naloge, obsega več stopenj. Pretok podatkov se dogaja v skoraj realnem času. Nadzorna kamera na terenu pošilja videotok Docker vsebniku, ki vse- buje izbrano metodo umetne inteligence. Ta obdela vsako sličico videotoka in MQTT strežniku posreduje zaznave na posnetku. Podatki se na poti trans- formirajo glede na potrebe njihovega odjemalca.

Pomemben vidik podatkov je tudi njihovo upravljanje in varovanje [73].

Če gledamo na metodo umetne inteligence kot na podatek v sitemu do ka- terega lahko dostopajo uporabniki, je pomembno, da je vsak uporabniški dostop reguliran. To v StreamAI rešujemo s pomočjo prerokov, ki so zmo- žni pridobiti zunanje podatke in jih zapisati na verigo blokov. Uporabniki so lahko prepričani, da so ti podatki resnični, saj je bilo za njihov zapis potrebno strinjanje deležnikov v verigi blokov.

2.5.4 Hitre in poceni P2P transakcije

S pomočjo tehnologije veriženja blokov lahko hitro in nevtralno obdelujemo transakcije. Hitrost delovanja decentraliziranih aplikacij je v veliki meri odvi- sna od hitrosti delovanja Ethereumove mreže [74]. Tekom razvoja aplikacije običajno uporabljamo testna omrežja, ki se razlikujejo po načinu delovanja.

Testno omrežje Ropsten se obnaša kot glavna mreža (angl. main-net) in uporablja konsenzusni protokol dokaza o delu (angl. Proof-of-Work, PoW).

Testni omrežji Kovan in Rinkeby uporabljata konsenzusni protokol dokaza o avtoriteti (angl. Proof-of-Authority, PoA).

Dejstvo je, da so transakcije na verigi blokov počasnejše kot centralizirane

(40)

podatkovne baze, saj mora veriga blokov izvesti večje število operacij, da se transakcija dejansko izvede. Tri pomembne operacije, ki se morajo izvesti so:

preverjanje podpisa, konsenzusni mehanizmi in redundanca [75]. Vsekakor pa se moramo zavedati, da ima veriga blokov veliko prednost pri zagota- vljanju zanesljivega, varnega in robustnega načina za shranjevanje podatkov brez potrebe po intervenciji tretje osebe. Glede na vse izpostavljene predno- sti verige blokov, cena transakcij in nekoliko počasnejše delovanje sistema v določenih aplikacijskih domenah ne igrata tako velike vloge.

(41)

Poglavje 3

Zahteve po decentraliziranem ekosistemu

Tradicionalni informacijski sistemi, ki omogočajo organizacijam sodelovanje med uporabniki in deljenje informacij ter virov, se soočajo s pomanjklji- vostmi, kot sta varnost in transparentnost delovanja [76]. Zaradi tega mnoga podjetja že razvijajo decentralizirane alternative, ki z verigo blokov poskrbijo za nespremenljive in zaupanja vredne podatke, ne da bi se morali zanašati na osrednjo entiteto. V tem poglavju opišemo, zakaj je uporaba decentralizira- nega sistema smiselna iz različnih vidikov na konkretnem primeru aplikacije StreamAI.

3.1 Transparentnost

Transparentnost v programskem inženirstvu definiramo kot stopnjo, do ka- tere lahko zainteresirane strani (razvijalci programske opreme, projektni vodje, stranke in končni uporabniki) odgovorijo na svoja vprašanja z uporabo infor- macij, ki jih pridobijo o programskem sistemu v njegovem življenjskem ciklu [77]. Omenjena definicija sloni na treh atributih:

1. Dostopnost (angl. accessibility). Ta pojem se pojavlja v inžinirskih pa- nogah, med drugim v inženirstvu zahtev [78, 79], spletnih portalih [80]

23

(42)

in interakciji človek-računalnik [81, 82]. Pogosto dostopnost aplikacije povezujemo z njeno uporabnostjo. Doseči želimo, da jo lahko upora- bljajo različni profili uporabnikov, ne da bi pri tem imeli večje težave pri njenem razumevanju. Dostopnost predstavlja enega najpomemb- nejših atributov transparentnosti, saj morajo uporabniki najprej priti do podatkov, če želijo oceniti njihovo uporabnost. Ko je dostop uspe- šno pridobljen, lahko ocenjujemo še ostala dva atributa – razumljivost in ustreznost.

2. Razumljivost (angl. understandability). Ko uporabniki uspešno prido- bijo podatke, jih morajo razumeti. Če so podatki kompleksni, jih je preveč ali niso na voljo orodja za njihovo vizualizacijo in obdelavo, se lahko uporabnost programskega sistema drastično zmanjša [83]. Po- dročja, ki jih pokriva razumljivost so konceptualno modeliranje [84], dokumentacija [85] in inžinirstvo zahtev [86]. Pomen razumljivosti na transparentnost je velik, saj v primeru pomanjkanja razumljivosti upo- rabniki ne morejo oceniti, če informacija odgovarja na njihovo vpraša- nje.

3. Ustreznost (angl. relevance). Če uporabniki razumejo podatke, se poraja vprašanje, kako dobro te podatki odgovorijo na njihovo vpra- šanje. Sprašujemo se, kako hitro lahko uporabniki najdejo odgovor na vprašanje in kako tesno so podatki povezani z zastavljenim vprašanjem [87]. Zanima nas tudi, če so pridobljeni podatki na vprašanje odgovorili delno ali v celoti.

Z zavedanjem, da uporabniki potrebujejo čim večjo transparentnost sis- tema, lahko prilagodimo izbor tehnologij, ki nam to delo olajšajo ali impli- citno rešijo brez dodatnega napora. Odličen primer, kjer je transparentnost velika dodana vrednost, je gastronomski turizem [88]. Turistične destinacije in ponudniki, ki želijo delovati v kontekstu pametnega turizma, si morajo la- stiti najnovejšo tehnologijo. Ta poskrbi za garancijo, da so lokalni produkti originalni in preverjenega izvora. To lahko dosežemo z uporabo verige blo-

(43)

3.1. TRANSPARENTNOST 25

kov, ki vsebuje podatke o celotni verigi dobave izdelka. Vsak člen v dobavni verigi je opremljen z GPS sledilnikom, ki oddaja podatke o lokaciji izdelka.

Sistem vsebuje tudi naprave, ki zaznavajo optimalnost razmer shranjeva- nja. Kot rezultat je nastal sistem, kjer imajo uporabniki kljub kompleksnosti produkcijskega in distribucijskega okolja dostop do razumljivih podatkov, ki odgovorijo na njihova vprašanja o izvoru izbranega artikla.

Sistem StreamAI v določeni meri prav tako implementira zgoraj naštete atribute transparentnosti, kar pripomore k večjemu zaupanju uporabnikov v sistem. Atribute transparentnosti smo v StreamAI implementirali na nasle- dnji način:

1. Dostopnost. Vsi tipi uporabnikov imajo dostop do podatkov, ki so shra- njeni na verigi blokov. V našem primeru lahko kot podatke smatramo metode umetne inteligence, katerih metapodatki so shranjeni na verigi blokov in so enostavno dostopni preko uporabniškega vmesnika aplika- cije. Tam je med drugim možno pregledovati oznako javne Docker slike iz repozitorija Docker Hub, ceno najema na minuto, avtorja, potrebno količino delovnega pomnilnika, potrebno število procesorskih jeder in opis uporabe ter delovanja. Na enem mestu imajo uporabniki na voljo nespremenljive podatke o metodi umetne inteligence.

2. Razumljivost. Podatki niso zahtevni za razumevanje in naj bi bili razu- mni že osebi z osnovnim računalniškim znanjem. Pri vsakem podatku je zapisana tudi merska enota (npr. megabajt – MB), da ne pride do dvoumnosti pri interpretaciji.

3. Ustreznost. Ocenjujemo jo lahko predvsem za opis in uporabo me- tode umetne inteligence. Tam mora njen ustvarjalec natančno in na- zorno opisati namen metode, kakšen vhod pričakuje, kakšen je format izhodnih podatkov, kakšne so njene omejitve in dodatne opombe, ki koristijo bodočemu porabniku.

(44)

3.2 Sledljivost

V literaturi se transparentnost in sledljivost pogosto uporabljata v podobnem kontekstu, nemalokrat ju tudi nevede zamenjujemo. Končnemu kupcu oba pojma odgovarjata na vprašanje: "Kakšen je izvor izdelka, od kod prihaja?".

V članku [89] so avtorji analizirali 101 znanstven članek iz področja sle- dljivosti. Zanimivo je, da kar 35 % člankov ni navedlo njene natančne defi- nicije, ker so jo vzeli za samoumevno. Od člankov, ki so navedli definicijo, jih je 66 % navedlo eno definicijo, medtem ko so ostali navedli več defini- cij. To kaže na zelo širok spekter pomenov, ki je lahko drugačen glede na področje programskega inženirstva. Standard ISO 8402 definira sledljivost kot: Sposobnost sledenja zgodovini, uporabi ali lokaciji subjekta s pomočjo zabeleženih identifikacij. Članek [90], eden izmed najbolj citiranih iz podro- čja sledljivosti, postavi naslednjo definicijo: Sledljivost je zmožnost sledenja serije izdelkov in njene zgodovine skozi celotno verigo ali njen del od žetve do transporta, skladiščenja, predelave, distribucije in prodaje.

Sledljivost lahko predstavimo na primeru celotne dobavne verige lokalno pridelane hrane. Ta vključuje več členov (po vrsti od izvora do cilja) [91]:

1. Ponudnik – ponuja surove materiale, kot so semena, gnojila in pesticidi.

2. Proizvajalec – običajno kmetovalec, ki je zadolžen za setev in obiranje pridelkov.

3. Predelovalec – zadolžen za več opravil, od pakiranja do razkoščičevanja sadja.

4. Distributer – zadolžen za transport artikla od predelovalca do trgovca.

5. Trgovec – zadolžen za prodajo izdelka v majhnih trgovinah ali večjih nakupovalnih centrih.

6. Porabnik – zadnji člen v verigi, ki zaužije kupljen artikel.

(45)

3.3. REGULACIJA DOSTOPA DO VIROV 27

Transparentnost zajema visokonivojske informacije glede dobavne verige – komponente izdelka, imena dobaviteljev, lokacije skladišč in morebitne pri- dobljene certifikate [92]. Z uporabo transparentnih pristopov lahko podjetja identificirajo vse dobavitelje vseh komponent izdelka vse do njihovega izvora (npr. njive na Kitajskem). Na ta način lažje dosegajo skladnost z varnostnimi načeli, delujejo trajnostno in ravnajo družbeno odgovorno [93, 94, 95]. Sle- dljivost zajema dosti bolj podrobne podatke o sestavini ali komponenti. Te lahko vključujejo datum setve in nabiranja, podatke o naročilnici in druge operativne informacije. Proces ni toliko osredotočen na dokumentiranje in- formacij različnih akterjev (podjetij, distributerjev in porabnikov), ampak na sledenju določenih serij sestavin med njihovo potjo skozi dobavno verigo. Za razliko od transparentnosti je sledljivost težje dosegljiva zaradi podrobnosti informacij, ki so potrebne. Sisteme, ki zagotavljajo sledljivost, je težje ska- lirati [96]. Prav tako je potreben večji poseg v že obstoječ sistem, kar lahko predstavlja velike stroške.

Aplikacija StreamAI uporabnikom omogoča sledljivost. V veliki meri je to že samodejno podprto s pomočjo verige blokov, kjer so javno zapisane vse transakcije v sistemu. Dober primer, kjer se sledljivost pokaže kot uporabna, je pri najemu metode umetne inteligence. Razvijalec metodo najprej doda v sitem, pri tem določi ime metode, potreben pomnilnik in druge parametre.

Končni uporabnik najame metodo za določen čas. Po zakupljenem času se metoda sama ustavi. Vsi opisani koraki so zabeleženi na verigi blokov. Vidna je celotna sled metode umetne inteligence, od trenutka, ko jo je razvijalec dodal na platformo, do trenutka, ko je potekel čas zakupa in se je vsebnik samodejno zaustavil.

3.3 Regulacija dostopa do virov

Informacijski sistemi, s katerimi si podjetja pomagajo pri poslovanju, običaj- no operirajo z veliko količino informacij. Podatki morajo biti visoke kvalitete, kar pomeni, da so natančni, popolni, konsistentni, dostopni in relevantni [97].

(46)

Količina podatkov s časom eksponentno narašča. Hraniti moramo tako stare kot nove podatke. Neavtoriziran dostop do podatkov bi lahko pomenil veliko poslovno izgubo in izdajo tajnih informacij.

Da se izognemo takim incidentom, morajo sistemi implementirati napre- dne varnostne metode, s katerimi omogočajo dostop do podatkov le avtorizi- ranim uporabnikom. Pri tem moramo razlikovati med avtentikacijo, s katero preverimo, kdo je uporabnik, in avtorizacijo, ki preverja, do katerih virov v sistemu lahko uporabnik dostopa [98]. Sistemi za nadzor dostopa iz podro- čja računalniške varnosti se uporabljajo za omejevanje dostopa do virov v sistemu, kot so podatki, storitve, računalniški sistemi in pomnilniki za shra- njevanje podatkov. Ko uporabnik zahteva vir, se znotraj konteksta zahteve preveri, če ima uporabnik do njega dostop.

Tehnologijo verige blokov lahko uporabimo za predstavitev pravic dostopa do virov in možnosti prenosa pravic iz enega uporabnika na drugega [99]. Tak pristop ima sledeči prednosti:

1. Pravico dostopa do vira je enostavno prenesti iz enega uporabnika na drugega znotraj transakcije. Transakcijo ustvari uporabnik, ki si tre- nutno lasti pravico.

2. Uporabnik lahko ustvari novo pravico dostopa do vira, za kar mora oddati transakcijo na verigo blokov. Vsi prenosi lastništva pravice so prav tako zabeleženi. Vsak lahko preveri, kdo je trenutno lastnik neke pravice in na koga se mora obrniti, če želi izvesti njen prenos.

Omejevanje dostopa do virov v aplikaciji StreamAI lahko prikažemo na primeru najema metode umetne inteligence. Ob objavi metode na spletni strani lahko razvijalec označi, da imajo do metode dostop samo določeni uporabniki, ki jih izbere v naslednjem koraku. Ko končni uporabnik potrdi najem metode umetne inteligence za določen čas, se pred namestitvijo Docker vsebnika preveri, ali ima trenutni uporabnik pravico za zagon te metode. To dosežemo s pomočjo preroka, ki iz zunanjega REST API strežnika pridobi

(47)

3.4. SODELOVANJE UPORABNIKOV V EKOSISTEMU 29

binarni odgovor in ga zapiše v transakcijo. Če je odgovor strežnika pritr- dilen, nadaljujemo z zagonom metode, v nasprotnem primeru uporabniku prikažemo napako o neavtoriziranem dostopu.

3.4 Sodelovanje uporabnikov v ekosistemu

Podjetja, ki delujejo kot posredniki med kupci in prodajalci, se soočajo s temeljno strateško odločitvijo. Ali naj poslujejo kot preprodajalci (npr. tr- govine z živili), ki izdelke najprej kupijo in jih prodajo z maržo? Ali naj delujejo kot večstranske platforme (angl. multisided platform, MSP), kjer si ne lastijo izdelkov, ampak služijo kot stičišče med kupci in prodajalci, pri tem pa od vsakega nakupa dobijo provizijo? Ali naj združijo oba poslovna modela [100]?

AirBnB, Google, Uber, Facebook in Amazon so primeri podjetij, ki so brez večjih produktnih ali procesnih inovacij uspela zamajati obstoječe in- dustrije. Omenjena podjetja temeljijo na modelu platforme, kjer povezujejo različne skupine uporabnikov. Temeljni karakteristiki večstranskih platform sta [101]:

1. Vsaka skupina udeležencev predstavlja stranke večstranske platforme.

2. Večstranske platforme omogočajo neposredno interakcijo med udele- ženci.

Za lažje razumevanje konceptov so na sliki 3.1 predstavljeni različni tipi posrednikov med kupci in prodajalci. Produktna platforma krši prvo karak- teristiko, saj končni kupec ni stranka platforme in ni povezan z njo. Model preprodajalca izpolnjuje prvo katakteristiko, krši pa drugo, saj ni direktne interakcije med različnimi udeleženci. Večstranska platforma pa izpolnjuje obe.

StreamAI je večstranska platforma, ki različnim tipom uporabnikov omo- goča neposredno interakcijo. Prodajalci (razvijalci metod umetne inteligence in ponudniki infrastrukture) na platformi ponujajo svoje izdelke ali storitve,

(48)

produktna platforma

stran A

stran B prodaja dela

izdelka

prodaja končnega izdelka

stran A

preprodajalec

stran B prodaja dobrin

ali storitev

prodaja dobrin ali storitev

stran A

večstranska platforma

stran B članstvo

članstvo

neposredna interakcija

Slika 3.1: Umestitev produktne platforme, preprodajalca in večstranske platforme med kupce in prodajalce.

kupci pa jih lahko najamejo za določen čas. Platforma služi le kot vmesni člen, ki združuje različne tipe uporabnikov na enem mestu. Ponuja raznolike storitve in vključuje širok nabor uporabnikov z različnimi potrebami. To dejstvo je v prid prodajalcem, ki lahko pričakujejo, da bojo stranke izrazile zanimanje za njihove storitve, in kupcem, ki bodo zaradi širokega spektra storitev našli tisto, ki ustreza njihovim zahtevam.

(49)

Poglavje 4

Ključne tehnologije

Na podlagi prebrane literature in sorodnih aplikacij smo se odločili za upo- rabo najprimernejših programskih jezikov, ogrodij, knjižnic in pristopov za reševanje zastavljenega cilja – implementacija platforme za analizo video- tokov s pomočjo vsebnikov, kjer različni deležniki v sistemu ponujajo vire, jedro sistema pa predstavlja pametna pogodba na verigi blokov Ethereum, ki za avtorizacijo uporabnikov uporablja preroka (angl. oracle).

Aplikacija je v grobem sestavljena iz treh delov:

1. Verige blokov, ki omogoča decentralizirano izvajanje funkcij in hranje- nje podatkov. Pametna pogodba uporablja tudi preroka za pridobiva- nje podatkov iz zalednega sistema za avtorizacijo dostopa do virov.

2. Zalednega dela, ki izpostavlja REST API vmesnik za pridobivanje po- datkov iz PostgreSQL podatkovne baze v obliki JSON objektov.

3. Čelnega dela, ki uporabniku ponuja pregleden in interaktiven uporab- niški vmesnik za analizo videotokov. Administratorjem ponuja tudi upravljanje z nastavitvami platforme in vizualizacijo obremenjenosti vozlišč v Kubernetes gruči.

Aplikacija se poganja v Docker vsebniku, orkestrira pa se s pomočjo Ku- bernetesa. Ob kreiranju oznake na Githubu se aplikacija samodejno namesti v produkcijsko okolje s pomočjo GitHub Actions.

31

(50)

4.1 Veriga blokov

4.1.1 Ethereum in pametne pogodbe

Ethereum je projekt, čigar namen je zgraditi generalizirano tehnologijo, na kateri je mogoče zgraditi vse koncepte končnega avtomata, ki v osnovi te- meljijo na transakcijah [102]. Nastal je v času, ko so ljudje že spoznali moč Bitcoina in so želeli preseči njegove omejitve pri razvoju aplikacij na verigi blokov. Bitcoin ima skop nabor tipov transakcij, podatkovnih tipov in ve- likosti podatkov, ki jih lahko hrani. Število aplikacij, ki so lahko delovale izključno z verigo blokov, brez podatkov izven nje, je zato bilo majhno. Pro- jekti, ki so potrebovali več svobode in fleksibilnosti pri razvoju, predvsem s ciljem, da se vse dogaja na verigi blokov, so potrebovali novo rešitev. Izkazalo se je, da je za to potrebna nova kriptovaluta – Ethereum [103].

Pojem pametnih pogodb je definiral strokovnjak za kriptografijo Nick Szabo v [104], kjer je opisal možnost računalniškega izvajanja pogodb med dvema strankama brez potrebe po tretji osebi:

Pametne pogodbe so nabor obljub, vključujoč protokole, znotraj katerih stranke izvajajo druge obljube. Protokoli so običajno im- plementirani s programi na računalniškem omrežju ali v drugih oblikah digitalne elektronike, zato so te pogodbe pametnejše od svojih papirnatih prednikov.

Dandanes večina pojem pametne pogodbe povezuje z nespremenljivim determinističnim računalniškim programom, ki teče v kontekstu Ethereu- movega navideznega stroja (EVM) kot del Ethereumovega omrežnega proto- kola (decentraliziranega Ethereumovega svetovnega računalnika). Razložimo zgornjo definicijo po delih:

1. Računalniški program. Pametne pogodbe so običajni računalniški pro- grami, ki jih največkrat pišemo v programskem jeziku Solidity. Beseda pogodba nima nobenega legalnega pomena.

(51)

4.1. VERIGA BLOKOV 33

2. Nespremenljivost. Ko je pametna pogodba postavljena na verigo blo- kov, je ni več možno spremeniti, kar je v modernem programskem in- ženirstvu neobičajno. Če jo želimo popraviti ali nadgraditi, jo moramo ponovno namestiti, pri tem pa dobi tudi nov naslov, kjer je dostopna.

3. Determinizem. Rezultat klica neke funkcije iz pametne pogodbe je enak za vse, ki jo pokličejo. To drži ob predpostavki, da sta enaka kontekst transakcije, ki je sprožila klic funkcije in stanje verige blokov v trenutku izvedbe.

4. Kontekst Ethereumovega navideznega stroja. Pametne pogodbe se iz- vajajo v izoliranem okolju, kjer imajo dostop samo do svojih podatkov, podatkov o transakciji in nekaj splošnih podatkov o verigi blokov (npr.

številka zadnjega bloka).

5. Decentraliziran svetovni računalnik. EVM se izvaja na vsakem vozlišču Ethereuma, vendar si vsa delijo začetno stanje verige blokov. Pričako- vano je, da vsa vrnejo enak rezultat.

Valuta, ki jo uporablja Ethereum, se imenuje eter (ETH, simbolΞ). Pro- tokol jo podeljuje rudarjem kot nagrado za dodajanje blokov. To jih spodbuja k temu, da nadaljujejo s procesiranjem novih transakcij. Vsak Ethereumov račun ima unikaten naslov, sestavljen iz 42 heksadecimalnih znakov, začenši z 0x (npr. 0x71C7656EC7ab88b098defB751B7401B5f6d8976F). Ima ETH sta- nje, ki ga lahko pošilja drugim računom. Najmanjša podenota valute ETH je Wei, ki je enak 10−18 ETH. Poznamo dve vrsti računov, uporabniške račune in pogodbe. Obe vrsti imata ETH stanje, lahko prenašata sredstva na druge račune, kličeta funkcije v pogodbah ali ustvarjata nove pogodbe. V omrežju se na njiju sklicujemo glede na njun naslov.

Transakcije lahko ustvarjajo le uporabniški računi. Veljavne so, če so pod- pisane s privatnim ključem računa. Le-ta je 64 znakov dolg heksadecimalni niz znakov, ki se uporabi za generiranje uporabniškega naslova z algoritmom ECDSA [105]. Ta omogoča pridobitev podpisovalčevega Ethereum naslova iz podpisa transakcije, ne da bi moral poznati njegov privatni ključ.

(52)

Pogodbe so poseben tip računov, saj hranijo tudi programsko kodo in omogočajo shranjevanje podatkov. Funkcije znotraj pogodbe lahko spreje- majo parametre in vračajo rezultat klicatelju. Znotraj telesa funkcije lahko izvajajo različne operacije – pošiljanje ETH na druge račune, aritmetične operacije, klice lastnih in zunanjih funkcij, ustvarjanje novih pogodb in pri- dobivanje informacij o trenutno aktivni transakciji. Napisane so v objektno- usmerjenem visokonivojskem programskem jeziku Solidity, ki je nastal pod vplivom jezikov C++, Python in JavaScript. Je statično tipiziran, podpira dedovanje, uporabo knjižnic in kompleksne tipe. Izvaja se na EVM.

Spodnja pametna pogodba prikazuje implementacijo zelo osnovne oblike kriptovalute. Oseba, ki je ustvarila pametno pogodbo, lahko ustvarja po- ljubno število novih kovancev. Vsakdo lahko pošilja kovance drugim brez potrebe po registraciji z uporabniškim imenom in geslom, potreben je samo Ethereum račun.

pragma solidity ^0.4.21;

contract Kovanec {

// ključna beseda "public" omogoča zunanji dostop do // spremenljivk

address public lastnik;

mapping (address => uint) public stanjaNaRacunu;

// dogodki (events) omogočajo odjemalcem odzivanje na // spremembe v pogodbi

event Poslano(address posiljatelj, address prejemnik, uint znesek);

// konstruktor se pokliče, ko se ustvari nova pogodba constructor() public {

// lastnik postane pošiljatelj transakcije lastnik = msg.sender;

(53)

4.1. VERIGA BLOKOV 35

}

function ustvari(address prejemnik, uint znesek) public { if (msg.sender != lastnik) return;

stanjaNaRacunu[prejemnik] += znesek;

}

function poslji(address prejemnik, uint znesek) public { if (stanjaNaRacunu[msg.sender] < znesek) return;

stanjaNaRacunu[msg.sender] -= znesek;

stanjaNaRacunu[prejemnik] += znesek;

emit Poslano(msg.sender, prejemnik, znesek);

} }

Da bi preprečili neskončno dolgo izvajanje operacij na računalnikih ru- darjev, se za izvajanje transakcij zaračunava plin (angl. gas). Ob ustvarjanju se za vsako transakcijo zaračuna določeno količino plina, katerega namen je omejiti količino dela, ki je potrebno za izvedbo transakcije in hkrati plačati za njeno izvajanje. Medtem ko EVM izvaja transakcijo, se plin postopoma porablja v skladu s pravili. Če plina zmanjka, se transakcija zavrne. Na- sprotno, če je plina preveč, se neporabljen del vrne pošiljatelju transakcije.

Plin ima dve komponenti, omejitev in ceno. Omejitev plina (angl. gas li- mit) predstavlja največjo količino plina, ki ga je pošiljatelj pripravljen plačati za potrditev transakcije. Najmanjša možna vrednost je 21000. Cena plina (angl. gas price) je število GWei (109 Wei), ki jih je pošiljatelj pripravljen zapraviti za vsako enoto plina.

4.1.2 Avtorizacija uporabnikov – prerok

Razvoj pametne pogodbe je drugačen kot razvoj aplikacije, ki deluje po prin- cipu strežnik – odjemalec. Ključna razlika je, da morajo biti podatki, s ka- terimi operira pametna pogodba, na voljo na verigi blokov. Podatkov ni

(54)

možno pridobiti iz drugih zunanjih virov. To ni le omejitev programskega jezika Solidity, ampak celotnega koncepta verige blokov.

Denimo, da razvijamo pametno pogodbo za pobiranje stav. Uporabniki lahko položijo stavo v poljubnem znesku. V primeru, da zmagajo, dobijo sorazmeren delež glede na njihov vložek. V primeru, da njihov favorit izgubi, izgubijo ves vložek. Pametna pogodba zbira stave v valuti ETH, jih shrani v pogodbo in ob zaključku tekme razdeli sredstva med poražence in zmagovalce.

Vendar, kako pogodba ve, kdo je zmagovalec? Zaradi omejitev ne more dostopati do podatkov izven verige blokov, ne more izvesti REST API klica na zunanji strežnik. Uporabiti mora le podatke, ki so na voljo na verigi blokov.

Rešitev se ponuja že sama po sebi – če lahko pametna pogodba dostopa le do podatkov na verigi blokov, jih moramo nekako zapisati nanjo. Ravno to je naloga prerokov. Ti so v osnovi prav tako pametne pogodbe, ki zapisujejo podatke na verigo blokov in tako ostalim pametnim pogodbam omogočajo dostop do njih. Interakcija med verigo blokov, prerokom in decentraliziranimi aplikacijami je predstavljena na sliki 4.1.

4.2 Zaledni del

4.2.1 Podatkovna baza – PostgreSQL

Shranjevanje večje količine podatkov na verigi blokov je drago, predvsem za- radi visok cen plina pri spreminjanju informacij v pametni pogodbi. Priporo- čljivo je, da v pametni pogodbi hranimo le podatke, ki jih ta nujno potrebuje za delovanje, saj s tem zmanjšamo ceno transakcij. Ostale podatke, ki jih je lahko poljubno veliko, je zaradi omenjenih razlogov bolje hraniti v zunanjih podatkovnih virih.

PostgreSQL je brezplačna in odprtokodna relacijska podatkovna baza, ki je kompatibilna s standardom SQL. Podpira traksakcije z ACID lastnostmi (atomarnost, konsistentnost, izolacija in trajnost), poglede, sprožilce, tuje ključe in shranjene procedure. Narejena je za obdelavo velike količine podat-

(55)

4.2. ZALEDNI DEL 37

veriga blokov

prerok

REST API

tržni podatki

IoT podatki

umetna inteligenca

decentralizirane aplikacije

Slika 4.1: Vloga preroka pri pridobivanju podatkov iz zunanjega sveta.

kov s sočasnimi uporabniki. Za vse znane programske jezike obstajajo tudi knjižnice, ki poenostavljajo dostop do PostgreSQL podatkovne baze.

Relacijska podatkovna baza predstavlja množico entitet, med katerimi že ob ustvarjanju definiramo relacije. Podatke predstavimo v obliki tabel s stolpci in vrsticami. Tabele vsebujejo podatke o objektih, ki jih hranimo v podatkovni bazi. Vsak stolpec tabele predstavlja določen podatek o entiteti.

Vsaka vrstica tabele lahko vsebuje enolični identifikator, ki ga imenujemo primarni ključ (PK). Vrstice iz različnih tabel lahko med seboj povežemo s tujimi ključi (FK).

Standardni način za poizvedovanje po relacijskih podatkovnih bazah je je- zik SQL. Uporablja se za dodajanje, posodabljanje ali brisanje vrstic. Ponuja tudi napredne mehanizme za poizvedovanje po tabelah, vračanje podmnožice stolpcev, združevanje tabel glede na ključe in ustvarjanje novih tabel ter baz.

Reference

POVEZANI DOKUMENTI

Edgecombe in sodelavci (2013) so v obsež- nem pregledu literature prepoznali šest ključnih področij, ki vplivajo na mednarodne izkušnje tujih študentov zdravstvene nege: težave

Sistemsko dinamična teorija razširja področje tera- pevtskega procesa, ki vključuje hkrati terapevta in pa- cienta v širši sistem, katerega omejitve lahko presega- ta

S tem namenom smo po pregledu literature sestavili vprašalnik za starše otrok glede motenj hranjenja in/ali požiranja, govornega razvoja, morebitnih glasovnih in

Po pregledu domače literature pa smo ugo- tovili, da je zapisov, ki obravnavajo sodelovanje med medicinskimi sestrami v primarnem, sekundarnem in terciarnem zdravstvenem varstvu

V okviru tega je nastala tudi ta magistrska naloga, v kateri so predstavljeni zakonodaja s področja odvajanja in čiščenja odpadnih vo d, lastnosti in sestave odpadnih vod, biološko

Po pregledu strokovne in poljudne literature, vezane na območje obdelave in seznanitvijo s projekti, s podobno prostorsko problematiko, delo na terenu, v arhivih, po sodelovanju z

Po pregledu literature smo izbrali nabor začetnih oligonukleotidov, ki se jih uporablja pri analizi mikrobnih združb z metodo T-RFLP in, ki nalegajo na vse ključne ohranjene regije

V okviru tega poglavja bodo predstavljene ključne ugotovitve, ki izhajajo iz znanstvene literature in se nanašajo na področje prehranskih in zdravstvenih trditev