Varnost pametnih pogodb, napisanih v programskem jeziku Solidity

Programsko inženirstvo

Študent: Petra Munda

Petra Munda je diplomantka Višje strokovne šole Academia, program Informatika - modul Programsko inženirstvo. Svoje diplomsko delo je zagovarjala avgusta 2022.

PDF

Diplomsko delo Petra Munda

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.


Diplomsko delo Petra Munda

PDF

Diplomsko delo Petra Munda

Želite biti obveščeni o novicah na Academii?

Ko bo kaj novega vam to enostavno sporočimo na vaš e-naslov.

X