Vas zanima študij pri nas?
Izpolnite spodnji obrazec za prijavo v program. V roku enega dneva vam bomo posredovali vse potrebne informacije o vpisu.
Programsko inženirstvo
Kodiranje pametnih pogodb v programskem jeziku Solidity predstavlja poseben izziv, saj posebnosti tehnologije veriženja blokov zahtevajo uporabo nekonvencionalnih programerskih vzorcev. Morebitni programski hrošči in varnostne pomanjkljivosti, zapisani v programski kodi, so vidni vsem, saj je izvorna koda pametnih pogodb javna.
Z vidika varnosti pametnih pogodb je zato priporočljivo, da ima programer dobro poznavanje uveljavljenih vzorcev načrtovanja, ki omogočajo pisanje funkcionalne programske kode z zmanjšano možnostjo delanja napak.
V diplomskem delu obravnavamo razliko med različnimi vrstami algoritmov porazdelitvenega soglasja in navajamo osnovne gradnike verig blokov. Z navedbo konkretnih primerov uporabe verig blokov v realnih poslovnih situacijah smo želeli razbliniti predstavo o tem, da so pametne pogodbe uporabne samo na področju finančnih transakcij.
V nadaljevanju se v okviru diplomskega dela ukvarjamo s posebnimi lastnostmi programskega jezika Solidity, opredelimo njegove prednosti in slabosti.
Kot eno od večjih slabosti programskega jezika Solidity lahko vsekakor poudarimo njegovo mladost in s tem povezano relativno veliko število varnostnih pomanjkljivosti ter pogostih sprememb in nadgradenj programske kode.
Iz tega razloga navajamo največje in najpogostejše ranljivosti pametnih pogodb, napisanih v Solidity. Za vsako opisano ranljivost poleg konkretnega primera podajamo še priporočila, kako se tem ranljivostim izogniti ali jih vsaj zmanjšati.
Kjer je bilo to mogoče, smo s konkretnimi primeri, zapisanimi s programsko kodo, podali primer ranljive programske kode in primer, kjer smo to ranljivost odpravili.
Na osnovi podanih ranljivosti in priporočil smo pripravili in v diplomsko delo vključili tudi kontrolni seznam, ki bi programerjem v prihodnje lahko služil kot hitra referenca pri njihovem delu. Kontrolni seznam smo zasnovali tako, da smo pri vsaki ranljivosti navedli področje, na katero se le-ta nanaša, ter tudi kratko navedbo v zvezi s priporočenimi in odsvetovanimi praksami.
Na tak način smo želeli programerjem še dodatno poenostaviti uporabo kontrolnega seznama.
Pridobljena spoznanja smo nato vključili v pisanje lastnega primera aplikacije, in sicer tržnice NFT-žetonov, ki uporabniku omogoča povezavo aplikacije z denarnico in prodajo žetonov.
Aplikacija je sestavljena iz dveh pametnih pogodb in preprostega grafičnega uporabniškega vmesnika, napisanega v JavaScriptu.