Kodiranje pametnih pogodb v programskem jeziku Solidity predstavlja poseben izziv, saj posebnosti tehnologije veriženja blokov zahtevajo uporabo nekonvencionalnih programerskih vzorcev.
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.
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.
Objavljeno 7. 8. 2022 · licenca CC BY-NC 4.0 (besedilo in PDF diplomskega dela; fotografije in videi © Academia) · izvirna objava: academia.si.
Še iz modula Programsko inženirstvo

Varnostna analiza lokalnega in oblačnega shranjevanja podatkov pri celičnih terapijah

Avtomatizacija backend procesov z uporabo umetne inteligence

Primerjava dveh orodij za statično analizo kode (SAST) za začetnike: SonarQube CE proti Semgrep
Ž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.