Online informativni dan 26. 11. 2026 ob 18.00 – študij ob delu, cena, štipendije. Rezervirajte mesto →
Academia
Diplomsko delo 2022Programsko inženirstvoEthereum · pametne pogodbe · ranljivosti

Varnost pametnih pogodb, napisanih v programskem jeziku Solidity

Kodiranje pametnih pogodb v programskem jeziku Solidity predstavlja poseben izziv, saj posebnosti tehnologije veriženja blokov zahtevajo uporabo nekonvencionalnih programerskih vzorcev.

Petra Mundadiplomantka, Računalništvo in informatika – modul Programsko inženirstvo · zagovor avgust 2022Mentor: mag. Ervin Schaff · mentor v podjetju: Monika Mastnak
VrstaDiplomsko deloRačunalništvo in informatika · Programsko inženirstvo
PodročjeEthereum, pametne pogodbe, ranljivosti
Mentormag. Ervin Schaffmentor v podjetju: Monika Mastnak
Obseg83 straniPDF 1,67 MB
ZagovorAvgust 2022objavljeno 7. 8. 2022
V 30 sekundah
Vprašanje

Kodiranje pametnih pogodb v programskem jeziku Solidity predstavlja poseben izziv, saj posebnosti tehnologije veriženja blokov zahtevajo uporabo nekonvencionalnih programerskih vzorcev.

Metoda

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.

Ugotovitev

Za vsako opisano ranljivost poleg konkretnega primera podajamo še priporočila, kako se tem ranljivostim izogniti ali jih vsaj zmanjšati.

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. 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, so s konkretnimi primeri, zapisanimi s programsko kodo, podali primer ranljive programske kode in primer, kjer so to ranljivost odpravili.

Zakaj je problem resničen

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.

Metoda

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 so ž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 njene prednosti in slabosti. Kot eno od večjih slabosti programskega jezika Solidity lahko vsekakor poudarimo njeno 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.

Kaj je nastalo

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, so s konkretnimi primeri, zapisanimi s programsko kodo, podali primer ranljive programske kode in primer, kjer so to ranljivost odpravili. Na osnovi podanih ranljivosti in priporočil so 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 so zasnovali tako, da so 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 so želeli programerjem še dodatno poenostaviti uporabo kontrolnega seznama. Pridobljena spoznanja so 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.

Prenesite diplomsko delo83 strani · PDF 1,67 MB
Munda, P. (2022). Varnost pametnih pogodb, napisanih v programskem jeziku Solidity. Diplomsko delo, Academia, višja strokovna šola, Maribor.
Prenesite PDF
Ethereumpametne pogodberanljivostiSolidityverige blokov

Objavljeno 7. 8. 2022 · licenca CC BY-NC 4.0 (besedilo in PDF diplomskega dela; fotografije in videi © Academia) · izvirna objava: academia.si.

Sorodni projekti

Še iz modula Programsko inženirstvo

Vsi diplomski projekti →
Vpis · Programsko inženirstvo

Želite v dveh letih narediti tak projekt?

Pustite e-pošto. V enem delovnem dnevu dobite osebni odgovor karierne svetovalke: ali je modul pravi za vas, kako se prizna vaša služba kot praksa in koliko stane – plus predmetnik, urnik in cenik.

Go Higher.
Osebni odgovor po e-pošti v enem delovnem dnevu. Brez spama; s pošiljanjem se strinjate s politiko zasebnosti.
Preden greste

Pošljemo vam predmetnik, potek študija ter možnosti financiranja in štipendij.

Brez klicev, brez spama. Ena e-pošta z vsem, kar potrebujete za odločitev, in povabilom na predavanje.

S pošiljanjem se strinjate, da vas Academia kontaktira po e-pošti ali telefonu. Zasebnost · odjava kadar koli.