• Rezultati Niso Bili Najdeni

Diplomsko delo visokošolskega strokovnega študija ć univ. dipl. inž. el. , univ dipl. inž. el.

N/A
N/A
Protected

Academic year: 2022

Share "Diplomsko delo visokošolskega strokovnega študija ć univ. dipl. inž. el. , univ dipl. inž. el."

Copied!
71
0
0

Celotno besedilo

(1)

Univerza v Ljubljani Fakulteta za elektrotehniko

Luka Levac

OPTIMIZACIJA KONCEPTA DELJENE PROIZVODNJE

Diplomsko delo visokošolskega strokovnega študija

Mentor: prof. dr. Maja Atanasijević-Kunc, univ. dipl. inž. el.

Somentor: asist. dr. Marko Corn, univ dipl. inž. el.

Ljubljana, 2021

(2)
(3)

Zahvala

Svoji mentorici prof. dr. Maji Anatasijević-Kunc se zahvaljujem za vse koristne napotke in strokovno pomoč pri pisanju tega diplomskega dela.

Prav tako bi se rad zahvalil asistentu dr. Marku Cornu in članom Laboratorija za digitalne sisteme in elektrotehniko (LDSE) Fakultete za strojništvo Univerze v Ljubljani, za vso podporo in pomoč pri spoznavanju tehnologij, uporabljenih v tem delu.

Nazadnje pa gre zahvala družini za vso podporo tekom študija ter pri pisanju tega dela.

(4)
(5)

Vsebina

Kazalo slik I

Seznam uporabljenih okrajšav III

Povzetek V

Abstract VII

1 Uvod 1

2 Deljena proizvodnja in bločno-verižna tehnologija 3

2.1 Deljena proizvodnja ... 3

2.2 Bločno-verižna tehnologija ... 5

2.3 Ethereum omrežje ... 9

2.3.1 Pametne pogodbe ... 11

2.3.2 Whisper protokol ... 13

2.3.3 Stranske verige Ethereum omrežja ... 14

2.3.4 Most med verigama blokov ... 15

3 Prilagodljiv okvir bločno-verižne deljene proizvodnje 17 3.1 Protokol ... 19

3.1.1 Odkritje storitve ... 19

3.1.2 Pogajanje ... 20

3.1.3 Transakcija ... 21

3.1.4 Evalvacija ... 22

3.1.5 Razširljiva rešitev ... 23

(6)

3.2 Uporaba P2P komunikacijskega protokola... 25

3.2.1 Pogajanje preko P2P komunikacije ... 26

4 Metodologija raziskave 29 4.1 Implementacija sistema ... 29

4.1.1 Pametne pogodbe ... 29

4.1.2 Stranska veriga blokov ... 33

4.1.3 Most med verigama blokov... 34

4.1.4 Whisper protokol ... 36

4.2 Testiranje ... 38

4.2.1 Testiranje pametnih pogodb ... 38

4.2.2 Meritve porabe goriva ... 39

4.2.3 Meritve časa pri Whisper implementaciji ... 40

5 Rezultati in diskusija 43

6 Zaključki 53

Literatura 55

(7)

I

Kazalo slik

Slika 1: Veriga blokov z vsemi pomembnimi podatki ... 6

Slika 2: Most med verigama - sekvenca ... 16

Slika 3: Vključevanje storitev v proizvodni nivo ... 18

Slika 4: Register ponudnikov... 19

Slika 5: Povpraševanje in ponudba ... 20

Slika 6: Časovni trak storitve ... 20

Slika 7: Postopek razreševanja dogovora po izvedbi storitve ... 22

Slika 8: Razširljiva implementacija ... 24

Slika 9: Hierarhija stranskih verig ... 24

Slika 10: Nadgradnja z Whisper protokolom ... 27

Slika 11: Whisper sekvenca sporočil ... 28

Slika 12: Orodje Puppeth ... 33

Slika 13: Shematski prikaz bloka ... 35

Slika 14: Grafični vmesnik mosta ... 35

Slika 15: Interakcija med denarnico in mostom ... 36

Slika 16: Testiranje pametne pogodbe dogovora... 39

Slika 17: MongoDB podatkovna baza ... 41

Slika 18: Poraba goriva za 1 storitev na vsak prenos med verigama... 45

Slika 20: Poraba goriva za 100 storitev na vsak prenos med verigama... 46

Slika 19: Poraba goriva za 10 storitev na vsak prenos med verigama... 46

Slika 21: Časi za fazo dogovarjanja... 48

Slika 22: Poraba goriva za 10 ponudnikov - whisper - - veriga ... 49

Slika 23: Poraba goriva za 100 ponudnikov - whisper -- veriga ... 50

Slika 24: Poraba goriva v fazi pogajanja - 10 ponudnikov ... 51

Slika 25: Poraba goriva v fazi pogajanja - 100 ponudnikov ... 52

(8)
(9)

III

Seznam uporabljenih okrajšav

Okrajšava Pomen

EVM Virtualno izvajalsko okolje Ethereum (ang.

Ethereum virtual machine)

ODP Omrežje deljene proizvodnje

SMP Protokol deljene proizvodnje (ang. Shared

Manufactoring Protocol)

SMS Storitev deljene proizvodnje (ang. Shared

Manufactoring Service)

APU Avtonomna proizvodna enota (ang. Autonomous

Production Unit)

IKT Informacijsko-komunikacijska tehnologija

ERP Načrtovanje sredstev podjetja (ang. Enterprise

resource planning)

MES Izvršilni sistem proizvodnje (ang. Manufacturing

execution system)

PSS Sistem izdelek-storitev (ang. Product-service

system)

CSS Sistem konfiguracija-storitev (ang. Configuration

-service system)

RSS Sistem viri-storitve (ang. Resource-Service

system)

IoT Internet stvari (ang. Internet of Things)

DDoS Porazdeljena ohromitev storitve (ang. Distributed

denial-of-service)

P2P Vzajemno omrežje (ang. Peer to peer)

ID Identifikacija

(10)

CPS Kiber-fizični sistemi (ang. Cyber-Physical Sys- tems)

PoA Dokaz o pooblastilu (ang. Proof of Authority)

PoS Dokaz o deležu (ang. Proof of Stake)

PoW Dokaz o delu (ang. Proof of Work)

API Programski vmesnik (ang. Application program

interface)

(11)

V

Povzetek

Deljena proizvodnja je tip proizvodnje, ki omogoča posameznikom neposredno sodelovanje s proizvodnimi procesi z uporabo vzajemne tehnologije. V diplomskem delu smo se osredotočili na koncept in implementacijo protokola deljene proizvodnje, ki temelji na bločno verižni tehnologiji z uporabo vzajemne komunikacije. Predstavili smo osnoven koncept protokola deljene proizvodnje, ki temelji na uporabi stranskih verig z namenom izboljšanja razširljivosti koncepta in uporablja pametne pogodbe Ethereum verižno bločne tehnologije. Sledi naša izboljšava protokola, pri kateri predlagamo uporabo vzajemne komunikacije v kombinaciji s pametnimi pogodbami. S predlagano izboljšavo smo ciljali na optimizacijo protokola iz časovnega in finančnega vidika. Implementirali in preizkusili smo obe izvedbi protokola. Za izvedbo vzajemne komunikacije smo uporabili protokol Whisper, ki prav tako temelji na Ethereum verižno bločni tehnologiji. Rezultati so potrdili, da se z uporabo vzajemne komunikacije da koncept pohitriti in prav tako, da taka implementacija tudi dodatno zmanjša zasičenost omrežja verižno bločne tehnologije.

Ključne besede: deljena proizvodnja, veriga blokov, vzajemna tehnologija, Ethereum, Whisper protokol

(12)
(13)

VII

Abstract

Shared manufacturing allows individuals to participate directly in manufacturing processes through peer-to-peer collaborations. In this thesis, we focused on the concept of shared manufacturing protocol based on blockchain technology using peer to peer communication. We present scalable framework for blockchain-based shared manufacturing that is solely relying on the use of smart contracts. Next, we propose our improvement of the protocol in which we propose the use of peer-to-peer communication in combination with smart contracts. With the proposed framework, we aimed at optimizing the protocol from a time and financial point of view. We implemented and tested both implementations of the protocol. For peer-to-peer communication we used Ethereum based Whisper protocol. The results confirmed that with the use of peer-to-peer communication the protocol can be sped up and can further decreases congestion of the blockchain network.

Key words: shared manufacturing, blockchain, peer to peer technology, Ethereum, Whisper protocol

(14)
(15)

1

1 Uvod

Veliki tehnološki napredki v obliki digitalizacije so povzročili vzpon novih paradigem na področju ekonomije, industrije in sociologije. Kot rezultat kombinacije teh paradigem, npr. računanje v oblaku (ang. cloud computing), Internet stvari (IoT) in Industrij 4.0, so se razvile nove metode produkcije. Ena izmed njih je metoda družbene proizvodnje, imenovana deljena proizvodnja (ang. Shared Manufactoring), katera lahko razširi tako stopnjo kot obseg deljenja virov s pomočjo vzajemnega omrežja (ang. peer to peer) in s tem poveča konkurenčnost proizvodnje. Industrija 4.0 in storitvizacija pripomoreta k infiltraciji ekonomije delitve v proizvodno področje v horizontalni in vertikalni smeri. Podjetja posvečajo vedno več pozornosti individualnim dejavnostim in manj stroga organizacija proizvodnje je zaželena, saj to omogoča združevanja družbenih virov [1].

Ojačen proizvodni sistem povezovanja ponuja pomembne analitične sposobnosti ter sposobnosti proizvodne verige, hkrati pa odpira vrata napadom na kibernetsko-fizične sisteme. Identificiranih je bilo kar nekaj možnih kibernetskih napadov: zavrnitev storitve (ang. DoS), prisluškovanje, ponovitveni napad (ang.

replay attack) ipd. [2]. Pri tem se lahko vprašamo, kako na trgu združiti in povezati vrsto različnih ponudnikov storitev in uporabnikov (naprav ali fizičnih oseb) v zaupanja vreden, transparenten in predvsem zanesljiv sistem. Rešitve, ki nastajajo, se osredotočajo na decentralizacijo in distribucijo obstoječih platform [3]–[5], da zagotovijo zanesljivost in robustnost sistemov. Ena izmed možnih rešitev je uporaba tehnologije veriženja blokov. Predstavljamo si jo lahko kot zaporedje šifriranih podatkovnih blokov, ki so med seboj povezani vse od prvega bloka pa do aktualnega.

Prednost te tehnologije leži prav v teh podatkovnih blokih, ki nosijo informacije, katerih se enkrat, ko je blok sprejet v t. i. verigo blokov, ne da nikoli več spremeniti.

Kot vse tehnologije pa ima tudi ta tehnologija svoje pomanjkljivosti in omejitve tehničnega načrtovanja, ki jo ovirajo in morajo biti upoštevane, ko vpeljujemo novo tehnologijo v sistem. Glavna ovira je nezmožnost efektivnega povečanja

(16)

zmogljivosti sistema, in ko že govorimo o povezovanju velikega števila naprav v verigo blokov, je problem še posebej izpostavljen [6]. Naslednji pomembni lastnosti sta pretočnost in hitrost izmenjave podatkov. Slednja je omejena z velikostjo blokov in časom generiranja novega bloka, kar lahko potencialno povzroči zastoje v omrežju in posledično vpliva na delovanje proizvodnih sistemov, ki so implementirani na tehnologiji veriženja blokov. Zaradi omenjenega povezovanje naprav neposredno v omrežje verige blokov ni primerna rešitev in potrebni so tako imenovani pametnejši pristopi za integracijo tehnologije veriženja blokov v proizvodne sisteme. V pričajočem diplomskem delu obravnavamo možne rešitve omenjenih problemov uporabe tehnologije veriženja blokov v kombinaciji z deljeno proizvodnjo. Pri tem smo podali tudi analizo obstoječih rešitev, v nadaljevanju pa smo tudi predlagali ter preizkusili nekatere izboljšave le-teh.

Eden izmed ciljev diplomskega dela je tudi testiranje implementacije koncepta in protokola deljene proizvodnje, kot je predlagan v [7]. V delu smo tudi predlagali in preizkusili se tudi nadgradnjo koncepta z uporabo vzajemnega komunikacijskega protokola Whisper, ki temelji na Ethereum tehnologiji veriženja blokov. Po implementaciji osnovnega koncepta in njegove nadgradnje smo izvedli meritve in primerjavo porabe virov pri različnih implementacijah deljene proizvodnje na bločno-verižni tehnologiji in iz rezultatov ocenili doseženo kvaliteto.

Nalogo smo zasnovali na naslednji način. V drugem poglavju smo opisali pregled literature, ki je bila v pomoč pri nastajanju. V tretjem poglavju sledi opis koncepta deljene proizvodnje na osnovi bločno verižne tehnologije ter naša predlagana izboljšava koncepta. V četrtem poglavju je opisana metodologija raziskave, kjer je predstavljeno, kako smo implementirali omenjeni koncept ter uporabljene tehnologije pri implementaciji le-tega. Sledi poglavje s predstavljenimi rezultati ter njihova podrobna analiza. Šesto, zadnje poglavje je zaključek, v katerem smo strnili pomembnejše ugotovitve in podali izhodišče za nadaljnje raziskave.

(17)

3

2 Deljena proizvodnja in bločno-verižna tehnologija

2.1 Deljena proizvodnja

V preteklih letih so proizvodna podjetja preusmerila svoj fokus s proizvodnje, ki je usmerjena na produkcijo izdelkov, na storitve. Nastal je nov izraz storitvizacija, ki ga razumemo kot proces, v katerem se ustvari dodane vrednosti s tem, da produktom dodamo še storitve [8]. Pri tem gre za to, da se proizvodnja preusmeri v prodajo integriranih produktov storitev, ki prinašajo dodano vrednost z uporabo produktov. Poganjajo jo vedno bolj zapletene in zahtevne potrebe strank ter boj s konkurenco produktov, še posebej v ekonomijah z nižjimi stroški. Podjetja se začenjajo zavedati, da je zagotavljanje storitev veliko bolj kompleksno kot pa sama proizvodnja produktov in zahteva različne pristope k načrtovanju izdelek-storitev, organizacijski strategiji in organizacijski transformaciji [9].

Kot rezultat tehnološkega napredka in družbenoekonomskih potreb so bili razviti novi, tako imenovani pametni načini proizvodnje (distribuirana proizvodnja, omrežna proizvodnja, proizvodnja v oblaku, družbena proizvodnja,…). Uvedeni so bili novi decentralizirani več-agentni (ang. multi-agent) sistemi, pri katerih posamezne naprave v proizvodnji delujejo avtonomno in se odločajo na lokalnem nivoju [10].

Že dalj časa je znano, da izmenjava informaciji med podjetji vodi do večje učinkovitosti proizvodnih procesov. Izmenjava podatkov, novi kibernetsko-fizični sistemi (ang. cyber-physical systems) in virtualizacija omogočajo podjetjem enostavno izmenjavo proizvodnih virov in storitev. Stranke lahko uporabljajo storitve v oblaku glede na svoje trenutne potrebe. Zahtevajo lahko storitve, ki so odvisne od zasnove izdelka, proizvodnje, preizkušanja, upravljanja in vseh drugih faz življenjskega cikla izdelka. Storitvena proizvodna platforma v oblaku (ang. cloud manufactoring service) izvaja iskanje, inteligentno mapiranje, priporočanje in

(18)

izvajanje storitev [11]. S povezovanjem podjetij na globalni ravni so se pojavila družbena omrežja, ki so omogočila pojav mnogo majhnih in srednje velikih podjetij in celo posameznikov v različnih tržnih segmentih. Ponujajo različne storitveno usmerjene produkte s ciljem, da dosežejo vse zahteve strank in se razvijejo v ponudnike družbene proizvodnje (ang. socialized production service providers) [12].

Integracija družbenih omrežij v pametne proizvodne sisteme ni privedla le do tehnoloških rešitev, ampak tudi spodbuja vključevanja v obstoječe gospodarske paradigme. Deljena proizvodnja je nov način družbene proizvodnje, ki združuje pametne proizvodne sisteme. To razširja obseg in globino delitve virov in omogoča vključevanje proizvodnih procesov, ki temeljijo družbenih procesih. To omogoča tako posameznikom, kot tudi manjšim in večjim poslovnim enotam, da sodelujejo v proizvodnih dejavnostih preko vzajemnega omrežja (P2P) sodelovanja [1].

Koncept deljene tovarne je tako definiran kot vrsta proizvodnega sistema na tovarniški ravni z definiranim lastništvom. Pri tem imajo različni proizvajalci različne pravice za različne proizvajalce znotraj in/ali zunaj tovarne, v procesu pa sodelujejo kupci zunaj tovarne. Pri tem je v rabi celoten sistem virov ali le del proizvodnih virov in proizvodnih zmogljivosti, ki temeljijo na mehanizmu z gnezdenja storitev [13].

Tradicionalne proizvodne paradigme so se v splošnem razvijale s poudarkom na eni smeri (npr. tehnologija, družba ali ekonomija). V primerjavi z njimi je deljena proizvodnja interdisciplinarna, kar razkriva usklajen razvoj v vseh smereh. Zato je veliko bolj zapletena in zahteva pozornost tako znanstvenega kot sociološkega področja [1]. Storitev, ki temelji na tujcih, je nezavarovan proces, ki temelji na kibernetskem kreditnem sistemu za posameznike, ki niso še nikoli prej sodelovali med seboj. Proizvajalec in kupec, ki morda ne poznata drug drugega, sodelujeta pri deljenju proizvodnje tako, da igrata različne vloge v deljeni tovarni, tako da prepletene storitve tvorijo mehanizem za gnezdenje storitev [13].

(19)

2.2 Bločno-verižna tehnologija 5

V primerjavi z družbeno proizvodnjo koncept deljene proizvodnje še bolj odpira proizvodne sisteme globalnemu omrežju in s tem seveda zastavlja tudi pomembna varnostna vprašanja. Koncept deljene proizvodnje pripelje do treh nivojev servitizacije v proizvodnih procesih:

- storitev-izdelek (PSS),

- sistem konfiguracija-storitev (CSS) in - sistem viri-storitve (RSS) [1].

PSS je bil opredeljen kot tržni sklop izdelkov in storitev, ki lahko skupaj izpolnijo potrebe uporabnika. Kar zadeva proizvodnjo, PSS predstavlja nizko stopnjo servitizacije. Visok nivo servitizacije, ki jo omogoča ekonomija delitve, v proizvodnem smislu predstavlja poglobljeno prilagajanje virov (RSS), kot je izmenjava materialov, strojev, programske opreme, znanja in delovne sile. Vmesna raven med PSS in RSS je CSS, ki odraža izmenjave modularnih rešitev, kot so platforme in konfiguracije [14].

2.2 Bločno-verižna tehnologija

Tehnologijo, znano pod imenom bločno-verižna tehnologija, je prvi predstavil Satoshi Nakamoto v svojem članku "Bitcoin: Peer-to-peer electronic Cash System" [15], s tem pa je definiral tudi matematične temelje za kriptovaluto Bitcoin.

Čeprav je bil to prelomen članek za bločno-verižno tehnologijo, ni bil nikoli uradno objavljen kot znanstveni članek, ker ni bil posredovan v strokovni pregled in avtorjeva resnična identiteta ni znana. Tehnologija veriženja blokov ni le osnova vseh kriptovalut, saj je našla tudi široko uporabo v bolj tradicionalni finančni industriji. Odprla je vrata novim aplikacijam, kot so pametne pogodbe [16].

Veriga blokov je porazdeljena podatkovna struktura, ki se replicira in deli med člani omrežja. Uvedena je bila skupaj z Bitcoinom, da bi rešila problem dvojne porabe. Kot rezultat tega, kako vozlišča v Bitcoin omrežju (tako imenovani rudarji) dodajajo validirane, medsebojno dogovorjene transakcije, Bitcoin veriga blokov hrani verodostojno knjigo (ang. ledger) transakcij, ki določa, kdo si kaj lasti [17].

Vendar veriga blokov lahko stoji popolnoma samostojno – kriptovaluta ni potrebna [18]. Verigo blokov si lahko predstavljamo kot dnevnik, katerega zapisi so združeni v časovno označene bloke. Vsak blok je identificiran s svojo kriptografsko zgoščeno vrednostjo (ang. hash). Vsak blok se sklicuje na zgoščeno vrednost bloka, ki je bila

(20)

pred njim. To vzpostavi povezavo med bloki in s tem ustvari verigo blokov (slika 1).

Vsako vozlišče z dostopom do tega urejenega, nazaj povezanega seznama blokov [19], lahko prebere potrebne podatke in ugotovi, kakšno je svetovno stanje podatkov [17], ki se izmenjujejo v omrežju [20].

Delovanje tehnologije veriženja blokov bolje razumemo, ko preučimo, kako deluje samo omrežje. To je niz vozlišč (odjemalcev-strank), ki delujejo na isti verigi blokov preko kopij, ki si jo vsak lasti. Vozlišče lahko na splošno deluje kot vstopna točka za več različnih uporabnikov verige blokov v omrežju, vendar zaradi enostavnosti predpostavljamo, da vsak uporabnik v omrežju posluje preko svojega vozlišča. Ta vozlišča tvorijo omrežje vsak z vsakim, kjer:

- Uporabniki komunicirajo z verigo blokov prek para zasebnih/javnih ključev [21]. Zasebne ključe uporabljajo za podpisovanje lastnih transakcij, v omrežju pa jih je mogoče nasloviti preko javnega ključa.

- Uporaba asimetrične kriptografije v omrežju prinaša preverjanje pristnosti, poštenosti (ang. integrity) in zavrnitev. Vsako podpisano transakcijo uporabnikovo vozlišče oddaja souporabnikom (soležnikom) v vzajemnem omrežju.

- Soležni uporabniki se prepričajo, da je ta dohodna transakcija veljavna, preden jo posredujejo naprej; neveljavne transakcije se zavržejo. Sčasoma se ta transakcija razširi po celotnem omrežju.

- Transakcije, ki jih je omrežje zbralo, in potrdilo z uporabo opisanega postopka v dogovorjenem časovnem intervalu, so razvrščene in zapakirane v časovno označen blok. Ta postopek se imenuje rudarjenje. Vozlišče rudarja (rudarsko vozlišče) odda ta blok nazaj v omrežje.

- Vozlišča preverijo, ali predlagani blok (a) vsebuje veljavne transakcije, in (b), da se prek zgoščene vrednosti sklicuje na prejšnji blok v svoji verigi. V tem primeru dodajo blok svoji verigi in uporabijo transakcije, ki jih vsebuje ta blok, da posodobijo svetovno stanje. V nasprotnem primeru se predlagani blok zavrže. To pomeni konec kroga.

Upoštevati je treba, da je to ponavljajoč postopek [20].

Slika 1: Veriga blokov z vsemi pomembnimi podatki

(21)

2.2 Bločno-verižna tehnologija 7

Ključna lastnost omrežja podatkovnih blokov je torej sposobnost doseganja soglasja med vozlišči v omrežju. Problem doseganja soglasja med nezaupljivimi entitetami v porazdeljenem sistemu imenujemo tudi "problemi z bizantinskimi generali" (ang. Byzantine Generals Problems) [22]. Z drugimi besedami, za vozlišča je pričakovano, da dosežejo sporazum o edinstvenem skupnem pogledu na verigo blokov [20]. Neuspeh pri reševanju tega problema imenujemo "bizantinska napaka"

(ang. Byzantine failure) [23], kar je lahko posledica različnih vrst zlonamernih dejanj okvarjenih vozlišč. Glavni razlog za razlike v lastnostih omrežij podatkovnih blokov je prav ta mehanizem soglasja, ki opredeljuje samo arhitekturo omrežja podatkovnih blokov. Različne izbire zasnove v protokolu konsenza lahko močno vplivajo na delovanje sistema veriženja podatkovnih blokov, vključno z njegovo zmogljivostjo, razširljivostjo in odpornostjo na napake [24].

Obstajajo različne vrste algoritmov mehanizma soglasja, ki določajo način doseganja soglasja med uporabniki, in sicer:

- dokaz o delu (ang. Proof of Work, PoW),

- dokaz o pooblastilu (ang. Proof of Authority, PoA) ter - dokaz o deležu (ang. Proof of Stake, PoS).

V mehanizmu dokaz o delu (PoW) proizvajalci blokov zbirajo čakajoče transakcije in jih vključujejo v blok skupaj z dokazilom, da so porabili zato računske vire. Če predlagani blok preveri in odobri večina uporabnikov omrežja, ga lahko dodamo v verigo blokov [15].

V mehanizmu soglasja dokaz o pooblastilu (PoA) je podoben proces konsenza, vendar lahko bloke predlagajo in potrdijo samo pooblaščeni uporabniki. Ker so v omrežju samo pooblaščeni proizvajalci blokov, potreba po dokazilih o porabi računskih virov ni potrebna [25].

V mehanizmu dokazu o deležu (PoS) je proizvajalec blokov izbran na podlagi njegovega sorazmernega deleža v omrežju, ki predstavlja njegovo premoženje v smislu te kriptovalute. Izbrano vozlišče uporablja digitalni podpis za dokazilo o deležu, namesto, da bi preračunalo zahtevne razpršilne probleme (ang. hash problems).

(22)

Opazovanje različnih omrežij verig blokov vodi do dejstva, da se vsa omrežja soočajo z enakimi omejitvami ter tehničnimi omejitvami le do neke mere. Takšne omejitve so nezmožnost učinkovitega razširjanja omrežja. Omrežja so dovzetna za različne varnostne probleme in nekatera so celo nagnjena k centralizaciji [26]. Ta opažanja o trenutnem stanju omrežij verig podatkovnih blokov so različni raziskovalci (glej npr. [27]) povezali v eno idejo, imenovano trilema verige blokov (ang. Blockchain Trilemma). Buterinova opredelitev trileme [28] navaja, da imajo lahko sistemi tehnologije veriženja blokov največ dve izmed naslednjih treh lastnosti: razširljivost, decentralizacija, varnost. Z drugimi besedami, vse verige blokov lahko predstavimo tako, da obstajajo natanko na eni točki znotraj trikotnika, ki je določena z mero vsake od zgoraj omenjenih treh osnovnih lastnosti verige blokov [29]. Vprašanje razširljivosti tehnologije veriženja blokov se je pojavilo z rastjo obeh priljubljenosti in uporabe omrežij verig blokov, kjer so bile prikazane meje glede zmogljivosti omrežja, da se prilagaja številu uporabnikov [30]. Širitev uporabe tehnologije veriženja blokov na različna področja povzroča vključevanje več in več uporabnikov. Koncepti znotraj IoT sistemov predlagajo tudi vključitev naprav v omrežje verige blokov, kar bo še dodatno povečalo število transakcij in dodatno obremenilo omrežje. Bolj kot je prometno omrežje, daljši je čas transakcije na verigi blokov in višji so stroški posamezne transakcije [7].

Rešitve, ki povečajo razširljivost tehnologije veriženja blokov, lahko razdelimo na rešitve, ki se osredotočajo na zasnovo prvega sloja verige blokov (L1) in rešitve druge plasti (L2) [31]. Rešitve prve plasti vključujejo optimizacijo strukture blokov in mehanizma soglasja (ang. consensus mechanism), rešitve druge plasti pa se osredotočajo na razbremenitev glavnega omrežja verig blokov z izvajanjem dela transakcij izven samega omrežja verige blokov ali s prenosom dela računsko zahtevnih nalog na platforme, ki niso nastavljene v omrežju verige blokov [32]. Vse obstoječe rešitve žrtvujejo del decentralizacije in varnost obstoječih sistemov, da bi povečale razširljivost, zato je treba poiskati primerno razmerje lastnosti glede na uporabo tehnologije veriženja blokov in namena sistema. Prenosi večjih vrednosti zahtevajo večjo varnost in decentralizacijo, pri prenosih manjših vrednosti večjo frekvenco, pa je razširljivost bolj pomembna. Vendar je zaželeno, da si takšne rešitve prizadevajo za decentralizacijo, varnost in razširljivost na najvišji ravni. Pri L2 rešitvah se obdelujejo določene transakcije (npr. transakcije t.i. mikroplačil) zunaj verige blokov in na sami verigi zapisujejo le pomembne transakcije (npr. končna stanja). Prve rešitve L2 so se pojavile v obliki plačilnih kanalov, v katerih je bil vzpostavljen začasni kanal za trgovanje zunaj verige. Poljubno število transakcij med

(23)

2.3 Ethereum omrežje 9

udeleženci se izvede preko zasebnega kanala. Kadarkoli želijo udeleženci zapreti plačilni kanal, lahko oddajo svoje zadnje sporočilo o podpisani transakciji v verigo blokov in s tem dokončajo svoj prenos sredstev [31]. Druge rešitve L2 so stranske verige, ki so ločene verige blokov, ki so povezane na glavno verigo blokov [7]. Več o stranskih verigah bomo predstavili v poglavju 2.3.3.

2.3 Ethereum omrežje

Namen Ethereuma je ustvariti alternativni protokol za gradnjo decentraliziranih aplikacij, ki zagotavlja svoj nabor kompromisov. Ethereum omrežje to doseže tako, da ustvari tisto, kar je v bistvu zadnji abstraktni temeljni sloj: verigo blokov z vgrajenim Turingovim programskim jezikom, ki omogoča vsakemu posamezniku pisanje pametnih pogodb in decentraliziranih aplikacij, kjer lahko ustvarijo svoja poljubna pravila o lastništvu, obliki transakcij in funkcije prehoda stanj. Osnovno verzijo žetona Namecoin se lahko ustvari v že dveh vrsticah kode, drugi protokoli, kot so valute, pa so lahko zgrajeni v manj kot dvajsetih vrsticah. Na platformi je mogoče zgraditi tudi pametne pogodbe, kriptografske "škatle", ki vsebujejo vrednosti in jo odklenejo le, če so izpolnjeni določeni pogoji [33]. Namecoin je kriptovaluta, ki uresničuje decentralizirani imenski prostor. To je prva alternativna kriptovaluta Bitcoinu z lastno verigo blokov. Ponuja enake funkcije kot Bitcoin z dodatkom ime/vrednost shrambe, ki jo lahko uporabimo za shranjevanje poljubnih podatkov [34].

Stanje v Ethereumu je sestavljeno iz objektov, imenovanih računi. Vsak račun ima 20-bajtni naslov, prehodi stanj pa so enaki neposrednim prenosom vrednosti in informacij med računi. Ethereum račun vsebuje naslednja štiri polja:

- enkratno kriptografsko število, s katerim je mogoče zagotoviti, da je vsako transakcijo mogoče obdelati samo enkrat;

- trenutna bilanca računa;

- koda pametne pogodbe računa, če je prisotna;

- pomnilnik računa (privzeto prazen).

Eter je glavno kripto gorivo Ethereum omrežja in se uporablja za plačilo provizij za transakcije. V splošnem obstajata dve vrsti računov: računi v zunanji lasti, ki jih nadzorujejo zasebni ključi in pa računi pametnih pogodb, ki jih nadzoruje njihova pogodbena koda. Račun v zunanji lasti nima programske kode in lastnik takega računa lahko pošilja sporočila s tem, ko ustvari in podpiše transakcijo. V računu

(24)

pametne pogodbe, se vsakič, ko pogodbeni račun prejme sporočilo, aktivira njegova koda, kar mu omogoča branje in pisanje v notranji pomnilnik ter pošiljanje sporočil ali tudi ustvarjanje novih pogodb [33].

Izraz transakcija se v Ethereumu uporablja za podpisan podatkovni paket, v katerem je shranjeno sporočilo, poslano iz Ethereum računa. Transakcije vsebujejo:

- naslov prejemnika sporočila;

- podpis pošiljatelja;

- količina etra, ki jo pošiljatelj pošilja prejemniku;

- podatkovno polje (opcijsko);

- vrednost STARTGAS, ki predstavlja največje število računskih korakov, ki jih je dovoljeno izvesti za izvršitev transakcije;

- vrednost GASPRICE, ki predstavlja provizijo, ki jo pošiljatelj plača na en računski korak.

Prva tri so standardna polja, pričakovana v kateri koli kriptovaluti. Podatkovno polje, kot samo nima funkcije, vendar ima EVM operacijsko kodo, s katero lahko pogodba dostopa do podatkov; kot primer uporabe, če pogodba deluje kot storitev za registracijo domen na blokovni verigi, bo morda želela podatke, ki ji bodo posredovani, razlagati tako, da vsebujejo dve "polji", prvo polje je ta registracijo domene, drugo polje pa za IP-naslov. Pogodba bi te vrednosti prebrala iz podatkov sporočila in jih ustrezno shranila [33].

Polji STARTGAS In GASPRICE sta ključni za Ethereumov model zavrnitve storitve (ang. denial of service). Da bi preprečili nenamerne ali sovražne neskončne zanke, ali druge računske izgube v kodi, mora vsaka transakcija določiti omejitev, koliko računskih korakov izvajanja kode lahko uporabi.

Temeljna računska enota je gorivo (ang. gas). Običajno en računski korak stane eno enoto goriva. Za vsak bajt podatkov v podatkovnem polju transakcije je tudi zaračunana provizija petih enot goriva. Namen sistema provizij je zahtevati, da napadalec sorazmerno plača za vsak vir, ki ga porabi, vključno z izračuni, pasovno širino in shrambo. Zato mora imeti vsaka transakcija, ki povzroči, da omrežje porabi večjo količino katerega koli od teh virov, provizijo v enotah goriva približno sorazmerno z narastkom [33].

(25)

2.3 Ethereum omrežje 11

Pogodbe imajo možnosti pošiljanja sporočil drugim pogodbam. Sporočila so navidezni objekti, ki obstajajo samo v izvršilnem okolju Ethereum omrežja. Vsako sporočilo vsebuje:

- naslov pošiljatelja sporočila;

- naslov prejemnika sporočila;

- količino etra, ki se prenese ob sporočilu;

- opcijsko podatkovno polje;

- vrednost STARTGAS.

Sporočilo je podobno transakciji, le da ga ustvari pogodba in ne zunanji akter.

Sporočilo se ustvari, ko pogodba, ki trenutno izvaja kodo, izvede operacijsko kodo CALL, ki ustvari in pošlje sporočilo. Tako imajo lahko pogodbe interakcije z drugimi pogodbami na popolnoma enak način kot zunanji akterji.

Funkcija prehoda stanja Ethereum verige blokov (S, TX) → S'' je lahko definirana na naslednji način:

- Preveri se ali je transakcija pravilno oblikovana (ali so števila pravilnih vrednosti ipd.), ali je podpis veljaven in ali se enkratno kriptografsko število (ang. nonce) ujema z enkratnim kriptografskim številom na računu pošiljatelja. V nasprotnem primeru, javi napako.

- Izračuna se transakcijska provizija STARTGAS*GASPRICE in iz podpisa se določi naslov pošiljatelja. Provizija se odšteje od bilance računa pošiljatelja in poveča pošiljateljevo enkratno kriptografsko število. Če pošiljatelj nima na računu ustrezne količine etra, funkcija javi napako.

- Inicializira gorivo in vzame določeno količino goriva na bajt podatkov, da se plača za vse podatke vključene v transakcijo.

- Vrednost transakcije se prenese z računa pošiljatelja na račun prejemnika. Če je račun prejemnika račun pametne pogodbe, se zažene koda pogodbe.

Program se izvede bodisi do konca ali dokler ne zmanjka goriva.

- Če prenos sredstev ni uspel, ker pošiljatelj ni imel dovolj sredstev ali, če je za izvajanje kode zmanjkalo goriva, se razveljavijo vse spremembe stanj, razen plačila provizij, ki se nakažejo na račune rudarjev.

- V nasprotnem primeru se pošiljatelju povrne provizija za vse preostalo gorivo in na račun rudarjev pošlje provizijo, ki je bila plačana za porabljeno gorivo [33].

2.3.1 Pametne pogodbe

Nick Szabo je ta koncept pametne pogodbe predstavil leta 1994 in jo opredelil kot "računalniški protokol transakcij", ki izvršuje pogoje pogodbe [35]. Szabo je predlagal, da se pogodbene klavzule (premoženjska zavarovanja, obveznice, itd.)

(26)

prevede v kodo in se jih vključi v lastnino (strojno ali programsko opremo), ki jo je mogoče samodejno izvajati [28]. Tako je potreba po zaupanja vrednih posrednikih med strankami in pojav zlonamernih ali naključnih izjem v veliki meri zmanjša [20].

Pametne pogodbe omogočajo, da se v verigi izvajajo splošni izračuni.

Predvsem pa pridejo do izraza takrat, ko imajo nalogo, da opravljajo podatkovno vodene interakcije [30] med entitetami v omrežju. Če povzamemo primer:

predstavljajmo si verigo blokov, v kateri sodelujeta Ana in Marko in kjer se trguje z digitalnimi sredstvi tipa X in Y. Marko v omrežje naloži pametno pogodbo, katera opredeljuje:

- funkcijo depozita, ki mu omogoča, da v pogodbo položi enote X;

- funkcijo trgovanja, ki vrne eno enoto X (iz lastnih depozitov pogodbe) za vsakih pet prejetih enot Y;

- funkcija, dvigni, ki Marku omogoča, da dvigne vsa sredstva, ki jih ima pogodba na računu [20].

Upoštevati je treba, da sta funkciji za depozit in dvig napisani tako, da ju lahko kliče samo Marko (s svojim ključem računa), ker se je tako odločil Marko, kar je smiselno za ta primer. Funkcije bi lahko bile napisane tudi, tako da bi jih lahko poklical praktično kdorkoli [20].

Marko pošlje transakcijo na naslov te pametne pogodbe, pri čemer pokliče njeno funkcijo za depozit in v pogodbo prenese 3 enote sredstva X. Transakcija se zabeleži na verigo blokov. Ana, ki je lastnica 12 enot sredstva Y, izvede transakcijo, ki premakne 10 enot Y funkciji trgovanja pametne pogodbe in dobi nazaj 2 enoti sredstva X. Tudi ta transakcija se zabeleži na verigo blokov. Marko nato pošlje podpisano transakcijo v funkcijo dviga. Pogodba preveri podpis, da se prepriča, ali je dvig začel lastnik pogodbe (Marko) in prenese vse depozite nazaj k Marku [20].

V kontekstu Ethereum omrežja je pametna pogodba preprosto program, ki deluje na Ethereum verigi blokov. Gre za zbirko kode (njene funkcije) in podatkov (njeno stanje), ki se nahaja na določenem naslovu v Ethereum omrežju. Pametne pogodbe so torej vrsta Ethereum računa. To pomeni, da imajo neko stanje na računu in lahko izvajajo transakcije prek omrežja [33].

Pogosto zastavljeno vprašanje je "kje" se izvaja pogodbena koda v smislu dejanske fizične strojne opreme. To ima preprost odgovor: postopek izvrševanja

(27)

2.3 Ethereum omrežje 13

pogodbene kode je del definicije funkcije prehoda stanja, ki je del algoritma za preverjanje veljavnosti bloka, tako da, če je transakcija dodana v blok B, bodo vozlišča, ki zdaj in v prihodnosti prenašajo in potrjujejo blok B, izvedla kodo, ki jo je ustvarila ta transakcija [33].

Pomembno je opozoriti, da se na pogodbe v Ethereum omrežju ne sme gledati kot na nekaj, pri čemer bi bilo treba izpolniti obveznosti te pogodbe oz. se držati točno tega, kar piše v pogodbah. Pametne pogodbe si je bolje predstavljati kot avtonomne agente, ki živijo v Ethereum izvršilnem okolju in vedno izvršijo določen del kode, ko so aktivirane s strani sporočila oz. transakcije in imajo neposreden nadzor nad lastno eter bilanco in lastnim ključem ter pomnilnikom za spremljanje trajnih spremenljivk [33].

2.3.2 Whisper protokol

Whisper protokol je sistem za komuniciranje, ki temelji na identiteti. Ponuja preprost nizko ravenski API, ne da bi temeljil na lastnostih in značilnostih strojne opreme ali nanje vplival. Komunikacija med vozlišči mreže Whisper uporablja

"devp2p" žični protokol (ang. devp2p wire protocol) [36]. Devp2p je nabor omrežnih protokolov, ki tvorijo Ethereum vzajemno omrežje. Tukaj je z izrazom Ethereum omrežje mišljen širši pomen, tj. devp2p ni specifičen za določeno verigo blokov, ampak je namenjen potrebam katere koli mrežne aplikacije, ki spada pod Ethereum drevo [37]. Whisper ni bil zasnovan tako, da bi zagotavljal sistem, ki je usmerjen v povezavo, niti za preprost prenos podatkov med dvema končnima točkama omrežja.

Kljub temu je to lahko potrebno v nekaterih zelo specifičnih primerih in Whisper protokol je kos tudi takim primerom. Zasnovan je za preprosto in učinkovito oddajanje sporočil ter tudi za nizke ravni asinhrone komunikacije. Je gradnik naslednje generacije "neustavljivih" decentraliziranih aplikacij. Omogoča odpornost in zasebnost ob precejšnji ceni. Uporabnikom omogoča, da uravnavajo raven zasebnosti (koliko informacij uhaja o vsebini decentraliziranih aplikacij in s tem, dejavnosti uporabnikov v aplikacij) kot kompromis za zmogljivost [36].

Načeloma bi vsa Whisper sporočila morala biti poslana vsakemu Whisper vozlišču. Da bi preprečili DDoS napad, uporabljamo algoritem dokaz o delu (PoW).

Sporočila bodo obdelana (in posredovana naprej) le, če njihov PoW preseže določen prag, sicer bodo zavržena. Vsa Whisper sporočila so šifrirana in nato poslana preko devp2p protokola, ki poleg Whisper šifriranja uporablja še svoje šifriranje sporočil,

(28)

tako da so sporočila na koncu dvojno šifrirana. Vsako sporočilo mora biti šifrirano simetrično ali asimetrično in sporočila lahko dešifrira vsak, ki ima ustrezen ključ [36], kar pomeni, da brez ustreznega ključa, sporočila ne more nihče prebrati. Treba je tudi poudariti, da se sama vsebina sporočil ne hrani na verigi blokov, temveč le uporablja vozlišča, ki tvorijo Ethereum verigo blokov za prenos sporočila od vozlišča pošiljatelja do vozlišča prejemnika. Brez nekakšne centralizacije v smislu naprave, ki bi hranila prejeta sporočila, se do "starih" sporočil ne da dostopati, ker iz samega omrežja izginejo po določenem času.

2.3.3 Stranske verige Ethereum omrežja

Prvi koncept stranskih verig je bil predstavljen leta 2014 [38]. Predlagali so mehanizem dvosmernega prenosa informacij med dvema povezanima verigama (ang. two way peg) in opisali dva načina delovanja interakcij med vezanimi verigami – sinhrono in asinhrono. Sinhroni način predpostavlja, da se glavna veriga in stranska veriga zavedata obstoja drug drugega in lahko neposredno preverita veljavnost transakcij med verigama. Asinhroni način predpostavlja, da se glavna veriga ne zaveda obstoja stranskih verig, vendar se je v postopku potrjevanja prenesenih transakcij treba zanašati na validatorje stranske verige. Ena od rešitev s stransko verigo, ki omogoča asinhroni način, je Plasma [39] na Ethereum omrežju, ki deluje kot glavna veriga. Glavna ideja Plasme je imeti več stranskih verig, imenovanih otroške verige, ki so povezane nazaj z glavno verigo. Njen izvor/koren je pametna pogodba, ki se izvaja na glavni verigi, ki beleži pravila in zgoščene vrednosti (ang.

hash) stranske verige. Stranska veriga redno oddaja svoje zgoščene vrednosti glave svojega bloka v glavno Ethereum verigo. Tako lahko glavna veriga preveri veljavnost transakcij, vključenih v stranske verige. Pojavljajo se tudi nove rešitve za nadaljnje izboljšanje protokola med-verižnega prenosa in s tem izboljšujejo razširljivost, decentralizacijo in varnost takih sistemov [40], [41]. Stranske verige imajo lahko svoj protokol za izvedbo, ki se lahko popolnoma razlikuje od glavne verige. Takšna prilagodljivost omogoča uporabnikom veliko prilagodljivost pri dostopu do drugih funkcionalnosti in funkcij, ki jih ponuja stranska veriga z uporabo sredstev, ki si jih lastijo že na glavni verigi. Poleg tega so stranske verige popolnoma izolirane od glavne verige blokov na tak način, da je v primeru kriptografskega zloma (ali zlonamerno zasnovane stranske verige), škoda v celoti omejena samo na stransko verigo [42].

(29)

2.3 Ethereum omrežje 15

2.3.4 Most med verigama blokov

Z izrazom most med verigama blokov poimenujemo v prejšnjem poglavju omenjeni dvosmerni prenos informacij med povezanima verigama, ki služi med- verižnim prenosom. V nadaljevanju je na poenostavljen način opisano delovanje dvosmernega prenosa.

Predpostavimo, da je stranska veriga pritrjena na javno in brez dovoljenj dostopa do glavne verige blokov z dvosmernim prenosom. Primarna veriga blokov:

- upravlja kriptovaluto, imenovano GlavniKovanec, in

- ne more izvajati netrivialnih pametnih pogodb zaradi odsotnosti Turing popolnega virtualnega izvajalskega okolja.

Stranska veriga:

- upravlja svojo kriptovaluto, imenovano StranskiKovanec, - ima zmožnost izvrševanja netrivialnih pametnih pogodb in

- ponuja bistveno večjo hitrost transakcij (tj. več transakcij na sekundo) kot glavna veriga.

Zaradi poenostavitve v takem okolju z več blokovnimi verigami se primarna veriga imenuje starševska veriga (ali glavna veriga) in stranska veriga, ki je pritrjena nanjo, se imenuje sekundarna veriga. V primeru, ki je predstavljen v nadaljevanju, dvosmerni prenos omogoča prenos kovanca glavniKovanec iz glavne verige na stransko verigo in obratno s stalnim tečajem 1 glavniKovanec je ¼ stranskiKovanec.

Recimo, da želi uporabnik prenesti 5 kovancev glavniKovanec iz glavne verige v stransko verigo, da bi igral igro kamen, papir, škarje z drugim naključno izbranim uporabnikom na podlagi pametne pogodbe (kjer zmagovalec vzame vse, izenačen rezultat pa ne povzroči nobene izmenjave kovancev), ki je implementirana na stranski verigi, potem bi tak sistem lahko deloval na naslednji abstraktni način:

1. Uporabnik pošlje 5 kovancev glavniKovanec na poseben naslov, kjer se kovanci zaklenejo in jih je mogoče odkleniti šele, ko se sredstva na stranski verigi zaklenejo in prenesejo nazaj na glavno verigo.

2. Ko so sredstva na glavni verigi zaklenjena, se na stranski verigi ustvari 5 kovancev stranskiKovanec.

3. Uporabnik lahko sedaj uporablja te kovance za igranje igre kamen, papir, škarje z drugim naključno izbranim uporabnikom, ki je pripravljen staviti enako količino kovancev stranskiKovanec.

4. Odvisno od izida igre, se 10 kovancev stranske verige prenese na zmagovalca ali pa se obema igralcema vrne po 5 kovancev (v primeru izenačenega rezultata).

(30)

5. Uporabniki nato svoja sredstva nakažejo nazaj na glavno verigo, kar pomeni, da se kovanci stranskiKovanec na stranski verigi zaklenejo/uničijo in enakovredno število kovancev glavniKovanec se odklene na glavni verigi (ko se na stranski verigi kovanci uničijo). [42]

Opisani koraki so prikazani na sliki 2.

Slika 2: Most med verigama - sekvenca

(31)

17

3 Prilagodljiv okvir bločno-verižne deljene proizvodnje

V nadaljevanju želimo kratko opisati prilagodljiv okvir bločno-verižne deljene proizvodnje, ki so ga avtorji originalno predstavili v [7].

V obstoječih rešitvah, ki predlagajo kombinacijo tehnologije veriženja blokov in pametne proizvodnje, se tehnologija veriženja blokov uporablja kot platforma za povečanje enostavnosti sodelovanja med podjetji. Pri deljeni proizvodnji pa je storitev deljene proizvodnje - SMS veliko bolj kompleksna kot pri tradicionalnih proizvodnih storitvah, saj SMS poseže vse do avtonomne individualne ravni s komunikacijo vzajemnega omrežja [1]. V predlagani rešitvi se tehnologija veriženja blokov uporablja kot način, s katerim se posamezne storitve v proizvodnem sistemu vključijo na svetovni trg (slika 3). Posamezni ponudniki in potrošniki so povezani v veliko družbenoekonomsko mrežo, imenovano Omrežje deljene proizvodnje – ODP, ki deluje po načelu ekonomije delitve. Za vključitev posameznih storitev v ODP je potrebna ustrezna priprava proizvodnih sistemov na lokalni ravni. Posamezni porazdeljeni proizvodni viri predstavljajo fizično plast, ki lahko predstavlja stroje, materiale ali človeško delovno silo. Del fizičnega sloja je tudi IKT oprema (računalniki, strežniki, tipala, itd.), ki skrbi za virtualizacijo posameznih fizičnih komponent, komunikacijo in omogoča digitalizacijo podatkov. Ideja je, da lahko ena fizična komponenta avtonomno zagotavlja določeno storitev na svetovnem trgu.

Fizična sredstva, ki so sposobna zagotavljati storitve, je treba virtualizirati v ustrezne digitalne dvojčke, preden se jih servitizira (ang. servitise) in vključi v SMS. Fizična naprava in navidezna predstavitev te naprave sta združeni v CPS. Kibernetski sloj deluje kot most med odločitvami na višji ravni in fizičnimi viri, prav tako prenaša stanje fizičnega sveta na višji (odločitveni) sloj in neposredno na trg. Zbrani podatki na kibernetskem sloju se uporabljajo za neposreden nadzor naprav in virov. Na višji ravni, kjer se sprejemajo odločitve o delovanju proizvodnega sistema (odločitveni nivo), je lahko posamezna enota del večjega proizvodnega sistema, lahko pa tudi individualno deluje na ODP.

(32)

V predlaganem konceptu se takšna proizvodna enota imenuje avtonomna proizvodna enota – APU. Lokalni MES na APU spremlja in beleži trenutno stanje pretvorbe surovin v končne izdelke. Lahko je tudi del centralno vodenega MES, ki spremlja stanje celotne proizvodnje, v katero je umeščen APU. V skladu z opredeljeno prednostjo, APU bodisi shrani zajete podatke na lokalni MES bodisi jih posreduje MEC celotne proizvodnje. ERP predstavlja povezavo med ODP in APU s pregledom shranjenih podatkov o dejavnostih iz proizvodne enote (MES) in podatkov o poslovnih dejavnostih na trgu (računovodstvo). ERP tako zagotavlja integriran in stalno posodabljan pogled ključne poslovne procese in pomaga pri odločitvah o delovanju APU, ki se odražajo tako na trgu kot v fizičnem svetu.

Prepletanje odločitvenega nivoja in storitvene plasti omogoča posameznemu APU, da sprejema odločitve in dodeljuje delovne naloge neposredno glede na trenutne tržne razmere. Posamezni APU uporabljajo omrežje verige blokov za priključitev na globalni trg in tako njihove storitve postanejo del koncepta deljene proizvodnje. V predlaganem konceptu fizična naprava ali vir dobi novo predstavitev, imenovano družbeni dvojček (ang. social twin), ki predstavlja posamezen APU in ODP.

Družbena predstavitev (dvojček) vključuje vse ustrezne informacije o storitvi, ki jo ponuja določena enota (ID, različica, protokoli, standardi, delovno stanje, cena in

Slika 3: Vključevanje storitev v proizvodni nivo

(33)

3.1 Protokol 19

podatki o zmogljivosti). Lokalna plast odločanja posamezne enote je neposredno povezana s predstavitvijo (dvojčkom), tako da lahko neposredno odloča glede na situacijo na ODP in zagotavlja trenutne informacije proizvodne enote v nasprotni smeri.

3.1 Protokol

3.1.1 Odkritje storitve

Na splošno imajo porazdeljena omrežja nekaj mehanizmov za odkrivanje, ki omogočajo soležnikom (ang. peer) medsebojno iskanje in transakcije [43]. SMP opredeljuje sistem javno dostopnih registrov, ki vsebuje naslove uporabnikov, ki ponujajo proizvodne storitve (npr. 3D tiskanje, skladiščenje). Registri so razvrščeni po vrsti storitve, ki jo nudi njihov lastnik. Registri morajo omogočati:

- javni dostop vsem uporabnikom,

- možnost, da se katerikoli uporabnik doda ali odstrani kot ponudnik storitev.

Registri so pametne pogodbe, ki delujejo na javni in brez dovoljenj dostopni verigi blokov. Uporaba tehnologije veriženja blokov ponuja dostopnost in nespremenljivost. Dostopnost je definirana v smislu vključenosti uporabnikov, kar pomeni, da nobenemu uporabniku ne sme biti omejen dostop in dostopnost v smislu neprekinjenega delovanja, kar pomeni, da morajo registri vedno delovati. Značilnost nespremenljivosti zagotavlja, da z vsebino ni mogoče manipulirati brez uporabnikovega soglasja. Ponudniki storitev se lahko sistemu pridružijo tako, da pokličejo funkcijo pametne pogodbe, ki jih doda na seznam ponudnikov v obliki preslikave (ang. mapping) (Slika 4). Enkrat, ko je ponudnik registriran, lahko stranke/potrošniki odkrijejo njegove storitve in ga lahko v fazi pogajanja kontaktirajo preko njegovega javnega računa.

Slika 4: Register ponudnikov

(34)

3.1.2 Pogajanje

Pogajanje je postopek, pri katerem se ponudnik storitev in potrošniki dogovarjajo o pogojih storitve. Pogajalski proces je razdeljen na dva dela: zbiranje ponudb in zaveza. Zbiranje ponudb je postopek, ki ga potrošnik storitve izvaja sam, da izbere ponudnika storitev, ki najbolj ustreza njegovim potrebam. Potrošnik mora zagotoviti podatke, ki vsebujejo potrebne informacije, da ponudnik storitve lahko sestavi in pošlje ponudbo. SMS opredeljuje dva podatkovna razreda (ang. data class):

povpraševanje in ponudba, prikazana na sliki 5.

Časovni trak na sliki 6 prikazuje razporeditev časovnih atributov povpraševanja. Izid storitve mora biti na voljo po datumu 𝑡𝑠𝑡𝑎𝑟𝑡 in pred datumom 𝑡𝑒𝑛𝑑. Okvir storitve je časovno okno, ki prićenja ob datumu 𝑡𝑠𝑡𝑎𝑟𝑡 in konča ob datumu 𝑡𝑒𝑛𝑑. Ponudniku storitev omogoča prilagodljivost za učinkovitejše vključevanje storitve v njihov proizvodni proces.

Slika 6: Časovni trak storitve Slika 5: Povpraševanje in ponudba

(35)

3.1 Protokol 21

Postopek ponudb po protokolu SMP je naslednji:

1. potrošnik najprej zbere kontaktne podatke ponudnika iz registra ustreznega tipa (tip x), izbranega glede na želeno storitev;

2. nato ustvari povpraševanje po storitvi in ga pošlje izbranim ponudnikom;

3. ponudniki storitev se odzovejo s ponudbami;

4. ko poteče rok veljavnosti povpraševanja, potrošnik odgovori ponudnikom s sprejemom ali zavrnitvijo ponudbe.

Zaveza je postopek, v katerem se potrošnik in proizvajalec zavežeta z dogovorom o zagotavljanju storitev v zameno za plačilo. V tradicionalnem načinu bi se ta vrsta dogovora obravnavala kot pravno zavezujoča pogodba, ki je izterljiva s strani pravnih organov [44]. SMP nima stika s tradicionalnim legalnim sistemom, ampak ponuja alternativni sistem v obliki algoritma, ki je implementiran v obliki pametne podobe in se izvaja na omrežju tehnologije veriženja blokov. Potrošnik in ponudnik se zavežeta s sklenitvijo dogovora. SMP definira podatkovni razred dogovor z atributi.

Proces zaveze, se izvaja v štirih fazah. Najprej potrošnik ustvari dogovor na pametni pogodbi. V dogovoru določi vse atribute podatkovnega razreda Pogodba.

Nato se potrošnik z digitalnim podpisom zaveže dogovoru. Zatem se še ponudnik storitve zaveže dogovoru s svojim digitalnim podpisom. Nazadnje potrošnik prenese plačilo za storitev na pametno pogodbo, ki zaključi zavezujoč postopek. Zaveza ponudniku ponuja določeno zavarovanje, da bo prejel plačilo na koncu sporazuma, saj so bila sredstva prenesena s strani potrošnika na pametno pogodbo.

3.1.3 Transakcija

V fazi transakcije ponudnik storitve storitev izvede (slika 7). Postopek razreševanja se začne, ko nastopi datum izteka sporazuma. Najprej se preveri poročilo ponudnika o izvajanju storitve. Če poročilo ni bilo predloženo ali storitev ni bila opravljena, se sredstva vrnejo potrošniku. Če je v predloženem poročilu navedeno, da je bila storitev opravljena, se preveri še poročilo potrošnika. Če v poročilu potrošnika piše, da je bila storitev opravljena ali poročila ne predloži, se sredstva prenesejo ponudniku storitve. Če v poročilu potrošnika piše, da storitev ni bila opravljena, ponudnik pa v svojem poročilu trdi, da je storitev bila opravljena, pride do stanja nasprotja/spora. V primeru nasprotja, podatki o tem, katera stran je

(36)

poštena oz. nepoštena ni znano, zato so sredstva obeh zadržana. SMP ne definira, kaj naj se zgodi z zaklenjenimi sredstvi. Ena možnih rešitev je razdelitev sredstev za različne nagrade za uporabnike, ki pozitivno prispevajo k omrežju.

3.1.4 Evalvacija

SMP uporablja dogovor in razreševanje kot orodje za evaluacijo storitev. Ker so dogovori napisani na nespremenljiv način, ponujajo neprikrite informacije o uporabnikih omrežja in njihovem delovanju znotraj ODP. Te informacije uporabnikom omogočajo, da se zaščitijo pred nepoštenimi ponudniki. Analiza preteklih dogovorov omogoča odkrivanje akterjev, ki imajo za seboj več spornih dogovorov (tam, kjer je prišlo do nasprotja), izključitev uporabnikov brez znane zgodovine in še druge bolj zapletene analize.

Slika 7: Postopek razreševanja dogovora po izvedbi storitve

(37)

3.1 Protokol 23

3.1.5 Razširljiva rešitev

V tem konceptu se tehnologija veriženja blokov uporablja za zaupanja vredne platforme, ki služijo za množična (posamezna) sodelovanja na decentraliziran način.

Ta tehnologija omogoča transakcije med dvema entitetama v P2P omrežju, APU pa omogoča, da na popolnoma pregleden in zaupanja vreden način sklepajo avtomatizirane storitve na pametnih pogodbah znotraj deljene proizvodnje. Večina aplikacij na omrežju verige blokov ne upošteva problemov razširljivosti tehnologije veriženja blokov in predlaga preprost koncept shranjevanja vseh podatkov in transakcij na glavni verigi. Vendar so javna omrežja tehnologije veriženja blokov draga in velika količina transakcij in podatkov iz APU znotraj koncepta deljene proizvodnje bi omrežje popolnoma zasedla in preobremenila. Zato se sistem v predlagani rešitvi opira na uporabo razširljivih rešitev, ki povečajo razširljivost v skladu z naravo koncepta deljene proizvodnje.

Rešitve L1 lahko povečajo razširljivost omrežij verige blokov le do določne mere, če ne v celoti žrtvujejo decentralizacijo (zasebna omrežja). Pomembno je tudi, da v takšnih decentraliziranih sistemih že majhna sprememba protokola zahteva okoren postopek dogovora skupnosti, saj ne obstaja en sam organ odločanja.

Vprašanje je, ali lahko te rešitve zagotovijo dovolj razširljiva omrežja, ki podpirajo povezavo ogromnega števila internet stvari naprav, ki so del večjih pametnih ekosistemov (pametna mesta, pametne tovarne, pametna omrežja). Predlaga se uporaba rešitve L2 za povezovanje ogromnega števila naprav v omrežje verige blokov, ki še povečujejo razširljivost sistemov na račun varnosti in decentralizacije.

Vendar pa posamezne mikro-transakcije, ki jih posamezne naprave izvajajo v takih ekosistemih, pa ne prenašajo velikih vrednosti, zato ni potrebe po zagotovitvi visoke ravni varnosti in decentralizacije za posamezne transakcije, temveč le za večji obseg tovrstnih transakcij. V primerjavi z obstoječimi sistemi zato v članku predlagajo uporabo stranskih verig znotraj koncepta deljene proizvodnje, ki temelji na tehnologiji veriženja blokov (slika 8).

Glavna značilnost predlaganega koncepta je ločitev izvrševanja transakcije od izvedbe funkcionalnosti znotraj koncepta deljene proizvodnje. Operativni model znotraj koncepta deljene proizvodnje omogoča tako posameznikom kot podjetjem, da so hkrati ponudniki in potrošniki storitev. Glavna veriga skrbi za shranjevanje pomembnih identifikacijskih podatkov porabnikov in njihovih sredstev, ko vstopijo na trg za plačilo storitev. Stranske verige pa skrbijo za nastavitev funkcionalnosti

(38)

tako, da delujejo kot platforma, na kateri lahko sodelujejo ponudniki storitev in potrošniki. To se naredi s pomočjo pametnih pogodb, ki omogočajo beleženje dogovorov in samodejno izvrševanje plačil. Med stranskimi verigami in glavno verigo je implementiran protokol, ki skrbi za potrditev pomembnih transakcij iz stranskih verig na glavno verigo. To zagotavlja delno verodostojnost transakcij in podatkov na stranskih verigah.

Ideja predstavljenega koncepta je ustvariti drevesno hierarhijo (slika 9) verig blokov, pri čemer se vsaka stranska veriga nanaša na nadrejeno verigo.

Slika 9: Hierarhija stranskih verig Slika 8: Razširljiva implementacija

(39)

3.2 Uporaba P2P komunikacijskega protokola 25

3.2 Uporaba P2P komunikacijskega protokola

S predlogom uporabe stranske verige se v veliki meri reši problem razširljivosti, vendar ostaja še en problem in to je čas generacije blokov. V omenjenem konceptu in predlaganih implementacijah bi celoten postopek, vse od faze odkrivanja storitve pa do faze evalvacije opravljene storitve, potekal neposredno preko uporabe pametnih pogodb, stanje katerih, se lahko "posodobi", le v novem bloku. To pomeni, da je potrebno za vsako novo informacijo čakati, da se v verigo potrdi nov blok z novimi transakcijami (podatki).

V nadaljevanju predlagamo uporabo vzajemnega komunikacijskega protokola za fazo pogajanja med potrošnikom ter ponudniki.

V fazi pošiljanja zahtev in prejemanja ponudb gre namreč samo za komunikacijo in so v tem primeru pametne pogodbe na EVM v trenutni obliki zelo neučinkovit način komunikacije. Taka komunikacija je neučinkovita zaradi potrebnega časa, s katerim prejemnik prejme sporočilo, saj je ta čas odvisen od generacije/potrditve novega bloka v omrežje in hkrati tudi trenutne zasičenosti omrežja. Bolj je omrežje zasičeno, večja bo cena, da bo transakcija vključena že v naslednji blok. Težavo prenasičenega omrežja in cene transakcij glavne Ethereum verige blokov se že rešuje z uporabo stranskih verig, vendar ostaja težava hitrosti potrditve novih blokov v omrežje. Časi generacije blokov se gibljejo od nekaj sekund navzgor.

Pri postavljanju svoje stranske verige ima uporabnik sicer možnost nastavitve časa generacije/potrjevanja blokov, vendar se zaradi omejitev strojne opreme tega časa ne da drastično zmanjšati predvsem zaradi problemov sinhronizacije med različnimi vozlišči v verigi, ki nastanejo pri nizkih časih. Časi potrjevanja se tako v praksi spustijo do približno pet sekund. Z uporabo P2P komunikacijskega protokola bi pospešili fazo dogovarjanja med entitetami in hkrati zmanjšali porabo goriva v omrežju, saj v tej fazi ne bi klicali funkciji pametnih pogodb. Z uporabo P2P komunikacije bi torej še dodatno razbremenili verige blokov in hkrati pohitrili fazo dogovarjanja med ponudniki in potrošniki storitev. Dodatna razbremenitev verige blokov je velikega pomena, saj se v okolju deljene proizvodnje pogovarjamo o velikem številu naprav, vključenih v verigo blokov, kar pomeni, da se zelo hitro dosežejo omejitve količin goriva na en blok. To seveda pomeni dodatno upočasnjevanje izmenjave podatkov, ker je potrebno čakati, da je transakcija potrjena

(40)

v verigo blokov. V drevesno hierarhijo je potrebno dodajati vedno več novih stranskih verig, kar pomeni večje stroške in večjo kompleksnost sistema. Ko nismo več omejeni z gorivom, se odprejo tudi še dodatne možnosti v samem konceptu, kot je npr. dodatna izmenjava podatkov med samim izvajanjem storitve. Ponudnik bi lahko npr. obveščal kupca o stanju njegovega "naročila" med izvajanjem storitve ipd.

Za doseči zgoraj omenjene cilje oz. izboljšave predlagamo uporabo Whisper komunikacijskega protokola. Whisper protokol je neposredno povezan z Ethereum tehnologijo veriženja blokov in je namenjen pošiljanju sporočil v decentraliziranih aplikacijah. Z uporabo Whisper protokola se prav tako ohrani decentralizacija sistema, ker gre za komunikacijski protokol vzajemnega omrežja. Poleg tega se ohrani tudi varnost, ker so sama sporočila šifrirana. Tehnologija deluje tako, da pošilja sporočila med Ethereum naslovi računov, kar naprave deljene proizvodnje na osnovi bločno verižne tehnologije že vključujejo. Zato pri sami fizični izvedbi ne bi bilo potrebnih nobenih sprememb, potrebnih bi bilo le nekaj dodatnih nastavitev na programskem nivoju.

3.2.1 Pogajanje preko P2P komunikacije

V prvotnem konceptu mora potrošnik najprej zapisati povpraševanje na verigo blokov, počakati, da se ta transakcija in blok potrdita v omrežju in šele takrat ponudniki vidijo oz. izvejo za povpraševanje. Podoben postopek je pri ponudnikih.

Ko želi ponudnik poslati ponudbo potrošniku, mora to ponudbo zapisati v pametno pogodbo potrošnika, počakati, da je ta transakcija potrjena v verigo blokov in šele takrat potrošnik izve za ponudbo. Vidimo, da je trenutna komunikacija je preko pametnih pogodb na EVM neučinkovita. Zato predlagamo izboljšavo faze pogajanja, kjer bi se za to uporabljala P2P komunikacija med napravami (slika 10)

Naprave komunicirajo s pošiljanjem zapakiranih oz. šifriranih paketov

"povpraševanje" ter "ponudba", podobno kot pri prvotnem konceptu, le da sedaj podatki niso zapisani na verigo blokov, ampak so poslani v obliki (zašifriranega)

"json" tipa datoteke neposredno na Ethereum vozlišče prejemnika. Torej potrošnik najprej iz registra prebere podatke (naslove) ponudnikov želene storitve, nato jim preko Whisper protokola pošlje na povpraševanje, ponudniki pa po prejetju povpraševanja prav tako ponudbe neposredno pošljejo na račun potrošnika preko Whisper protokola. Sekvenca je prikazana na sliki 11.

(41)

3.2 Uporaba P2P komunikacijskega protokola 27

Slika 10: Nadgradnja z Whisper protokolom

(42)

Slika 11: Whisper sekvenca sporočil

(43)

29

4 Metodologija raziskave

4.1 Implementacija sistema

V tem podpoglavju bomo opisali postopek implementacije sistema, ki uporablja protokol opisan v [7], ter implementacijo naše predlagane izboljšave.

4.1.1 Pametne pogodbe

Kot je bilo že do sedaj večkrat omenjeno, smo pametne pogodbe izdelali na bločno verižni tehnologiji Ethereum. Za izdelavo pametne pogodbe smo uporabili programski jezik Solidity, saj je daleč najbolj razširjen v svetu Ethereum pametnih pogodb in ima tako tudi največ podpore na internetu. Za razvojno okolje (ang.

developement enviroment) pametnih pogodb pa smo uporabili Truffle. Truffle omogoča kompilacijo kode pametnih pogodb, testiranje pametnih pogodb, uvedbo (ang. deploy) pametnih pogodb na Ethereum verige blokov, interaktivno konzolo, ki omogoča neposredno interakcijo s pametnimi pogodbami na verigi in še mnogo več.

Še posebej koristna je bila funkcija testiranja pametnih pogodb, saj enkrat, ko je pametna pogodba uvedena (ang. deployed) na bločno verigo, se programske kode ne da več spreminjati, zato je bilo ključnega pomena, da pametna pogodba deluje pravilno, preden smo jo uvedli v verigo blokov. Za samo testiranje pa je bila potrebna še veriga blokov, na kateri se testirajo pogodbe. Ker interakcije s pametnimi pogodbami stanejo določeno vsoto goriva in ker je to gorivo na Ethereum verigi blokov plačljivo, smo za testiranje uporabili program Ganache. Ganache omogoča zagon zasebne oz. lokalne verige blokov za namene razvijanja in testiranja pametnih pogodb. Sprogramirali smo pametno pogodbo za sklepanje dogovorov ter pametno pogodbo klienta za fazo pogajanja v primeru, ko ni implementiran komunikacijski protokol vzajemnega omrežja, da smo lahko pomerili in primerjali obe izvedbi.

(44)

Na začetku vsake pametne pogodbe sestavljene v programskem jeziku Solidity, je potrebno navesti različico programske kode Solidity, ki je uporabljena v programu.

Pred samo vsebino pametne pogodbe, se lahko v program uvozi različne Solidity knjižnice in že obstoječe pametne pogodbe. Uporabili smo knjižnico "SafeMath", ki ščiti pred napako prekoračitve in uvozili pametno pogodbo žetona, ki smo ga naredili za potrebe testiranja pogodbe. Zatem je sledil glavni del programa oz. pametne pogodbe.

Vsako pametno pogodbo je treba na začetku deklarirati, za tem sledi določitev konstruktorjev. Konstruktorji so konstante, ki se jih definira pri uvedbi pametne pogodbe na verigo blokov. Mi smo kot konstruktorje definirali lastnika pogodbe in naslov žetona, katerega se bo uporabljajo v pogodbi. To pomeni, da je potrebno ob uvedbi pametne pogodbe na verigo blokov dodati še naslov lastnika ter naslov žetona.

Nato sledijo definicije struktur, vektorjev, dogodkov in funkcij. Najprej smo definirali strukturo "dogovor". Strukture so zelo podobne razredom v objektno orientiranih programskih jezikih. V strukturi "dogovor" smo definirali 5 spremenljivk: ID dogovora, naslov potrošnika, časovni žig ob nastanku dogovora, ceno storitve in stanje. Stanje je spremenljivka tipa uint in se uporablja znotraj programa pametne pogodbe za preverjanje, v kateri fazi je trenutno dogovor. Možnih je 5 stanj: 0-ustvarjen dogovor, 1-podpisan, 2-razrešen s strani potrošnika storitve, 3- razrešen s strani ponudnika, 4-žetoni za plačilo storitve so bili uspešno preneseni na račun ponudnika, 5-napaka pri prenosu žetonov/sredstev.

Struktura "Dogovor (ang. Agreement)":

struct Agreement { address agreementID;

address consumer;

uint256 timestamp;

uint256 serviceCost;

uint8 state;

}

Pri strukturi dogovor smo uporabili tudi t. i. mapiranje. Mapiranje je sintaksa, s katero se ustvari neke vrste shramba. Če pogledamo naš primer:

Reference

POVEZANI DOKUMENTI

Bronfenbrenner definira ekologijo človekovega razvoja kot znanstveno proučevanje progresivne, vzajemne akomodacije med aktivnim, razvijajočim se posameznikom, ki je

V diplomskem delu smo se osredotočili na neposredni ogljični odtis gospodinjstev v občini Nazarje, ki se nanaša na porabo energentov za prevoz, porabo goriv za ogrevanje

Da bi zagotovili opisan namen, smo se v diplomskem delu osredotočili na analizo metod spletnega oglaševanja in metod spletne prodaje za podjetja, ki svoje izdelke in

Trabucco Zerán re- flexiona sobre el cuerpo enfermo como espacio en el que el virus se multiplica y so- bre el paralelismo que se puede establecer entre el cuerpo y la casa, como se

Predstavljamo zakol in klavno kakovost živali, pri katerih v sistemu kontrole prireje mesa spremljamo priraste do 200 kg žive mase in so bila zaklana v slovenskih klavnicah

Ni bil samo arhitekt spomenikov, bil je oblikovalec, raziskovalec, arhitekt stavb, spomenikov, arhitekt notranjosti ….. Imel je veliko idej, ter »žilico«

Pri primerjavi rezultatov dveh poskusov ob enakih pogojih: T=80 °C, enake sestavine (1žlica škroba, 4 žlice destilirane vode, 1žlička kisa in 1žlička glicerola) smo

Robot bo vozil po beli podlagi in po črni črti, saj tako bo senzor najlažje zaznal kdaj bo aktiven oz.. bo IR svetloba ali kdaj nebo