UPORABNA INFORMATIKA 102 2025 - πtevilka 2 - letnik XXXIII Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum Mitja Gradišnik, T ina Beranič, Muhamed T urkanović Fakulteta za elektrotehniko, računalništvo in informatiko, Univeza v Mariboru, 2000 Maribor mitja.gradisnik@um.si, tina.beranic@um.si, muhamed.turkanovic@um.si Izvleček Pri razvoju decentraliziranih aplikacij (dApps) se tradicionalni razvojni procesi pogosto izkažejo za nezadostne. T ovrstne rešitve zah - tevajo večji poudarek na tehničnih, varnostnih in uporabniških vidikih kakovosti aplikacij, kot smo jih sicer vajeni pri razvoju klasičnih rešitev . Ker je spreminjanje pametnih pogodb po namestitvi v omrežje verig blokov zahtevno oziroma nemogoče, sta temeljito testi - ranje ter presoja programske kode ključnega pomena za uspešen razvoj tovrstnih rešitev . Optimizacija stroškov goriva, nujna za iz - vrševanje programov v javnih omrežjih, predstavlja enega ključnih razvojnih izzivov , ki ga je potrebno ustrezno obravnavati. Poleg tega specifično okolje omrežij veriženja blokov zahteva ustrezne ukrepe za obvladovanje tveganj povezanih z ranljivostmi aplikacij in more - bitnimi povezanimi finančnimi izgubami. Nespremenljivost, stroški goriva in zagotavljanje varnosti so le nekateri izmed ključnih ra - zvojnih izzivov , ki jih je treba uspešno nasloviti pri izgradnji kakovostnih in stabilnih decentraliziranih aplikacij. Prispevek obravnava izzive, sodobne pristope in strategije razvoja decentraliziranih aplikacij ter podaja priporočila za njihov zanesljivejši in učinkovitejši razvoj, s čimer naslavlja ključne izzive uvajanja tehnologij veriženja blokov v industrijska okolja ter razvoja pametnih pogodb. Poseben poudarek je namenjen pametnim pogodbam, ki temeljijo na omrežju Ethereum. Ključne besede: verige blokov , proces razvoja dApps, testiranje, vzdrževanje, obvladovanje stroškov transakcij, presoje Analysis of Quality Assurance Specifics in the Development of Decentralized Applications in the Ethereum Environment Abstract In the development of decentralised applications, traditional development processes often prove insufficient. Such solutions require greater emphasis on the technical, security , and user experience aspects of application quality than is common in developing con - ventional applications. Since modifying smart contracts after deployment on a blockchain network is challenging or even impossible, thorough testing and code review are crucial for successfully developing such solutions. Optimising gas consumption, which is es - sential for executing programmes in public networks, represents one of the key development challenges that must be adequately addressed. Furthermore, the specific environment of blockchain networks demands appropriate measures to manage risks associ - ated with application vulnerabilities and potential financial losses. Immutability , gas consumption, and security are critical deve - lopment challenges that must be successfully tackled to build high-quality and stable decentralised applications. This paper addres - ses the challenges and modern approaches and strategies for dApp development. It offers recommendations for their more reliable and efficient implementation, thereby tackling key issues related to adopting blockchain technologies in industrial settings and de - veloping smart contracts. Emphasis is placed on smart contracts based on the Ethereum network. Keywords: Blockchain, dApps development process, testing, maintainability , cost management, audits PREGLEDNI ZNANSTVENI PRISPEVKI UPORABNA INFORMATIKA 103 2025 - πtevilka 2 - letnik XXXIII 1 UVOD Pospešen razvoj tehnologij veriženja blokov v za- dnjih letih odpira vrata številnim inovacijam na področjih elektronskega poslovanja in shrambe po- datkov ter pomembno prispeva k uvajanju novih poslovnih modelov [1]. Ključni pospeševalec teh ino- vacij je predvsem decentralizirana narava okolja ve- rig blokov. Pred vpeljavo tehnologij veriženja blokov je naša družba temeljila na vzpostavljanju zaupanja med deležniki, pri čemer so ključno vlogo odigrali zaupanja vredni posredniki [2]. Tipičen primer take- ga posrednika so banke. Banke, kot zaupanja vreden posrednik, poskrbijo za prenos sredstev med komi- tenti, pri čemer morajo ti banki zaupati. Komitenti morajo banki zaupati svoja denarna sredstva ter zau- pati v pravilnost izvedenih transakcij in zanesljivost njihovih zapisov, da bi omenjeni mehanizem lahko uspešno deloval. Na tehnologijah veriženja blokov temelječe pro- gramske rešitve odpravijo potrebo po zaupanja vrednem posredniku med akterji, ki so vpleteni v elektronsko poslovanje. Zaupanje se prenese na de- centralizirane sisteme same, konkretno na uporabo ustreznih kriptografskih metod in na delovanje po- razdeljenega in decentraliziranega omrežja [3]. V praksi to pomeni, da tako grajene rešitve omogočajo varne in verodostojne transakcije med akterji, med katerim sicer ni potrebe po vzpostavitvi predhodne- ga zaupanja, za katerega bi skrbel zaupanja vreden posrednik. Tehnologije veriženja blokov ponujajo možnost izvajanja transakcij med dvema ali več ano- nimnimi deležniki preko mehanizma vnaprej dogo- vorjenih in zapisanih procedur, imenovanih pame- tne pogodbe [4]. Izboljšana varnost, transparentnost in decentralizacija elektronskega poslovanja so tako ključni stebri inovacij, ki jih prinaša vpeljava tehno- logij veriženja blokov. Inovatorji na področju vpeljave tehnologij veri- ženja blokov v poslovne procese izhajajo iz različnih gospodarskih domen, pri čemer prednjačijo področja decentraliziranih financ, zavarovalništva, dobavnih verig in logistike, zdravstva, upravljanja digitalnih identitet ter javne uprave [5], [6]. Tehnologije veriže- nja blokov omogočajo razvoj novega tipa program- skih rešitev, ki realizirajo njihove ideje. Posledično se v zadnjem času pojavlja čedalje več aplikacij razvitih na temeljih tehnologij verig blokov, ki jih imenujemo decentralizirane aplikacije ali krajše dApps [7]. Jedro tehnologij predstavljajo linearno struktu- rirane verige blokov, v katere se zapisujejo stanja in transakcije izvršene med deležniki omrežja [8]. Operacije upravljanja s podatki so pri tem enosmer- ni proces. Omogočeno je zapisovanje oz. dodajanje zapisov, ne pa tudi njihovo spreminjanje ali brisanje. Tako zapisani podatki ostanejo v verigah blokov traj- no [9]. Ker imajo podatkovni bloki omejeno kapaci- teto, se zapisi razpršeni čez več podatkovnih blokov, ki so urejeni po času ustvarjanja tvorijo verige [8]. Ce- lotna strukturo, na kateri decentralizirane aplikacije temeljijo in vanjo zapisujemo podatke, imenujemo porazdeljena knjiga transakcij (angl. distributed led- ger) [10]. Posege v integriteto tako zapisanih podat- kov preprečuje vrednost zgoščevalne funkcije vsebi- ne bloka. Ta se zapiše v sledeči blok in tako ustvarja trajne povezave med podatkovnimi bloki. S tem se gradi verižna podatkovna struktura podprta z Mer- klovimi drevesi [11]. Nezmožnost brisanja zapisanih podatkov daje programskih produktom, ki temeljijo na verigah blokov, eno izmed ključnih lastnosti, in si- cer nespremenljivost zapisov. Nespremenljivosti za- pisov je ključna lastnost verig blokov, na kateri teme- lji varnost in zaupanje v ustvarjene zapise. Varnost zapisanih podatkov krepi odpornost na manipulacije in možnost sledenja spremembam [9]. Zaupanje v zapise krepi transparentnost in inte- griteto zapisanih podatkov, saj so, zaradi distribui- ranega okolja omrežja verig blokov, vsi zapisi vidni vsem deležnikom. Za slednje je ključna porazdelje- nost zapisov med vozlišči omrežja verig blokov. Pro- tokoli pri tem poskrbijo za replikacijo, tako da ima vsako vozlišče v omrežju popolno kopijo podatkov, kar naredi zapise robustne in odporne na izgubo. Slednje dodatno prispeva k varnosti zapisanih po- datkov. Potrjevanje stanja podatkov v porazdeljenem okolju s pomočjo algoritmov porazdeljenega soglasja omogoča decentralizacijo, saj prepreči odvisnost od enega samega strežnika ali ene centralne entitete, ki upravlja zapise [9]. Decentralizacija je še ena izmed ključnih edinstvenih lastnosti tehnologij blokov, ki omogoča dinamično vzpostavitev skupnosti akterjev brez potrebe po vzpostavitvi vrhnje avtoritete, ki to skupnost upravlja, hkrati pa onemogoča preprosto in dinamično spreminjanje kakršnih koli atributov delovanja takšnega omrežja. Verige blokov bi imele močno omejeno uporab- nost za poslovna okolja, če ne bi bile programabilne. Tekom razvoja v zadnjih letih so tehnologije veriženja Melanija Vezočnik, Marko Bajec: Pristopi k denormalizaciji besedil: pregled področja UPORABNA INFORMATIKA 104 2025 - πtevilka 2 - letnik XXXIII blokov prerastle platforme digitalnih valut ter vpe- ljale decentralizirane in zaupanja vredne program- ske rešitve [1]. Številne domene s pridom izkoriščajo prednosti decentralizacije, transparentnosti in var- nosti zapisov ter možnost zaupanja, ki ga je mogoče vzpostaviti med sicer anonimnimi deležniki. Posle- dično je čedalje več aplikacij, ki temeljijo na tehnolo- gijah porazdeljenih knjig [7], čemur se morajo ustre- zno prilagoditi tudi razvijalci programske opreme. Čeprav je na voljo več platform za razvoj pametnih pogodb, se v nadaljevanju osredotočamo predvsem na Ethereum [12], ki predstavlja eno izmed vodilnih platform za razvoj pametnih pogodb [7]. S platfor- mo imamo tudi največ praktičnih izkušenj. Ob tem je treba poudariti, da se članek osredotoča izključno na aplikacijski nivo verig blokov, medtem ko infrastruk- turni nivo, ki v osnovi zagotavlja delovanje tovrstnih omrežij, ni predmet obravnave. Namen prispevka je proučiti posebnosti decentra- liziranih aplikacij, ki jih je potrebno v okviru razvoj- nega procesa aplikacij ustrezno nasloviti, da bi se izognili težavam s kakovostjo nastalih programskih rešitev. Cilj prispevka je identificirati izzive, ki jih prinaša razvoj decentraliziranih aplikacij, in razpolo- žljive metode in ukrepe, s katerimi tovrstne razvojne izzive uspešno naslavljamo. V skladu s cilji raziskave smo izpeljali dve osnovni raziskovalni vprašanji: RV1: Katere so posebnosti decentraliziranih napram klasičnim aplikacijam? RV2: Katere razvojne metode in aktivnosti naslavlja- jo njihove posebnosti pri zagotavljanju kakovo- sti decentraliziranih aplikacij? Raziskava se metodološko opira predvsem na pregled literature, pri čemer je bila pregledana rele- vantna aktualna literatura domačih in tujih avtorjev s področja programskega inženirstva. Za opazovanje, opisovanje in analiziranje identificiranih razvojnih izzivov in njihovih rešitev, bo v prispevku upora- bljena metoda deskripcije. Metodološko je prispevek teoretične narave in služi kot uvod v nadaljnje razi- skovalno delo na področju obvladovanja kakovosti pri razvoju decentraliziranih aplikacij. Poglavitni cilj raziskav je identificirati tiste posebnosti tehnologij veriženja blokov, ki jih je potrebno nasloviti pri gra- dnji kakovostnih decentraliziranih aplikacij. 2 DECENTRALIZIRANE APLIKACIJE Arhitekturna zasnova decentraliziranih aplikacij je sicer podobna spletnim rešitvam, vendar z nekateri- mi pomembnimi razlikami. V grobem so decentra- lizirane aplikacije sestavljene iz dveh ključnih kom- ponent: ospredja z uporabniškim vmesnikom in za- lednega dela s poslovno logiko aplikacije. Ospredje poskrbi za interakcijo uporabnikov z aplikacijo in je v veliki večini primerov realizirano kot spletna apli- kacija. Poslovna logika v zaledju decentraliziranih aplikacij je običajno zapisana v pametnih pogodbah, ki predstavljajo jedro vsake decentralizirane aplika- cije. Čeprav obstaja široka paleta različnih platform verig blokov s podporo pametnim pogodbam, se v praksi najpogosteje uporablja platforma Ethereum, pri čemer je za razvoj pametnih pogodb uporabljen programski jezik Solidity [7]. Pametne pogodbe implementirajo tako poslovno logiko aplikacije in hkrati poskrbijo za hrambo zapisov v verigah blokov [13]. Zaledni del aplikacije s poslovno logiko in po- datkovna baza za hrambo podatkov pri decentrali- ziranih aplikacijah nista več potrebna, vendar sta še vedno lahko prisotna. Kadar sta prisotna, govorimo o hibridnih arhitekturah, kjer se del podatkov hra- ni v podatkovno bazo, del pa se jih zapiše v verige blokov [14]. Primerjavo med arhitekturama klasič- nih spletnih aplikacij in decentraliziranih aplikacij [15] prikazuje Slika 1. Iz arhitekturne sheme je razvi- dno, da je ospredje decentraliziranih aplikacij enako ospredju spletnih aplikacij in se z razvojnega vidika ne razlikujeta veliko. Posebnosti razvoja decentralizi- ranih aplikacij izhajajo iz zaledja s pametnimi pogod- bami. Večina posebnosti v razvoju decentraliziranih aplikacij izhaja ravno iz zalednega dela aplikacije in dejstva, da mora biti ospredje primerno usklajeno z zaledjem, ki je temelječe na pametnih pogodbah, kakor tudi povezljivo z uporabniškimi denarnica- mi tehnologije veriženja blokov. Pri vsem tem nam pomagajo namenske knjižnice, kot sta web3 [16] ali ethers [17]. Upoštevati je potrebno dodatno arhitek- turno dejstvo. In sicer, v primeru potrebe po shranje- vanju večjih količin podatkov ali datotek, se, z raz- liko od uporabe centraliziranih strežnikov, v dApp poslužujemo decentraliziranih sistemov shranjeva- nja datotek, kot je IPFS. Osrednji del decentraliziranih aplikacij predsta- vljajo pametne pogodbe. Te sledijo v devetdesetih letih predstavljeni ideji samoizvršljivih pogodb, ki temeljijo na transakcijskem protokolu, ki ga avtono- Mitja Gradišnik, Tina Beranič, Muhamed Turkanović: Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum UPORABNA INFORMATIKA 105 2025 - πtevilka 2 - letnik XXXIII mno izvaja računalnik [4]. V osnovi gre za samoizvr- šljivo programsko kodo, ki se avtonomno izvede, ka- dar so za to izpolnjeni vnaprej definirani pogoji [18]. Pametne pogodbe bi lahko tako primerjali s koncep- tom klasičnih pogodb iz realnega sveta, pri čemer so pametne pogodbe povsem digitalizirane. Kot take so shranjene na vozliščih omrežja verig blokov. 2.1 Okolje izvajanja decentraliziranih aplikacij Pomembna razlika med spletnimi in decentralizirani- mi aplikacijami izhaja iz izvajalnega okolja, v katerem aplikacije tečejo. Spletne aplikacije običajno tečejo na spletnih strežnikih, ki zagotovi izvajalno okolje za njihovo izvajanje. Znotraj spletnega strežnika obi- čajno teče celotna spletna aplikacija. Od aplikacije je običajno oddvojena le podatkovna baza. Nekatere za- dolžitve prevzame sam spletni strežnik, in sicer skrb za usmerjanje prometa do aplikacije in predhodna obdelava HTTP zahtev, varnost aplikacij, upravlja- nje uporabnikov in dostopov ter poganjanje spletnih aplikacij [19]. Upoštevati je potrebno tudi skaliranje aplikacij, ki zajema tudi horizontalno skaliranje zale- dnih delov in samih spletnih strežnikov. Velikokrat se poslužujemo za ta namen avtomatiziranih pristopov, ki nam jih ponujajo ponudniki oblačnih storitev. De- centralizirane aplikacije močno zmanjšajo odvisnost od spletnih strežnikov, saj jih uporabljajo zgolj za po- ganjanje ospredja z uporabniškim vmesnikom. Pame- tne pogodbe, kot zaledna komponenta decentralizi- ranih aplikacij, tečejo ločeno od ospredja na vozliščih omrežja verig blokov v navideznih strojih sistemov v omrežju. Na primer, pametne pogodbe napisane za platformo Ethereum se izvajajo v Ethereum navi- deznih strojih [7]. Upoštevajoč zapisano, lahko nare- dimo primerjavo z oblačno skalirano infrastrukturo, vendar je ključna razlika ponovno decentralizacija, saj se v primeru klasične oblačne infrastrukture vsi procesi izvajajo in nadzorujejo s strani centralnega ponudnika takšnih storitev. Prav tako je okvir funk- cionalnosti pri navideznih strojih v verigah blokov močno okrnjen, saj ti, za razliko od spletnih strežni- kov, skrbijo izključno za izvajanje programske kode pametnih pogodb. Pomembna razlika okolij pame- tnih pogodb v primerjavi s vsebnikom spletnih stre- žnikov je v načinu zaračunavanja stroškov. Ker tečejo pametne pogodbe porazdeljeno po vozliščih omrežja verig blokov, je potrebno za uporabo infrastrukture plačati pristojbine za uporabo. Decentralizirane apli- kacije so torej močno občutljive na količine podatkov, katere obdelujejo in zapisujejo. 3 POSEBNOSTI RAZVOJA DECENTRALIZIRANIH APLIKACIJ Primerjava arhitekture decentraliziranih aplikacij s sorodnimi spletnimi rešitvami nakazuje na ve- čjo kompleksnost decentraliziranih aplikacij [13]. V Mitja Gradišnik, Tina Beranič, Muhamed Turkanović: Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum Slika 1 Primerjava arhitekture spletnih in decentraliziranih aplikacij UPORABNA INFORMATIKA 106 2025 - πtevilka 2 - letnik XXXIII prak si se izkaže, da je decentralizirane aplikacije po- sledično tudi težje razvijati. Arhitektura decentrali- ziranih aplikacij, posebnosti pametnih pogodb in la- stnosti omrežij verig blokov torej zahtevajo prilago- jene procese razvoja tovrstnih programskih rešitev. 3.1 Nespremenljivost pametnih pogodb Spremembe so neizogiben del življenjskega cikla pro- gramskih produktov. Redki so programski produk- ti, ki po izdajni različici ne bi deležni nobenih spre- memb ali popravkov. Ne glede na to, kako dobro so bile v začetni fazi razvoja programskega produkta zajete zahteve uporabnikov in kako dobro so bile ka- sneje v fazah razvoja te prenesene v programski pro- dukt, sčasoma postaja razkorak med implementirano programsko rešitvijo in pričakovanji uporabnikov čedalje večji. Vzrokov za omenjen pojav je več. Na primer, delovni procesi v organizacijah, v okviru ka- terih se programska oprema uporablja, se neprestano spreminjajo in nadgrajujejo. Gonilo sprememb so bo- disi nadgradnje bodisi razširitve delovnih procesov. Pričakovano je, da tem spremembam sledi tudi pro- gramska oprema in se na spremembe ustrezno prila- godi. Četudi bi delovni procesi ostali nespremenjeni, na spremembe programske opreme napeljuje kup zu- nanjih dejavnikov, kot so spremembe v zakonodaji, spremembe povezanih sistemov in spremenjeno oko- lje delovanja organizacije. Nenazadnje je potrebno upoštevati, da se običajno tekom uporabe program- skega produkta odkrije nekaj hroščev, ki se jih v fazi testiranja ni zaznalo in jih je potrebno za nemoteno uporabo aplikacije odpraviti. Spremembe so torej se- stavni del življenjskega cikla programskega produk- ta, ki ga sodobni razvojni procesi uspešno naslovijo. Glede na sorodnost in podobnost med decen- traliziranimi in spletnimi aplikacijami, bi se na prvi pogled zdelo smiselno, da se dobro preizkušeni in uveljavljeni agilni proces razvoja spletnih rešitev uporabi tudi pri razvoju decentraliziranih aplikacij. Ker pametnih pogodb, kot osrednje komponente de- centraliziranih aplikacij, ko so te enkrat nameščene v okolje verig blokov, ne moremo enostavno spre- minjati, decentralizirane aplikacije ne zahtevajo faze vzdrževanja v klasičnem pomenu besede [20]. Izka- že se, da agilnega procesa razvoja spletnih rešitev ni mogoče enostavno in brez prilagoditev prenesti v okvir razvoja decentraliziranih aplikacij. Kratki iterativni razvojni cikli agilnih pristopov poskrbijo za odzivnost na spremembe v uporabni- ških zahtevah, s tem da prenesejo te spremembe v čim krajšem času v programski produkt. Pristopi in avtomatizacija procesa, ki jo vpelje DevOps poskrbi- jo, da je razvojni proces pri tem čim bolj učinkovit. Rezultat iterativnih razvojnih ciklov so torej vedno nove posodobljene različice programskih rešitev, ki se preko različnih mehanizmov avtomatizacije ra- zvojnega procesa v čim krajšem možnem času pre- nesejo v produkcijsko okolje in predajo v uporabo. Naveden proces se uporablja pri različnih tipih pro- gramskih produktov, ne glede na platformo, pro- gramski jezik ali namen uporabe. Čeprav za širok spekter programskih produktov opisan pristop v praksi deluje odlično in se izkaže za izjemno učinkovitega, tovrstni pristop k razvoju pri decentraliziranih aplikacijah trči na oviro. Če so obi- čajne aplikacije odlično prilagojene neprestanemu spreminjanju in nadgrajevanju, so spremembe de- centraliziranih aplikacij trši oreh. Pametnih pogodb, kot osrednje komponente decentraliziranih aplikacij, zaradi lastnosti tehnologij veriženja blokov ni mogo- če enostavno spreminjati, ko so te enkrat namešče- ne v omrežje verig blokov. Navedeni varnostni me- hanizem pametnih pogodb, ki preprečuje možnost njihovega kasnejšega zlonamernega spreminjanja, postavlja dodatne izzive pri procesu njihovega dol- goročnega vzdrževanja. V praksi to pomeni, da tudi manjše nadgradnje ali popravki hroščev v algoritmu pametnih pogodb, rezultirajo v ponovno namešča- nje nove različice pametne pogodbe, ki prejšnjo na- domešča, kar povzroči izgubo podatkov, vezanih na predhodno različico. Razvojni cikel decentraliziranih aplikacij mora slediti načelu, da je potrebno pametne pogodbe spisati s popolnim naborom funkcionalno- sti in vsa v teoriji brez programskih hroščev, zaradi katerih bi bili kasneje prisiljeni v izdajo posodoblje- nih različic. Ker pa bo do sprememb zagotovo prišlo, uporabljajo razvijalci decentraliziranih aplikacij raz- lične nadgradljive arhitekture, da omogočijo posoda- bljanje funkcionalnosti. Najpogostejši pristop je upo- raba vzorca posrednika [21], [22], kjer glavna pogod- ba preusmerja klice na ločeno, zamenljivo pogodbo z dejansko logiko. Naprednejši, a bolj kompleksen je diamantni vzorec [23], ki omogoča modularne nad- gradnje posameznih funkcionalnosti. Alternativno se včasih uporabi preprosta migracija na novo po - godbo , kjer se decentralizirana aplikacija poveže na nov naslov, stanje pa se prenese ročno ali s skriptami. Dodatno fleksibilnost ponuja vzorec register [21], Mitja Gradišnik, Tina Beranič, Muhamed Turkanović: Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum UPORABNA INFORMATIKA 107 2025 - πtevilka 2 - letnik XXXIII kjer osrednja pogodba hrani naslove vseh aktivnih komponent. Izbira pravega mehanizma je odvisna od kompleksnosti sistema, potrebe po fleksibilnosti ter varnostnih in uporabniških zahtev. 3.2 Izpostavljenost med izvajanjem Spletne aplikacije ne tečejo kot samostojni procesi na sistemu, temveč so nameščene v vsebnik spletne- ga strežnika. Spletni strežnik spletnim aplikacijam nudi varno izvajalno okolje in jih neposredno zaščiti pred zunanjim okoljem. Kadar poteka komunikaci- ja s spletno rešitvijo, zahtevke sprejme in predho- dno obdela spletni strežnik. Šele po predobdelavi so zahtevki posredovani spletnim aplikacijam. Spletni strežnik je torej zadolžen za kopico funkcionalnosti, performančnih in varnostih mehanizmov spletnih aplikacij, za katere razvijalcem spletnih rešitev ni potrebno neposredno skrbeti. Običajno je potrebna zgolj ustrezna konfiguracija spletnega strežnika. Za razliko od spletnega strežnika, navidezni stroj na vozliščih omrežij verig blokov pametnim pogod- bam ne nudi tako širokega nabora funkcionalnosti, temveč zgolj izvajalno okolje pametnih pogodb. Pa- metne pogodbe v okolju omrežja verig blokov delu- jejo kot povsem samostojne aplikacije, ki same spre- jemajo zahtevke uporabnikov, jih izvršijo in klicatelju same vrnejo rezultat obdelave. Navidezni stroj pri tem ne nudi nobenih dodatnih funkcionalnosti, niti ne poskrbi za performančne in varnostne vidike de- centraliziranih aplikacij, razen preverjanja celovitosti transakcij. Na razvijalcih pametnih pogodb je torej, da sami v programski kodi pametne pogodbe poskr- bijo, da je izvajanje pogodbe performančno učinko- vito, varno ter dostopno zgolj uporabnikom, ki do izbranih funkcionalnosti pametnih pogodb smejo dostopati. Razvijalci pametnih pogodb tudi nosijo breme odgovornosti, da je implementacija pametnih pogodb brezhibna in ne predstavlja nepotrebnega varnostnega tveganja za uporabnike decentralizira- nih aplikacij. 3.3 Obvladovanje stroškov uporabe infrastrukture Performančna učinkovitost je pomemben atribut ka- kovosti programskih komponent, ki ga je potrebno ustrezno nasloviti pri razvoju programskih rešitev, ne glede na njihovo vrsto. Performančno neučinko- vita programska oprema po nepotrebnem porablja sistemske vire in vpliva na stroške uporabljene infra- strukture ne glede na to, ali je ta najeta ali lastniška. Poudarek na stroškovni učinkovitosti je pri pame- tnih pogodbah še posebej izrazit. Pametne pogodbe, nameščene na javnih verigah blokov, kot je Ethereum, se izvajajo na vozliščih, pri čemer je treba za uporabo infrastrukture plačati pri- stojbine za gorivo (angl. gas fees) [7]. Po prehodu Ethereuma na mehanizem soglasja Proof of Stake (PoS) so te pristojbine še vedno prisotne, čeprav se sedaj plačujejo overjevalcem (angl. validators) name- sto rudarjem [24]. Cena pristojbine v posameznem omrežju je odvisna od kompleksnosti pametne po- godbe, zasedenosti omrežja in cene domorodne krip- tovalute, v kateri se gorivo zaračunava [7], [25]. Gi- banje cene pristojbine za omrežje Ethereum, izraženo v enoti GWei [7], za obdobje med 15. aprilom in 15. majem 2025 prikazuje Slika 2. GWei lahko razumemo kot manjšo enoto kripto kovanca, ki meri porablje- no računsko moč, potrebno za izvedbo operacij nad verigami blokov. Operacije na verigami blokov sicer definira algoritem zapisan v obliki pametnih po- godb. Temeljne operacije nad verigami blokov, za ka- tere je potrebno plačevati pristojbine v omrežju Ethe- reum, na primer vključujejo zapisovanje podatkov v shrambo in računske operacije nad podatki. Pristoj- bine za gorivo so prav tako pomembne za ustvarjanje novih pogodb in pošiljanje žetonov. V omrežju verig blokov se izvajanje pametnih pogodb zaračunava po izvedenih operacijah zapisovanja podatkov. Praksa kaže, da stroški izvajanja pametnih pogodb v javnih omrežjih hitro narastejo [13], zaradi česar je njihovo obvladovanje ključno za vzdržnost dolgoročnega delovanja decentraliziranih aplikacij. V kolikor se za izvajanje decentraliziranih aplikacij uporabljajo jav- na omrežja, je pri njihovem razvoju torej potrebno vnaprej natančno proučiti predvidene stroške izva- janja pametnih pogodb in po potrebi izvesti njihovo optimizacijo. 3.4 Odprtokodnost programske kode Javna objava programske kode pametnih pogodb je dobra praksa, ki ima številne pozitivne učinke. Od- prtost kode zagotavlja transparentnost in prispeva k zaupanju med deležniki v omrežju. Vsak izmed deležnikov ima tako možnost vpogleda v algoritem pametne pogodbe in možnost preučitve njenega na- tančnega delovanja. S tem se lahko prepriča, da se pametna pogodba izvaja na pričakovan način. Tran- sparentnost izvajanja pametnih pogodb je ključni mehanizem za preprečevanje morebitnih zlorab, Mitja Gradišnik, Tina Beranič, Muhamed Turkanović: Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum UPORABNA INFORMATIKA 108 2025 - πtevilka 2 - letnik XXXIII goljufij in manipulacij, kar pomembno pripomore k zaupanju v decentralizirane aplikacije [5]. Dodatno daje odprtokodnost priložnost vsem članom skupno- sti, da prispevajo svoj delež k izboljšavam program- ske kode, na primer optimizaciji delovanja, odpravo najdenih napak ali dopolnitev funkcionalnosti. Po- memben vidik odprtokodnosti predstavlja tudi var- nostna analiza pametnih pogodb, ki jo lahko opravi snovalec decentralizirane aplikacije ali skupnost. Možnost vpogleda v izvorno kodo pametnih po- godb po drugi strani odpre vrata tveganjem, pove- zanim z izkoriščanjem opaženih pomanjkljivosti v programski kodi. Programska koda lahko vsebuje nezakrpane varnostne luknje, napake v logiki ali ne- preverjene vhodne podatke. Te se v programski kodi kažejo v obliki logičnih napak ali uporabe slabih praks programiranja. Na tveganja, povezana z jav- no izpostavljenostjo izvorne kode pametnih pogodb, dodatno vpliva okolje, v katero so pametne pogod- be nameščene in na katerem se izvajajo. Navidezni stroji pametnim pogodbam ne nudijo nobenega do- datnega varnostnega ovoja ter jih navzven neposre- dno izpostavljajo. Pametne pogodbe lahko v javnih omrežjih pokliče kdorkoli, upoštevajoč vse morebi- tne implementirane modifikatorje in specifikacije vi- dnosti. Zato je toliko bolj pomembno, da je njihova programska koda brez morebitnih programskih po- manjkljivosti, saj so sicer nevarne za uporabo. 4 PRILAGODITVE RAZVOJNEGA PROCESA DECENTRALIZIRANIH APLIKACIJ Nezmožnost enostavnega spreminjanja pametnih pogodb po namestitvi v okolje verig blokov, velika občutljivost, povezana z varnostnimi tveganji in re- lativno veliki stroški izvedenih operacij v omrežju nakazujejo na potrebo po prilagojenem razvojnem procesu. Sodobni agilni razvojni procesi s hitrim od- zivanjem na uporabniške zahteve in avtomatizirano neprekinjeno integracijo in dostavo vedno novih raz- ličic programskega produkta se pri razvoju decen- traliziranih aplikacij ne izkažejo za najučinkovitejši pristop k razvoju. Za kakovosten in stroškovno učin- kovit razvoj pametnih pogodb je torej ključno, da se v fazi razvoja, pred namestitvijo v vozlišča verig blokov, zagotovi, da so te ustrezno načrtovane ter da ne vsebujejo programskih hroščev [7], ki bi razvijalce silile v izdajo popravljenih različic aplikacij. 4.1 Ključnost testiranja v zgodnjih fazah razvoja Ker pametnih pogodb ni mogoče enostavno nadgra- jevati, kot smo to sicer vajeni pri drugih družinah aplikacij, se je potrebno pred namestitvijo rešitve prepričati, da je rešitev funkcionalno ustrezna in ne vsebuje programskih hroščev, zaradi katerih bi bili prisiljeni v izdajo popravljene različice. V fazi načrto- vanja je potrebno skrbno in celostno načrtovati tako funkcionalne kot arhitekturne vidike aplikacij. Prvi Slika 2: Gibanje cene goriva za omrežje Ethereum [26] Mitja Gradišnik, Tina Beranič, Muhamed Turkanović: Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum UPORABNA INFORMATIKA 109 2025 - πtevilka 2 - letnik XXXIII v vrsti ukrepov za zagotavljanje kakovosti decentra- liziranih aplikacij je obsežno in celovito testiranje. Sistematično testiranje v zgodnji fazah zagotovi, da se načrtovalske in implementacijske napake zaznajo in odpravijo še znotraj razvojnega cikla pred name- stitvijo v produkcijsko okolje in predajo v uporabo. V praksi se izkaže, da zna biti odloženo odpravljanje programskih hroščev v kasnejših fazah stroškovno drago [27]. Praksa odloženega razreševanja razvoj- nih težav (angl. Delayed Issue Effect) sicer velja za slabo prakso tudi pri razvoju drugih družin aplika- cij, vendar je težavnost odpravljanja napak zaradi nespremenljivosti pametnih pogodb po namestitvi na vozlišča verig blokov pri decentraliziranih aplika- cijah toliko večja in ji je potrebno posvetiti več po- zornosti [28]. Da bi preprečili nepotrebne stroške in škodo povezano z izgubo podatkov, se je potrebno izogniti napakam v produkcijskih različicah pro- gramskih rešitev. Kljub temu, da se za razvoj pametnih pogodb uporabljajo manj uveljavljeni programski jeziki in platforme, ki so na voljo krajši čas in se uporabljajo v ožjem krogu razvijalcev, imajo razvijalci pametnih pogodb na voljo kopico testnih ogrodij in orodij, s katerimi je mogoče izvesti sistematično in temeljito testiranje. Slednje temelji na doslednem testiranju enot (angl. unit testing) in izvedbi testiranja fuzz. Pri testiranju enot se večinoma preverja pravilnost izračunov, delovanje nadzora dostopa in dovoljenja, upravljanje z dogodki itd. Testi fuzz predstavljajo tehniko avtomatiziranega testiranja, pri katerem se v vhode programov vnašajo obsežni, običajno na- ključno generirani in nepričakovani vhodni podatki, namen katerih je preveriti ustreznost delovanja apli- kacije pod različnimi pogoji. Foundry [29] je primer orodja, ki omogoča takšno vrsto testiranja, pri čemer se lahko uporablja tudi za testiranje enot. Za slednje se sicer uporablja tudi Hardhat [30]. Del testiranja je lahko tudi avtomatski pregled izvorne kode za zna- ne ranljivosti (npr. ponovni vstop, prelivanje, izvor transakcije, posredni klic). Tudi sicer je za testiranje decentraliziranih aplikacij potrebno ubrati učinko- vitejši pristop, saj je strošek testiranja zaradi visokih stroškov decentraliziranega okolja bistveno višji, kot je strošek testiranja drugih družin aplikacij [5]. 4.2 T estiranje porabe goriva Izbira podatkovnih tipov in struktur podatkov, števi- la izvedenih ciklov in nabora ukazov, vrstnega reda inicializacij in ovrednotenj, ostaja povsem suverena odločitev razvijalcev pametnih pogodb [7]. Ne glede na razvijalčevo izbiro so nekateri zapisi algoritmov iz performančnega vidika učinkovitejši kot drugi, kar lahko pri izvajanju pametnih pogodb povzroči razlike v porabi goriva. Poglavitni cilj testiranja po- rabe goriva je preveriti, ali je poraba goriva izvajanja pametnih pogodb smotrna oz. ali v programski kodi pametnih pogodb obstajajo segmenti, ki bi jih bilo mogoče izvesti učinkoviteje. Naloga performančne- ga testiranja je torej preveriti, da programska koda na primer ne vsebuje nepotrebne programske kode, ne izvaja nepotrebnih iteracij zank in po nepotreb- nem ne troši prostora za shranjevanje podatkov. K testiranju porabe goriva pametnih pogodb pri- stopimo z dinamičnim testiranjem obnašanja apli- kacije in statično analizo programske kode. Oceno porabe goriva lahko pridobimo z namestitvijo pa- metnih pogodb v simulirana omrežja, ki so lahko nameščena na lokalnem razvojnem ali zasebnem strežniku. Poganjanje in testiranje pametnih pogodb v lokalnem okolju omogoča oceno o sprejemljivosti stroškov izvajanja pametnih pogodb. Oceno stroškov porabe goriva pametnih pogodb je seveda mogoče izvesti neposredno na javnih omrežjih [31], vendar v tem primeru že nastanejo dejanski stroški. Če poraba goriva pri testiranju v simuliranem okolju ni zado- voljiva, je potrebno programsko kodo pametnih po- godb stroškovno optimizirati. Stroškovna optimizacija programske kode pame- tnih pogodb temelji na statični analizi programske kode. Analiza zajema prepoznavo segmentov pro- gramske kode, ki veljajo za potratne. Takšne segmen- te programske kode označujemo kot smrdečo kodo. Sledi odstranitev nepotrebnih ali minimiziranje po- tratnih operacij na najmanjši možni obseg, potreben za realizacijo funkcionalnosti pametne pogodbe. V programski kodi se tako išče smrdečo kodo, na pri- mer [7]:  Podvojeni zapisi, kot so nepotrebna posodablja- nja vrednosti spremenljivk znotraj zank.  Neskončne zanke.  Neučinkovitost pri inicializaciji spremenljivk, predvsem njihova inicializacija na njihove pri- vzete vrednosti (npr. inicializacija tipa uint256 na vrednost 0).  Neučinkovita raba podatkovnih tipov (če je le mogoče, je uporaba bytes32 bolj učinkovita od podatkovnega tipa niz). Mitja Gradišnik, Tina Beranič, Muhamed Turkanović: Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum UPORABNA INFORMATIKA 110 2025 - πtevilka 2 - letnik XXXIII  Neučinkovita uporaba indeksiranih parametrov.  Neučinkovito delo z zunanjimi funkcijami. Optimizirano različico pametnih pogodb se po- novno namesti v simulirano omrežje, kjer se ponovno oceni stroške izvajanja. Postopek se ponavlja, dokler rezultat stroškovne optimizacije ni zadovoljiv [7]. Identifikacija smrdeče kode preko analize pro- gramske kode velja za kompleksen in dolgotrajen postopek, ki terja za uspešno izvedbo opravila iz- kušenega strokovnjaka. Postopek identifikacije smr- deče kode pametnih pogodb, ki po nepotrebnem povečujejo stroške izvajanja, močno pospešijo orod- ja za optimizacijo porabe. Čeprav je ročno preverja- nje kode mogoče, so avtomatizirana orodja pri tem učinkovitejša [32]. Orodje GasMet [7] opravi analizo programske kode pametnih pogodb napisanih v pro- gramskem jeziku Solidity, pri tem pa je sposobno za- znati 19 vzorcev, ki po nepotrebnem prispevajo k ve- čji porabi goriva. Analiza, opravljena z orodjem, daje razvijalcem jasne indice, kako se lotiti optimizacije porabe pametnih pogodb. Na voljo sta tudi prototi- pa orodij GasChecker [33] in Gasper [34] , ki analizo pametnih pogodb opravita s simbolično izvedbo na nivoju zlogovne kode pametnih pogodb. Orodje Ga- sChecker prepozna deset neučinkovitih programski vzorcev, Gasper jih prepozna sedem. Prav tako lahko za oceno stroškov goriva uporabljamo že omenjena orodja za testiranje, kot sta Hardhat in Foundry. Ne glede na pristop analize pametnih pogodb, orodja zgolj zaznajo potencialno problematično program- sko kodo. Končna odločitev o ukrepih glede optimi- zacije porabe ostaja v pristojnosti razvijalcev. 4.3 Preverjanje varnosti Pomemben vidik zagotavljanja kakovosti decentrali- ziranih aplikacij je tudi zagotavljanje varnosti pame- tnih pogodb. Ker so pametne pogodbe programske komponente, ki so nameščene na javno omrežje v ve- rigah blokov in tako javno izpostavljene morebitnim napadalcem, je pravočasno odkrivanje ranljivosti ter preprečevanje vdorov nujno za njihovo dolgoročno in nemoteno delovanje. Cilj varnostne analize je preveriti, ali so v pro- gramski kodi pametnih pogodb prisotne varnostne ranljivosti, ki predstavljajo tveganja za njihovo delo- vanje in bi lahko ogrozile dolgoročno vzdržnost iz- vajanja decentraliziranih aplikacij. Podobno kot op- timizacija porabe pametnih pogodb, se tudi analiza varnostnih ranljivosti izvede s statično analizo pro- gramske kode in dinamično analizo obnašanja apli- kacije med izvajanjem. V praksi je bilo prepoznanih več vzorcev, ki lahko ogrozijo nemoteno delovanje decentraliziranih aplikacij. Vidnejši med njimi so [8]:  Ponovni vstop iste funkcije omogoča večkratno izvajanje, kar lahko pripelje do neveljavnih stanj podatkov.  Neustrezna avtentikacija.  Nepooblaščeno samouničenje pametnih pogodb-.  Nezaščitene funkcije.  Uporaba zastarelih funkcij.  Nepreverjeni klici.  Ranljivosti povezane z izgubo sredstev. V okviru statične analize namenjene prepoznavi ranljivosti se v programski kodi pametnih pogodb identificira vzorce kodiranja, ki predstavljajo poten- cialne ranljivosti in bi jih napadalci lahko izkoristili v napadu [32]. Poleg prepoznavanja vzorcev poveza- nih z ranljivostmi, se statična analiza osredotoča na preučevanje strukture programske kode, na primer na analizo toka kontrole čez program, analizo podat- kov, obravnavo napak in integracijo z uporabniškim vmesniki. Pri identifikaciji si je smiselno pomagati z orodji, ki olajšajo ročne preglede programske kode, saj jasno pokažejo na dele kode, ki prestavljajo more- biten vir varnostnih težav. Dinamična analiza temelji na analizi programov z namenom odkrivanja ranljivosti, ki se razkrijejo šele med njihovim izvajanjem [32]. Tovrstna analiza obi- čajno temelji na tehnikah testiranja, ki generirajo širok nabor naključno ali delno naključno ustvarjenih vho- dnih podatkov [8]. Običajno se za to uporabi metoda testiranja fuzz. Generirani vhodni podatki so nato po- sredovani na vhode pametnih pogodb. Sledi natančno spremljanje obnašanja pametnih pogodb in detekcija morebitnega neželenega obnašanja, ki bi lahko pred- stavljalo varnostno tveganje, če bi se zgodilo v pro- dukcijskem okolju med uporabo aplikacije. Takšno varnostno testiranja temelji na izvajanju pametnih pogodb v simuliranem okolju ali testnem omrežju z najrazličnejšim naborom vhodov, pri čemer se opa- zuje ustreznost delovanja pametnih pogodb med iz- vajanjem. Cilj metode je odkriti morebitne ranljivosti, izjeme ali nepričakovano obnašanje med izvajanjem. Pomemben pristop dinamične analize pametnih po- godb je prav tako analiza poti čez program pametnih pogodb. Ker temelji na dejanskem izvajanju program- Mitja Gradišnik, Tina Beranič, Muhamed Turkanović: Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum UPORABNA INFORMATIKA 111 2025 - πtevilka 2 - letnik XXXIII ske kode, dinamična analiza omogoča odkrivanje ran- ljivosti, ki so odvisne od specifičnih vhodnih podat- kov, povezanih poti izvajanja in interakcij, ki nastane- jo znotraj programa med delovanjem. 4.4 Revizije in presoje Glavnina testiranja pri sodobnih pristopih razvoja programske opreme temelji na avtomatiziranih me- todah. Orodja, ki jih za ta namen uporabljamo, so običajno specializirana in pokrivajo izbrane vidike kakovosti pametnih pogodb. V praksi pa se izkaže, da ta orodja ne zajemajo celotnega spektra ranljivosti in pomanjkljivosti programske kode. Pogosto zato niso sposobna zaznati tistih ranljivosti ali pomanj- kljivosti, ki zahtevajo poznavanje širšega konteksta ali poglobljeno razumevanje delovanja aplikacije [5]. Presojevalci so zato pomemben steber zagotavljanja kakovosti decentraliziranih aplikacij, saj pomemb- no dopolnjujejo avtomatizirana orodja za testiranje in zapolnijo vrzeli, ki jih avtomatizirani postopki ne morejo pokriti, zlasti pri pregledu pametnih pogodb za prisotnost kompleksnejših ranljivosti. Ključna razloga za izvedbo presoj programske kode pametnih pogodb sta dva. Prvič, s presojevalci se cilja predvsem na razkritje ranljivosti, ki jih orod- ja za avtomatizirano testiranje ne zaznajo. Presoje so pri razvoju decentraliziranih aplikacij razmeroma pogoste. Glede na študije o testiranju pametnih po- godb v odprtokodnih projektih kar 24,5 % preučenih projektov vključuje poročila o presojah, izvedenih s strani zunanjih presojevalcev [35]. Presojevalci, ki morajo biti izkušeni strokovnjaki za tehnologije ve- riženja blokov, izvedejo sistematičen ročni pregled programske kode, svoja dognanja strnejo v poročilu in podajo priporočila za izboljšave. Drugi ključni razlog za izvedbo presoj izhaja iz dejstva, da pametnih pogodb ni mogoče enostavno popravljati, ko so te enkrat nameščene v omrežje ve- rig blokov [36]. Pred namestitvijo se je namreč po- trebno prepričati, da te delujejo brezhibno. Naloga presojevalcev je torej preveriti, ali pametne pogodbe izvajajo v skladu s pričakovanji uporabnikov brez nepričakovanih ali neželenih stranskih učinkov. To- vrstna presoja zajema celostno analizo ustreznosti izvajanja algoritmov, zapisanih v pogodbah, ter pra- vilno posodabljanje njihovih stanj. Presoje, zlasti ti- ste, ki jih izvedejo zunanji presojevalci, torej bistveno pripomorejo k zaupanju v kakovost implementacije pametnih pogodb. 5 SKLEP Tehnologije veriženja blokov odpirajo možnosti ino- vacijam v poslovnih modelih na najrazličnejših do- menah elektronskega poslovanja. Ključna prednost tehnologij veriženja blokov je možnost soustvarjanja deljenih zapisov, odpornih proti cenzuri, zlonamer- nim spremembam ali njihovem kasnejšem zanikanju. Z rastjo in razvojem tehnologij veriženja blokov se pojavlja potreba po programskih rešitvah, ki te ide- je prenesejo v programsko kodo. V praksi se izkaže, da se pri razvoju decentraliziranih aplikacij pojavlja- jo posebnosti, ki jih je potrebno v okviru razvojnega procesa ustrezno nasloviti, da bi dosegli kakovostne in za uporabnika sprejemljive programske rešitve. Posebno pozornost je potrebno nameniti aktivno- stim zagotavljanja kakovosti, vključno s testiranjem. Razvijalci decentraliziranih aplikacij se v razvojnem procesu poslužujejo številnih metod in orodij, s ka- terimi premoščajo izzive razvoja tovrstnih aplikacij. Sistematično, temeljito in z avtomatizacijo podprto testiranje enot tekom razvoja zagotavlja, da se pro- gramska koda pametnih pogodb dodobra očisti pro- gramskih hroščev, preden je ta predana v produkcij- sko okolje. Pri tem se zasleduje načelo programske kode brez hroščev. Orodja za identifikacijo slabih vzorcev in praks porabe goriva omogočajo optimi- zacijo programske kode pametnih pogodb, da ta pri izvajanju v javnih omrežjih porabi čim manj goriva in tako zniža operativne stroške distribuiranih apli- kacij v sicer stroškovno dokaj dragem okolju. Orodja za prepoznavo varnostno ranljive programske kode predstavljajo steber zagotavljanja varnosti decentra- liziranih aplikacij. Nenazadnje vseh izzivov, pove- zanih z zagotavljanjem kakovosti decentraliziranih aplikacij, ni mogoče nasloviti z uporabo orodij. Pre- soje programske kode pametnih pogodb, opravljene s strani usposobljenih strokovnjakov iz področja teh- nologij veriženja blokov, dajejo dodatno zagotovilo, da so decentralizirane aplikacije grajene kakovostno in bodo v produkcijskem okolju upravičile pričako- vanja uporabnikov. Pri razvoju decentraliziranih aplikacij predstavlja uporaba sodobnih razvojnih metod, ki temeljijo na agilnih pristopih in DevOps, odprto raziskovalno področje. Agilni pristopi in DevOps temeljijo na hi- trem razvoju, visoki stopnji avtomatizacije razvojne- ga procesa, inkrementalnem razvoju in sprotnem od- zivanju na potrebe uporabnikov. Navedene lastnosti Mitja Gradišnik, Tina Beranič, Muhamed Turkanović: Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum UPORABNA INFORMATIKA 112 2025 - πtevilka 2 - letnik XXXIII sodobnih agilnih razvojnih procesov je pri razvoju decentraliziranih aplikacij težje doseči. Nespremen- ljivost pametnih pogodb, dodatna performančna testiranja in večja potreba po revizijah končnih raz- ličic programskih rešitev pred izdajami namigujejo na potrebo po prilagojenih razvojnih procesih. Ali je za razvoj kakovostnih decentraliziranih aplikacij primeren prilagojen agilni razvojni proces ali pa je v primeru razvoja tovrstnih rešitev najprimernejši sla- povni procesni model, ostaja aktualna tema raziskav na tem področju. Kot prihodnje delo načrtujemo predstavitev v prispevku opisanih primerov iz pra- kse, kar bo dodatno dopolnilo teoretične koncepte. LITERA TURA [1] M. J. Hossain Faruk idr., »A Systematic Literature Review of Decentralized Applications in Web3: Identifying Challen- ges and Opportunities for Blockchain Developers«, Proce- edings - 2024 IEEE International Conference on Big Data, BigData 2024, str. 6240–6249, 2024, doi: 10.1109/BIGDA- TA62323.2024.10826066. [2] D. Macrinici, C. Cartofeanu, in S. Gao, »Smart contract appli- cations within blockchain technology: A systematic mapping study«, Telematics and Informatics, let. 35, !t. 8, str. 2337– 2354, dec. 2018, doi: 10.1016/J.TELE.2018.10.004. [3] »Hype Cycle for Web3 and Blockchain, 2024«. Pridobljeno: 15. maj 2025. [Na spletu]. Dostopno na: https://www.gartner. com/en/documents/5623191 [4] N. P. Imperius in A. D. Alahmar, »Systematic Mapping of Testing Smart Contracts for Blockchain Applications«, IEEE Access, let. 10, str. 112845–112857, 2022, doi: 10.1109/ ACCESS.2022.3216874. [5] R. Sujeetha in C. A. S. Deiva Preetha, »A Literature Survey on Smart Contract Testing and Analysis for Smart Contract Based Blockchain Application Development«, Proceedings - 2nd International Conference on Smart Electronics and Com- munication, ICOSEC 2021, str. 378–385, 2021, doi: 10.1109/ ICOSEC51865.2021.9591750. [6] L. Marchesi, M. Marchesi, R. Tonelli, in M. I. Lunesu, »A blockchain architecture for industrial applications«, Block- chain: Research and Applications, let. 3, !t. 4, str. 100088, dec. 2022, doi: 10.1016/J.BCRA.2022.100088. [7] A. Di Sorbo, S. Laudanna, A. Vacca, C. A. Visaggio, in G. Ca- nfora, »Profiling gas consumption in solidity smart contracts«, Journal of Systems and Software, let. 186, str. 111193, apr. 2022, doi: 10.1016/J.JSS.2021.111193. [8] Z. A. Khan in A. S. Namin, »A Survey of Vulnerabili- ty Detection Techniques by Smart Contract Tools«, IEEE Access, let. 12, str. 70870–70910, 2024, doi: 10.1109/ ACCESS.2024.3401623. [9] N. Six, N. Herbaut, in C. Salinesi, »Blockchain software patterns for the design of decentralized applications: A sy- stematic literature review«, Blockchain: Research and Appli- cations, let. 3, !t. 2, str. 100061, jun. 2022, doi: 10.1016/J. BCRA.2022.100061. [10] N. Sánchez-Gómez, L. Morales-Trujillo, J. J. Gutiérrez, in J. Torres-Valderrama, »The importance of testing in the early stages of smart contract development life cycle«, Journal of Web Engineering, let. 19, !t. 2, str. 215–242, jun. 2020, doi: 10.13052/JWE1540-9589.1925. [11] C. Castellon, S. Roy, P. Kreidl, A. Dutta, in L. Boloni, »Ener- gy Efficient Merkle Trees for Blockchains«, Proceedings - 2021 IEEE 20th International Conference on Trust, Secu- rity and Privacy in Computing and Communications, Tru- stCom 2021, str. 1093–1099, 2021, doi: 10.1109/TRUST- COM53373.2021.00149. [12] »Popoln vodnik za Ethereum«. Pridobljeno: 11. avgust 2025. [Na spletu]. Dostopno na: https://ethereum.org/sl/ [13] »Web3 Architecture and How It Compares to Traditional Web Apps - The New Stack«. Pridobljeno: 25. marec 2025. [Na spletu]. Dostopno na: https://thenewstack.io/web3-architec- ture-and-how-it-compares-to-traditional-web-apps/ [14] F. Wessling, C. Ehmke, M. Hesenius, in V. Gruhn, »How much blockchain do you need?: Towards a concept for building hy- brid DApp architectures«, v Proceedings - International Con- ference on Software Engineering, IEEE Computer Society, maj 2018, str. 44–47. doi: 10.1145/3194113.3194121. [15] M. Farnaghi in A. Mansourian, »Blockchain, an enabling tech- nology for transparent and accountable decentralized public participatory GIS«, Cities, let. 105, str. 102850, okt. 2020, doi: 10.1016/J.CITIES.2020.102850. [16] »web3.js - Ethereum JavaScript API — web3.js 1.0.0 docu- mentation«. Pridobljeno: 11. avgust 2025. [Na spletu]. Dosto- pno na: https://web3js.readthedocs.io/en/v1.10.0/ [17] »Ethers«. Pridobljeno: 11. avgust 2025. [Na spletu]. Dostopno na: https://docs.ethers.org/v5/ [18] H. Chu, P. Zhang, H. Dong, Y. Xiao, S. Ji, in W. Li, »A survey on smart contract vulnerabilities: Data sources, detection and repair«, Inf Softw Technol, let. 159, str. 107221, jul. 2023, doi: 10.1016/J.INFSOF.2023.107221. [19] »GlassFish Wiki : GlassFishVsTomcat«. Pridobljeno: 11. april 2025. [Na spletu]. Dostopno na: https://javaee.github.io/ glassfish/wiki-archive/GlassFishVsTomcat.html [20] Y. Liu, F. R. Yu, X. Li, H. Ji, in V. C. M. Leung, »Blockcha- in and Machine Learning for Communications and Networ- king Systems«, IEEE Communications Surveys and Tutori- als, let. 22, !t. 2, str. 1392–1431, apr. 2020, doi: 10.1109/ COMST.2020.2975911. [21] V. Rajasekar, S. Sondhi, S. Saad, in S. Mohammed, »Emerging design patterns for blockchain applications«, ICSOFT 2020 - Proceedings of the 15th International Con- ference on Software Technologies, str. 242–249, 2020, doi: 10.5220/0009892702420249. [22] X. Xu, C. Pautasso, L. Zhu, Q. Lu, in I. Weber, »A pattern collection for blockchain-based applications«, ACM In- ternational Conference Proceeding Series, jul. 2018, doi: 10.1145/3282308.3282312. [23] P. van Vulpen, H. Heijnen, S. Mens, T. Kroon, in S. Jansen, »Upgradeable diamond smart contracts in decentralized au- tonomous organizations«, Frontiers in Blockchain, let. 7, str. 1481914, dec. 2024, doi: 10.3389/FBLOC.2024.1481914/ BIBTEX. [24] »Gas (Ethereum): How Gas Fees Work on the Ethere- um Blockchain«. Pridobljeno: 8. avgust 2025. [Na spletu]. Dostop no na: https://www.investopedia.com/terms/g/gas- -ethereum.asp [25] »Understanding Ethereum Gas Fees in 2025: A Comprehen- sive Guide | KuCoin Learn«. Pridobljeno: 16. maj 2025. [Na spletu]. Dostopno na: https://www.kucoin.com/learn/web3/ understanding-ethereum-gas-fees [26] »Ethereum Average Gas Price Chart | Etherscan«. Pridoblje- no: 16. maj 2025. [Na spletu]. Dostopno na: https://ether- scan.io/chart/gasprice Mitja Gradišnik, Tina Beranič, Muhamed Turkanović: Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum UPORABNA INFORMATIKA 113 2025 - πtevilka 2 - letnik XXXIII [27] A. Vacca, A. Di Sorbo, C. A. Visaggio, in G. Canfora, »A sys- tematic literature review of blockchain and smart contract de- velopment: Techniques, tools, and open challenges«, Journal of Systems and Software, let. 174, str. 110891, apr. 2021, doi: 10.1016/J.JSS.2020.110891. [28] N. Sánchez-Gómez, L. Morales-Trujillo, J. J. Gutiérrez, in J. Torres-Valderrama, »The importance of testing in the early stages of smart contract development life cycle«, Journal of Web Engineering, let. 19, !t. 2, str. 215–242, jun. 2020, doi: 10.13052/JWE1540-9589.1925. [29] »Foundry - Ethereum Development Framework«. Pridobljeno: 11. avgust 2025. [Na spletu]. Dostopno na: https://getfound- ry.sh/forge/tests/overview/ [30] »Hardhat - Ethereum development environment«. Pridoblje- no: 11. avgust 2025. [Na spletu]. Dostopno na: https://hard- hat.org/hardhat-runner/docs/guides/test-contracts [31] N. P. Imperius in A. D. Alahmar, »Systematic Mapping of Testing Smart Contracts for Blockchain Applications«, IEEE Access, let. 10, str. 112845–112857, 2022, doi: 10.1109/ ACCESS.2022.3216874. [32] A. Reyes, M. Jimeno, in R. Villanueva-Polanco, »Continuo- us and Secure Integration Framework for Smart Contracts«, Sensors 2023, Vol. 23, Page 541, let. 23, !t. 1, str. 541, jan. 2023, doi: 10.3390/S23010541. [33] T. Chen idr., »GasChecker: Scalable Analysis for Discove- ring Gas-Inefficient Smart Contracts«, IEEE Trans Emerg Top Comput, let. 9, !t. 3, str. 1433–1448, 2021, doi: 10.1109/ TETC.2020.2979019. [34] T. Chen, X. Li, X. Luo, in X. Zhang, »Under-Optimized Smart Contracts Devour Your Money«, SANER 2017 - 24th IEEE International Conference on Software Analysis, Evolution, and Reengineering, str. 442–446, mar. 2017, doi: 10.1109/ SANER.2017.7884650. [35] L. Palechor in C. P. Bezemer, »How are Solidity smart con- tracts tested in open source projects? An exploratory study«, Proceedings - 3rd ACM/IEEE International Conference on Automation of Software Test, AST 2022, str. 165–169, 2022, doi: 10.1145/3524481.3527228. [36] Y. Huang, Y. Bian, R. Li, J. L. Zhao, in P. Shi, »Smart con- tract security: A software lifecycle perspective«, IEEE Access, let. 7, str. 150184–150202, 2019, doi: 10.1109/ ACCESS.2019.2946988. Mitja Gradišnik je asistent na Fakulteti za elektrotehniko, računalništvo in informatiko Univerze v Mariboru. Njegovo raziskovalno delo je usmerje - no v sodobne pristope k razvoju programskih rešitev , zagotavljanje kakovosti programskih produktov ter uporabo metod podatkovnega rudarjenja v programskem inženirstvu. Sodeluje pri številnih raziskovalnih in aplikativnih projektih, ki potekajo v okviru Inštituta za informatiko.  T ina Beranič je docentka na Fakulteti za elektrotehniko, računalništvo in informatiko Univerze v Mariboru. Doktorirala je leta 2018 iz temati - ke identifikacije pomanjkljive programske kode. Njeno raziskovalno delo obsega domeno kakovosti programske opreme, še posebej področje programskih metrik in mejnih vrednosti ter njihove uporabe za namen vrednotenja programske opreme. Ukvarja se tudi s področjem revizije informacijskih sistemov , pri čemer je leta 2017 pridobila certifikat CISA (Certified Information Systems Auditor) in leta 2020 naziv Preizkušena revizorka informacijskih sistemov na Slovenskem inštitutu za revizijo.  Muhamed T urkanović je visokošolski učitelj, izredni profesor , na Fakulteti za elektrotehniko, računalništvo in informatiko Univerze v Mariboru. Je vodja raziskovalne skupine Blockchain Lab:UM Inštituta za informatiko, namestnik predstojnika Inštituta za informatiko, vodja slovenskega EDIH-a DIGI-SI, vodja projektov H2020, Horizont Evropa, Interreg Alpine Space ter ARRS CRP . Njegovi trenutni raziskovalni interesi vključujejo področja tehnologij veriženja blokov , podatkovnih tehnologij ter digitalnih identitet. Mitja Gradišnik, Tina Beranič, Muhamed Turkanović: Analiza posebnosti zagotavljanja kakovosti pri razvoju decentraliziranih aplikacij v okolju Ethereum