1 UVOD Razvoj elektronskih in internetnih storitev omogoča vedno nove storitve, ki nam lajšajo vsakdanja opravila in ponujajo nove načine izvajanja teh opravil. Klasični vzorec internetne komunikacije je, da je mogoče pošiljati podatke od koderkoli in kamorkoli v omrežju. Stranski učinek teh možnosti je, da se poslana vsebina lahko poljubno razmnoži in avtor od trenutka pošiljanja naprej nima več nadzora nad razmnoževanjem vsebine. Raziskovalci iščejo rešitev te težave na področju kriptografije, znotraj tega pa trenutno največ obljubljajo blokovne verige. Razvoj teorije in izvedbe blokovnih verig poteka že več desetletij, v praksi pa so se razširile šele z uvedbo verige Bitcoin [1]. Blokovne verige ponujajo funkcionalnosti, ki so najbolje prilagojene mehanizmom delovanja kriptovalut, torej obravnavajo finančne transakcije. Če bi želeli njihove lastnosti porabiti za drugačne vrste vsebin, bi jih bilo treba nadgraditi. Razvoj takšnih nadgradenj že poteka, kar bo predstavljeno kasneje. V tem delu bomo pregledali nabor rešitev, ki obljubljajo možnosti za shranjevanje velikih količin podatkov v sisteme na podlagi blokovnih verig in tudi možnosti, ki jih ponujajo za analizo tako shranjenih podatkov, kot jo poznamo na splošno na področju velepodatkov (angl. Big Data). V drugem razdelku bomo predstavili obe področji, ki se stikata na tej temi: značilnosti blokovnih verig in možnosti uporabe metod s področja analitike velepodatkov. V tretjem razdelku bodo predstavljeni sistemi, ki jih razvijajo na področju shranjevanja podatkov v navezavi z blokovnimi verigami. Dva možna načina analize blokovnih verig in pridruženih shranjenih Prejet 23. julij, 2018 Odobren 7. februar, 2019 ANALITIKA BLOKOVNIH VERIG IN ISKANJE POVEZANIH TRANSAKCIJ 131 podatkov bosta podana v četrtem razdelku. V petem razdelku pa bomo predstavili praktičen primer analize podatkov v blokovni verigi Ethereum z uporabo velepodatkovnih tehnologij, natančneje z uporabo grafovske podatkovne zbirke. 2 PREGLED OBRAVNAVANIH PODROČIJ 2.1 Blokovne verige Blokovne verige (angl. Blockchain) imajo več pomembnih značilnosti. Naslovi udeležencev in podpisi transakcij so zasnovani po sistemu javnih in zasebnih ključev, s čimer je zagotovljena anonimnost (psevdonimnost) uporabnikov. Več transakcij je združenih v bloke, ki so med seboj povezani tako, da naslednji blok v verigi vsebuje tudi zgoščeno vrednost prejšnjega bloka in s tem je zagotovljena nespremenljivost prejšnjih blokov. Blokovna veriga je shranjena na več računalnikih v omrežju (vozliščih) tako, da vsak od teh vsebuje popolno kopijo vse verige. Taki računalniki so poimenovani popolno vozlišče (angl. Full Node). Tako lahko vsako popolno vozlišče preveri veljavnost vse verige. Z razpršenostjo kopij verige je zagotovljena varnost pred izgubo podatkov ob odpovedi posameznih vozlišč. Nekatere blokovne verige omogočajo, da lahko del računalnikov shranjuje samo novejše dele verig, kar jim omogoča samo izvajanje transakcij, ne pa potrjevanja blokov. Vsak nov blok je treba po dodajanju potrditi, pri čemer lahko sodeluje vsako popolno vozlišče, kar doseže z izvajanjem »dokaza o opravljenem delu« (angl. Proof of Work – PoW) ali t.i. »rudarjenjem« (angl. Mining). Cilj tega postopka je najti naključno enkratno polnilo (angl. »nonce«), ki ustreza pravilu, da ga je težko najti, zelo preprosto pa je preveriti njegovo ustreznost. Pri potrjevanju bloka več popolnih vozlišč tekmuje, katero bo v krajšem času našlo pravo vrednost polnila. S tem je zagotovljena neodvisnost verige od osrednjega potrjevalca. Sodelovanje pri takem iskanju spodbuja pravilo, da vozlišče, ki najhitreje najde polnilo, dobi nagrado v obliki določenega zneska v isti kriptovaluti. Lastnosti blokovnih verig, kot so anonimnost, nespremenljivost, varnost pred izgubo podatkov in neodvisnost od osrednjega skrbnika, so zanimive tudi za uporabo na drugih področjih, ne samo pri kriptovalutah. Zaslužki, ki se obetajo sodelujočim pri uporabi in razvoju na področju kriptovalut, spodbujajo razvoj tehnologije, posledično pa tudi zanimanje za razvoj uporabe blokovnih verig na drugih področjih. Lastnosti, da je podatkovna shramba razmnožena1 po vozliščih v omrežju in da večje število transakcij potrjujejo hkrati, sta omejujoči, če bi želeli z blokovnimi verigami izvajati plačilni promet v obsegu, v kakršnem ga izvajajo veliki plačilni sistemi (npr. Visa), kjer sta število transakcij in njihova frekvenca bistveno večja kot 1 Podatkovna zbirka kriptovalut ni porazdeljena (distribuirana) v pravem pomenu besede, ker vsa vozlišča v omrežju vsebujejo enako pri današnjih blokovnih verigah. Izboljšava načina shranjevanja verige s prijemi, ki so znani iz velepodatkovnih rešitev, je predlagana npr. v [2]. Blokovne verige nastopajo v dveh vrstah izvedbe: javne, brez upravljanja s pravicami (angl. Permissionless), kamor spadajo trenutno najbolj razširjene kriptovalute (npr. Bitcoin, Ethereum, Ripple, Litecoin, …), in zasebne, z dodanim upravljanjem pravic (angl. Permissioned), kjer vozlišča v omrežju niso enakovredna v smislu, da za potrjevanje veljavnosti blokov skrbi določena podmnožica vozlišč. 2.2 Velepodatki Velepodatki (angl. Big Data) so področje računalništva (ali širše informacijsko-komunikacijskih tehnologij), kjer je predmet obdelave tako velika količina podatkov, da jih ni mogoče shraniti na posamezen računalnik. Za obdelave velepodatkov se uporabljajo velike gruče (angl. Cluster) računalnikov, ki so med seboj povezani z zmogljivimi omrežnimi povezavami. Take konfiguracije računalnikov se uporabljajo tudi v oblaku (angl. Cloud), kjer je več gruč razmeščenih po različnih geografskih lokacijah in s tem omogočajo shranjevanje poljubnih podatkov zelo velikemu številu uporabnikov. Shranjevanje podatkov v gruči ali v oblaku pa ima nekaj pomanjkljivosti. Glavna ovira pri večjem razmahu uporabe javnih oblakov je nezaupanje uporabnikov do ponudnikov oblaka. To nezaupanje sicer ni tako, da bo upravitelj oblaka shranjene podatke zlorabil ali uničil, ampak da lahko do podatkov neupravičeno pride zaradi radovednosti. Rešitev, da uporabniki kriptirajo vsebino, preden jo shranijo v oblak, je sicer za te uporabnike zadovoljiva, ne omogoča pa velepodatkovne analize teh podatkov, kar bi bil lahko dodaten vir dohodka za ponudnike storitve shranjevanja v oblaku in s tem zniževanja stroškov za uporabnike. Novejši predlogi za izboljšanje te funkcionalnosti gredo v smeri enkripcijskih shem, ki bi vsaj deloma omogočale pridobivanje podatkov iz kriptiranih vsebin, ob obveznem varovanju zasebnosti lastnikov teh vsebin. Predlagane enkripcijske sheme so: diferencialna zasebnost (angl. Differential Privacy) [3], homomorfna enkripcija [4] in iskalna simetrična enkripcija (angl. Searchable Symmetric Encryption – SSE) [5]. Nastala je tudi relacijska podatkovna zbirka CryptDB [6], ki omogoča izvajanje nekaterih relacijskih operacij v jeziku SQL nad kriptiranimi podatki, ne da bi bili nekriptirani podatki razkriti strežniku, kjer so shranjeni. Pri uporabi sistemov, ki omogočajo operacije nad kriptiranimi podatki brez razkrivanja izvirnih podatkov, pa so mogoči napadi s kriptoanalizo, zato je treba te sisteme uporabljati zelo previdno, na kar so avtorji sistema CryptDB opozorili v [7]. Poleg varovanja zasebnosti je v nekaterih primerih uporabe zaželena lastnost tudi nespremenljivost shranjenih podatkov. Za ta namen bi lahko uporabili kopijo celotne zbirke. Porazdeljeno je samo pridobivanje konsenza o gradnji verige. 132 DROBNIČ, SEDLAR, KOS, PUSTIŠEK blokovne verige, ki pa bi jih bilo treba razširiti tako, da bi bilo mogoče z njimi zaščititi večje količine podatkov. Blokovna veriga Ethereum [8], ki je nastala po vzoru verige Bitcoin, omogoča različne razširitve, kar ji omogoča dodatna zmožnost »pametnih pogodb« (angl. Smart Contract). Trenutne izvedbe blokovnih verig, ki so zasnovane samo z upoštevanjem zahtev kriptovalut, pa izkazujejo omejitve pri frekvenci potrjevanja transakcij in količini shranjenih podatkov, kar so razčlenili v [9] in pokazali, kateri deli zasnove sistemov z blokovnimi verigami lahko povzročijo te težave in jih bo treba v prihodnosti izboljšati. Pomembno področje, ki je primerno za uporabo blokovnih verig, so informacijski sistemi v zdravstvu. Tu so blokovne verige zanimive predvsem zaradi velikih zahtev po varovanju podatkov o boleznih in zdravljenju [10], kjer naj bo bolnik tisti, ki odloča o dostopnosti podatkov vsem drugim udeležencem v procesu zdravljenja. Tako je nastalo nekaj pobud: [11], [12], kjer z uporabo blokovne verige z upravljanjem pravic omogočajo bolniku, da učinkovito dostopa do vseh svojih podatkov, ne glede na to, v kateri zdravstveni ustanovi so ti podatki nastali, poleg tega pa tudi kadarkoli določi, kdo sme vpogledovati v te podatke ali jih spreminjati. Raziskovanje je spodbudilo tudi ameriško ministrstvo, pristojno za zdravje [13]. Lastnosti blokovnih verig bi bile lahko koristne tudi pri elektronski izvedbi glasovanj [14], vendar pri tem ostajajo nerešena številna pomembna vprašanja. 3 SHRANJEVANJE VELIKIH KOLIČIN PODATKOV IN BLOKOVNE VERIGE Na podlagi verige Ethereum je nastalo več predlogov rešitev za shranjevanje velikih količin podatkov. Skoraj vse delujejo na omrežju enakopravnih vozlišč (angl. Peer-to-Peer, P2P), kar pomeni, da nobeno vozlišče nima drugačne vloge kot preostala. Z uporabo porazdeljene zgoščene tabele (angl. Distributed Hash Table – DHT), ki omogoča preverljivo nespremenljivost vsebin, v prihodnosti pa tudi jamstvo dosegljivosti, in omrežne topologije Kademlia so nastale decentralizirane datotečne shrambe. Swarm [15] je del osnovnega sklada programske opreme verige Ethereum. Storj [16] namesto dokaza o opravljenem delu uporablja dokazovanje zmožnosti pridobivanja shranjene vsebine (angl. Proof of Retrievability). Analitika je pri tem sistemu mogoča samo na javno objavljenih vsebinah (ki so zaščitene pred spreminjanjem), ne pa na zasebnih, ker so kriptirane po sistemu javnih ključev (PKI). IPFS [17] uporablja ideje iz uspešnih v praksi izvedenih sistemov, kot so BitTorrent (izmenjava datotek), Git (vodenje različic datotek), Self-Certifying File Systems (porazdeljeni globalni imenski prostor) in drugi. IPFS kot plačilno sredstvo lahko uporablja Filecoin [18]. To je kriptovaluta, pri kateri za potrjevanje blokov tekmujejo ponudniki (rudarji) s količino prostora, ki ga namenjajo shranjevanju podatkov. Avtorji sistemov Swarm in IPFS priznavajo, da sta si po zmožnostih in načinu uporabe zelo podobna, čeprav so tehnični vidiki izvedbe različni. UStore [19] je shramba, ki za zdaj deluje samo v delovnem pomnilniku. Enigma [20] na drugi strani omogoča izvajanje obdelav nad shranjenimi podatki ob ohranjanju tajnosti teh podatkov. Podatke obdeluje samo del vozlišč (izbranih naključno), kar omogoča večjo razširljivost omrežja. Ta vozlišča obdelujejo samo del podatkov z uporabo homomorfne enkripcije, tako da nikakor ne morejo priti do celotnih podatkov. MaidSafe oz. SAFE Network [21] ponuja storitve shranjevanja koščkov datotek (in v prihodnosti tudi izvajanja postopkov), za plačevanje teh storitev ima predvideno kriptovaluto Safecoin. Sia [22] uporablja za shranjevanje blokovno verigo, na katero shranjuje pametne pogodbe, s katerimi zagotavlja plačevanje za uporabo shrambe. Pametne pogodbe omogočajo večjo frekvenco operacij shranjevanja, saj tako v blokovni verigi ni treba potrditi vsake posamezne datotečne operacije, ampak samo pametno pogodbo. Plačevanje poteka v kriptovaluti Siacoin. Deli datotek so kriptirani po algoritmu Twofish in med vozlišči razpršeni po algoritmu Reed-Solomon. Holochain [23] gradi, podobno kot Storj, na DHT in omogoča deljenje računalniških virov, za to pa ponudnik dobi plačilo v posebni kriptovaluti. Vsak sodelujoči ima pri sebi ločeno verigo podatkov, na skupno verigo pa shrani samo nekatere podatke, ki smejo biti javni. Tako je omogočena zasebnost nekaterih podatkov. Drugače, kot pri drugih blokovnih verigah, je zasnovan konsenz, ki ni globalen, ampak se zgradi samo med udeleženci posameznega posla. iEx.ec [24] je sistem za izmenjavo računalniških procesnih virov, ki omogoča preverljivo (z Merkle-ovim preverjanjem) izvajanje naročenih obdelav na šibko povezanih računalnikih (tudi npr. na neizkoriščenih virih na domačih računalnikih) in vključuje sistem za plačevanje teh storitev na podlagi blokovnih verig; omogoča tudi velepodatkovne pristope (prilagojen sistem MapReduce) in pri tem podpira zelo veliko udeleženih računalnikov. IOTA [25] namesto blokovne verige uporablja usmerjeni aciklični graf (angl. Directed Acyclic Graph – DAG), potrjevanje transakcij je nekoliko drugačno. Namesto potrjevanja blokov z več transakcijami tu vsaka posamezna transakcija potrdi vsaj dve drugi transakciji. Za potrjevanje ni nagrade, zasnovana pa je na splošno ob predpostavki uporabe v IoT, kjer so vozlišča omejeno računsko zmogljiva. BigchainDB [26] je zasnovan v nasprotni smeri, kot druge rešitve: osnova je porazdeljena velepodatkovna baza (MongoDB ali RethinkDB), ki so jo nadgradili z lastnostmi blokovnih verig. Vozlišča tu niso enakovredna, potrjevanje transakcij in dodeljevanje pravic je v rokah manjšega števila posebej izbranih zaupanja vrednih vozlišč. Poizvedovanje omogoča že uporabljena baza, nadgradnja pa zagotavlja sistem pravic, kjer avtor vsebine sme to vsebino vstaviti v bazo, drugi pa smejo dostopati do te vsebine samo, če jim je http://sia.tech/ ANALITIKA BLOKOVNIH VERIG IN ISKANJE POVEZANIH TRANSAKCIJ 133 bila dodeljena taka pravica, kar je zagotovljeno s kriptografskimi sredstvi. 4 ANALIZA PODATKOV V BLOKOVNIH VERIGAH Analiza podatkov je glede na vrsto podatkov, ki jih analiziramo, lahko taka, da analiziramo: - podatke, ki so pridruženi blokovni verigi in so shranjeni na drugih mestih, blokovna veriga pa jim zagotavlja določene lastnosti; - podatke znotraj blokovne verige (naslove, zneske, časovne žige ipd.). Postopke pod prvo alinejo bi lahko poimenovali »zunanja«, pod drugo pa »notranja« analiza. 4.1 Zunanja analiza blokovne verige Podatke znotraj blokovne verige lahko analiziramo v povezavi z zunanjimi podatki, ki so po svojem izvoru lahko povezani z obravnavano blokovno verigo (npr. imena nekaterih lastnikov računov, ki so objavljena na spletnih portalih) ali pa nimajo take povezave (npr. podatki o dogodkih v družbi ali gospodarstvu). Primer orodja za tako analizo sta [27] in [28]. Primer novejšega predloga za izvedbo iskanja po zunanjih podatkih, namenoma shranjenih pridruženo k blokovnim verigam, je SSE-using-BC avtorjev Li et al. [29]. 4.2 Notranja analiza blokovne verige Ker so blokovne verige zelo dolg seznam transakcij, torej prenosov določenih zneskov z enega naslova na drugega, je najbolj naraven shematski zapis zanje usmerjeni graf [27] [30] [31]. V grobem oba naslova pomenita vozlišči, transakcija med njima pa pomeni usmerjeno povezavo med tema vozliščema. Podrobnejše semantično modeliranje blokovnih verig je predstavljeno v [32]. Raziskovalci so razvili veliko metod, ki z uporabo analize grafov iz blokovne verige pridobijo uporabne informacije, kot so iskanje nenavadnih transakcij, velikokrat povezanih z nezakonitimi dejavnostmi, napovedovanje rasti blokovne verige v prihodnosti ipd. Primer uporabe take metode je iskanje dejavnosti posameznega uporabnika. Čeprav je blokovna veriga anonimna, z različnimi metodami odkrivanja skupnosti (angl. Community Detection) lahko sorazmerno uspešno najdemo nabor transakcij, ki pripadajo določenemu uporabniku (reidentifikacija). 5 NOTRANJA ANALIZA BLOKOVNE VERIGE ETHEREUM ZA ISKANJE POVEZANIH TRANSAKCIJ Motivacija za naše delo je v tem, da se večina raziskav blokovnih verig namenja verigi Bitcoin. Ker so orodja za k blokovnim verigam pridruženo shranjevanje velikih količin podatkov še v razvojni fazi, smo se usmerili v »notranjo« analizo podatkov blokovnih verig in znotraj tega posebej v blokovno verigo Ethereum. V [32] je sicer podan splošen predlog predstavitve blokovne verige Ethereum z grafom, ni pa podrobno predstavljena konkretna izvedba takega grafa. Poleg predstavitve blokovne verige z grafom smo želeli tudi po vzoru analize povezanih naslovov, ki je spet bolj na primeru verige Bitcoin predstavljena v [30], narediti podobno analizo povezanih naslovov še za verigo Ethereum. Pomembna razlika med verigo Bitcoin in verigo Ethereum je ta, da pri prvi v isti transakciji sodeluje več izvornih in več ciljnih naslovov (angl. Multiple Input Multiple Output – MIMO). S tem, da ti naslovi sodelujejo v isti transakciji, lahko dokaj zanesljivo sklepamo na njihovo povezanost tudi zunaj blokovne verige. Pri verigi Ethereum je ta povezava šibkejša, ker se tu transakcije izvajajo vedno z enega izvornega na en ciljni naslov (angl. Single Input Single Output – SISO). Na njihovo povezanost bi lahko sklepali zgolj iz nastopanja v skupini več medsebojno povezanih transakcij. V tem delu smo se omejili na iskanje obhodov (vase zaključenih sprehodov [33]) v grafu in to v kratkem časovnem intervalu. Blokovne verige same ne ponujajo zmogljivih orodij za njihovo analizo, ponujajo pa programske vmesnike (API), s katerimi lahko iz njih pridobimo podatke in jih potem obdelamo z drugimi orodji. Tako smo iz blokovne verige Ethereum z uporabo vmesnika Web3 [34] pridobili naslednje podatke o transakcijah: - naslov pošiljatelja, - naslov prejemnika, - zgoščeno vrednost transakcije (angl. Hash), - vrednost transakcije, - čas nastanka, - številko bloka in zaporedno številko transakcije v bloku. Omejili smo se samo na transakcije med t.i. »zunanjimi« naslovi, to so naslovi, ki pripadajo uporabnikom. Poleg teh veriga vsebuje še naslove, ki pripadajo pametnim pogodbam, ki pa jih nismo pridobili. Tako pridobljene podatke smo prenesli v grafovsko podatkovno zbirko Neo4j [35], ki je zmožna tudi obdelave velepodatkov, če je nameščena na gruči računalnikov. Obhode bi z drugimi orodji (npr. relacijskimi podatkovnimi zbirkami) težje odkrili. Nekatere relacijske podatkovne zbirke nimajo posebnih orodij za iskanje hierarhičnih odnosov in jih je treba simulirati z večkratnimi stiki, kar omejuje globino iskanja. Druge (npr. Oracle) imajo tako orodje (START WITH … CONNECT BY), ki pa postane z večjo globino iskanja manj učinkovito. V grafovski podatkovni zbirki sta osnovna gradnika vozlišče in povezava. Vozlišče ima lahko uporabniško določeno oznako (angl. Label), povezava pa tip (angl. Type). Dodatno lahko shranjujeta tudi pridružene podatke, ki jim rečemo lastnosti (angl. Properties). Omejitev pri tem je, da je mogoče indeksiranje za hitrejše iskanje samo na lastnostih, ki so pridružene vozliščem. Zato smo opustili model, pri katerem bi vozlišča pomenila naslove, povezave pa transakcije, in smo naredili dva drugačna modela. Pri prvem smo kot 134 DROBNIČ, SEDLAR, KOS, PUSTIŠEK vozlišča določili naslove in transakcije, kot povezave pa dejanske povezave od izvornega naslova do transakcije in na drugi strani od transakcije do ciljnega naslova. Drugi model pa smo zastavili kot model prehajanja stanj, kjer vozlišča ponazarjajo dogodke prejema zneska na ciljni naslov, povezave pa transakcije. 5.1 Model z naslovi in transakcijami kot vozlišči Vrednosti naslovov smo vpisali kot lastnost vozlišč naslovov, podatke o transakciji smo vpisali kot lastnosti vozlišč transakcij, povezave pa niso dobile dodatnih lastnosti. V uporabljeni podatkovni zbirki smo pri tem modelu vozlišča naslovov označili z oznako Naslov, vozlišča transakcij z oznako Tx, usmerjene povezave pa z oznakama P1 in P2. Povezavi sta usmerjeni v smeri poteka transakcije. Model posamezne transakcije prikazuje slika 1. Slika 1: Model posamezne transakcije Posamezno transakcijo bi lahko zapisali v sintaksi deklarativnega poizvedovalnega jezika Cypher [36], ki ga uporablja izbrana podatkovna zbirka, takole: (:Naslov {naslov: …}) -[:P1]->(:Tx {zgostitev: …, vrednost: …, datum: …, blok: …, zap_stev: …}) -[:P2]->(:Naslov {naslov: …}) V okroglih oklepajih so zapisana vozlišča, v oglatih pa povezave. Oznake vozlišč in tipi povezav se začnejo z dvopičjem, v zavitih oklepajih pa so navedene lastnosti objektov v sintaksi JSON. Znak minus ponazarja potek povezav, usmerjenost povezav pa določata znaka > ali <. Prelomi vrstic niso potrebni, tu so narejeni zaradi boljše preglednosti. Izdelali smo tri indekse: na lastnostih naslov, zgostitev in blok. Prva dva sta enolična, tretji pa navaden. Po zgledu analize v [27] [30] [32] smo izvedli poizvedbe, ki bi lahko dale dodaten vpogled v dogajanje v blokovni verigi. Zanimivi so obhodi (sprehodi v grafu, kjer sta izhodišče in cilj isto vozlišče). Primer poizvedbe v jeziku Cypher, ki vrne take obhode: MATCH p=((n:Naslov)-[*1..5]->(t:Tx)-[*1..5]- >(n:Naslov)) RETURN * LIMIT 9 Omejitev, ki zahteva sklenjen krog povezav, je v tem, da sta na začetku in na koncu zahtevanega vzorca enaka vzdevka vozlišč (n:Naslov). Med vozlišči zahtevamo tudi vsaj eno in največ pet povezav (*1..5), in to na vsaki strani transakcije. S tem se izognemo zankam, kjer transakcija poteka v enem koraku iz istega naslova vase samega. Te preproste transakcije bi lahko hitro odkrili tudi z drugačnimi orodji, npr. relacijsko podatkovno zbirko. Omejitev LIMIT je namenjena hitrejši izvedbi poskusne poizvedbe, kjer smo želeli prikazati samo en obhod. Brez te omejitve bi preiskovanje celotne podatkovne zbirke trajalo dlje časa. Grafično prikazuje del rezultata te poizvedbe slika 2. Obhod se začne v vozlišču levo zgoraj in se nadaljuje s povezavo navzdol in naprej v nasprotni smeri urinega kazalca. Prikazane transakcije so se zgodile v blokih od 1007871 do 1047839, kar ustreza časovnemu obdobju od 15.2.2016 12:49:54 UTC do 23.2.2016 11:55:39 UTC. Med naslovoma desno zgoraj in levo zgoraj so bile kasneje izvedene še nekatere druge transakcije, ker pa niso ključne za tvorbo obhoda, smo jih zaradi preglednosti izpustili. Slika 2: Primer obhoda transakcij Vsi primeri obhodov v tem grafu pa ne kažejo povezanega toka vrednosti. Primer obhoda, ki ga kaže slika 3, vrne poizvedba: MATCH p=((n:Naslov)-[*5..]->(t:Tx)-[*5..]- >(n:Naslov)) RETURN * LIMIT 1 Številke blokov, v katerih so nastale posamezne transakcije, so za veliki lok, ki teče od leve spodaj čez zgornji del slike na desno: 1284052, 1577779, 1551452, 51913, 55500, … Ta obhod torej kaže neko drugačno, naključno povezavo med računi. ANALITIKA BLOKOVNIH VERIG IN ISKANJE POVEZANIH TRANSAKCIJ 135 Slika 3: Primer vsebinsko nepovezanega obhoda Poizvedba v jeziku Cypher, ki bi izločila takšne obhode, bi bila dokaj zahtevna, zato je bolje to obdelati v aplikaciji na proceduralni način. Zato smo razvili drugačen model, ki bo predstavljen v nadaljevanju. 5.2 Model s prehajanjem stanj Drugi model smo zastavili tako, da so vozlišča označena kot Prejem in imajo sestavljeni enolični ključ, ki vsebuje ciljni naslov, številko bloka in zaporedno številko transakcije v bloku. Dodatna lastnost vozlišča je izvorni naslov, s katerega je prispel znesek. Povezave so tipa Tx in so enolično označene z zgoščeno vrednostjo transakcije, kot dodatne lastnosti pa vsebujejo vrednost transakcije in datum. Izhajajo iz zadnjega vozlišča (vzamemo največjo številko bloka), na katerem je nastopal izvorni naslov. Vozlišča, ki so na začetku takih zaporedij transakcij, smo dodali umetno in jim dali enako oznako kot preostalim, za ciljni naslov dali dejanski izvorni naslov transakcije, številko bloka in transakcije pa smo napolnili z nič. Slika 4: Model transakcije s prehajanjem stanj Tako modeliran graf pokaže zaporedne prehode vrednosti med naslovi, kot so se izvajali. Slaba stran tega modela pa je, da vsak naslov nastopa v grafu večkrat in je treba za iskanje naslovov vedno ustrezno omejiti želeno območje številk bloka. Obenem dejanski obhodi v smislu prvega modela v tem modelu niso grafično prikazani krožno, ampak v obliki drevesa, kjer korensko vozlišče in vsi listi pripadajo istemu naslovu. Primer obhoda med računi, kjer pa zaključenost sprehoda vase na prvi pogled ni vidna, kaže slika 5 in jo vrne poizvedba v jeziku Cypher: MATCH p=((n:Prejem)-[*8..]->(m:Prejem)) WHERE n.cilj = m.cilj AND m.blok < 700000 RETURN * LIMIT 1 Slika 5: Primer obhodov v drugem modelu Slika 6: Obhodi v drugem modelu s številkami blokov Obhod se začne pri vozlišču na vrhu levo in poteka v smeri, nasprotni urnemu kazalcu. Oznaka naslova iz prvega vozlišča se ponovi še na koncu prikazane verige transakcij, pa tudi vmes (na 2. in 5. mestu), kar pomeni, da je ta naslov večkrat sodeloval v tem zaporedju transakcij. To bi v smislu prvega modela pomenilo več krogov z istim izhodiščnim in ciljnim naslovom. Tu smo že z modelom zagotovili, da si številke blokov sledijo v smeri povezav naraščajoče od 64242 do 64560, kot kaže slika 6. Poizvedbe, ki iščejo obhode, v tem modelu najdejo tudi vzporedne strukture. Primer prikazujeta slika 7 in slika 8 kot rezultat podobne poizvedbe, kot zgoraj, le z drugačnimi omejitvami območja številk blokov. Tu sta se dva podobna obhoda zgodila v različnih časovnih obdobjih, imata pa prvo transakcijo skupno. Vrednosti transakcij, ki nastopajo v krožnih povezavah, sicer niso enake. Pri obeh opisanih modelih predstavitve z grafom pa iz obhodov vidimo mogočo medsebojno povezanost teh naslovov. 136 DROBNIČ, SEDLAR, KOS, PUSTIŠEK Slika 7: Vzporedna obhoda v drugem modelu Slika 8: Vzporedna obhoda v drugem modelu s številkami blokov Z izvajanjem poizvedb v grafovski podatkovni zbirki smo našli tudi več kot 100 korakov dolge obhode, kar bi bilo z relacijsko tehnologijo težje doseči. Tako pridobljeni podatki lahko nakazujejo povezanost udeleženih naslovov, ker je mogoče sklepati, da v kratkem času popolni neznanci ne bi mogli izpeljati tako povezanih transakcij brez dogovora. Pri tem gre lahko za popolnoma legalne dogovore, lahko pa tudi za prikrivanje prenosa denarja ali poskuse vplivanja na ceno same kriptovalute z izvajanjem fiktivnih transakcij in podobno. Iz podatkov same blokovne verige narave teh povezav ne moremo ugotoviti, zato moramo najdene povezave preveriti še z drugimi podatki, npr. z zajemanjem svetovnega spleta. 6 SKLEP Razvoj sistemov za shranjevanje velikih količin podatkov vključuje tudi uporabo blokovnih verig za zagotavljanje posebnih lastnosti: nespremenljivosti, splošne dostopnosti podatkov in boljšega upravljanja uporabe shranjenih vsebin. Ob tem se razvijajo tudi metode za analitiko nad kriptiranimi podatki, ki bi bili shranjeni povezano z blokovnimi verigami. Trenutno pa so vsi primeri teh sistemov še v razvojni fazi in široka uporaba še ni mogoča. Podobno kot so bile blokovne verige že analizirane, smo izvedli analizo blokovne verige Ethereum z uporabo grafovske podatkovne baze. Razvili smo dva podatkovna modela za ponazoritev dogodkov v blokovni verigi, ki omogočata analizo medsebojne povezanosti naslovov: model z naslovi in transakcijami kot vozlišči in model s prehajanjem stanj. Z njuno uporabo smo v podatkih blokovne verige Ethereum našli vase zaključene verige transakcij, iz česar lahko sklepamo na njihovo povezanost tudi zunaj blokovne verige. Ta dva modela sta potencialno uporaben pripomoček pri raziskovanju zanimivih pojavov v blokovni verigi Ethereum, tudi v povezavi z drugače pridobljenimi podatki o teh naslovih. V prihodnosti bomo z njima nadaljevali raziskave v smeri odkrivanja skupnosti, iskanja sumljivih transakcij in podobno, za kar bomo uporabili metode razpoznavanja vzorcev in širšega področja umetne inteligence.