S02E11 Blockchain in Erlang z Inom Murkom in Janom Haložanom
Tokrat smo v Mariboru klepetali z Janom Haložanom in Inom Murkom. Počitniško smo se pogovarjali o Erlang VM, Ethereum Virtual Machine (EVM), Blockchain, ZK (Zero-knowledge proofs), Layer 2 in o sorodnih povezanih in zelo nepovezanih temah (Advent Of Code).
Kaj je Erlang?
Erlang je programski jezik in okolje za razvoj programske opreme, ki je bil prvotno razvit v Ericssonu, švedskem podjetju za telekomunikacije, v 80. letih prejšnjega stoletja. Razvil so ga Joe Armstrong, Robert Virding in Mike Williams. Erlang je bil prvotno zasnovan za reševanje težav s telekomunikacijskimi sistemi visoke zanesljivosti in dostopnosti, vendar se danes uporablja tudi za različne druge vrste aplikacij.
Glavne značilnosti Erlanga vključujejo:
- Visoka zanesljivost: Erlang je zasnovan za zagotavljanje visoke razpoložljivosti in odpornosti na napake. Ima vgrajeno podporo za vzdrževanje sistemov v delovanju tudi v primeru napak ali izjem.
- Razširljivost: Erlang omogoča enostavno razširjanje aplikacij in sistemov na več procesorskih jedrih ali na različnih strojih, kar ga naredi primernega za razvoj visoko zmogljivih in razširljivih aplikacij.
- Hitrost izvajanja: Erlang je zelo učinkovit jezik, kar pomeni, da lahko dosegate visoke hitrosti izvajanja, kar je pomembno pri razvoju realnočasovnih sistemov.
- Vgrajena podpora za vzporedno izvajanje: Erlang ima vgrajene mehanizme za vzporedno izvajanje, kar olajša razvoj aplikacij, ki izkoriščajo več jedri procesorja.
- Dinamično nalaganje kode: Erlang omogoča dinamično nalaganje kode, kar pomeni, da lahko spremenite in posodobite svojo aplikacijo med delovanjem brez potrebe po ponovnem zagonu.
Erlang se uporablja v različnih aplikacijah, vključno z:
- Telekomunikacije: Še vedno se pogosto uporablja za razvoj telekomunikacijskih sistemov, kot so strežniki za obdelavo klicev in strežniki za pošiljanje sporočil.
- Internet stvari (IoT): Zaradi svoje sposobnosti za vzdrževanje visoke razpoložljivosti in porazdeljene obdelave je Erlang primeren za razvoj aplikacij za internet stvari.
- Spletni strežniki: Erlang se uporablja tudi za razvoj spletnih strežnikov in strežnikov za klepet, ki zahtevajo hitro odzivnost in visoko zmogljivost.
- Finančne aplikacije: Zaradi svoje zanesljivosti in zmogljivosti se Erlang včasih uporablja tudi za razvoj finančnih aplikacij.
Skupaj z Erlangom obstaja tudi okvir za razvoj distribuiranih sistemov, imenovan OTP (Open Telecom Platform), ki omogoča enostavno razvijanje skalabilnih in zanesljivih sistemov.
Kaj je Ethereum VM?
Ethereum Virtual Machine (EVM) je računalniški sistem, ki deluje v omrežju Ethereum. Gre za virtualni stroj, ki izvaja pametne pogodbe (smart contracts) in decentralizirane aplikacije (DApps) na omrežju Ethereum. EVM je ključna komponenta, ki omogoča izvajanje kode in izvajanje transakcij na Ethereum blockchainu.
Ključne prednosti in vidiki Ethereum Virtual Machine (EVM):
- Univerzalnost: EVM je zasnovana tako, da je Turing-polna, kar pomeni, da lahko izvaja skoraj vsak program, ki ga je mogoče zapisati v obliki pametne pogodbe. To omogoča razvijalcem, da ustvarijo širok spekter aplikacij in pametnih pogodb.
- Izolacija: EVM zagotavlja izolacijo med različnimi pametnimi pogodbami in DApps. To pomeni, da ena pametna pogodba ne more neposredno vplivati na druge, kar prispeva k varnosti in zanesljivosti omrežja.
- Gas (Gorivo): EVM uporablja koncept "gas" za merjenje količine računalniških virov, potrebnih za izvajanje določene operacije ali pametne pogodbe. Uporaba goriva pomaga preprečiti zlorabo omrežja z neskončnimi zankami ali prekomerno zahtevnimi operacijami. Uporabniki plačajo za izvajanje svojih transakcij na podlagi porabe goriva.
- Decentralizacija: EVM se izvaja na vsakem vozlišču v omrežju Ethereum, kar pomeni, da je izvajanje pametnih pogodb decentralizirano. To zagotavlja, da je vsako vozlišče v omrežju sposobno preveriti in potrditi izvajanje pogodbe, kar prispeva k verodostojnosti in varnosti omrežja.
- Odpornost: EVM je zasnovana tako, da je odporna na napake in napade. Vsaka transakcija in izvajanje pametne pogodbe je zabeleženo in nespremenljivo shranjeno v Ethereum blockchainu.
Poleg izvajanja pametnih pogodb in DAppsov je EVM pomemben del ekosistema Ethereum, saj omogoča razvoj decentraliziranih aplikacij in storitev, ki temeljijo na blockchainu. Razvijalci uporabljajo programski jezik Solidity ali druge jezike, da napišejo pametne pogodbe, ki se izvajajo na Ethereum Virtual Machine.
Kaj so "zero-knowledge proofs" (ZK)?
"Zero-knowledge proofs" (ali preprosto ZK proofs) so matematične tehnike, ki omogočajo eni stranki (poznavalcu) dokazovanje določenih trditev o svojem znanju ali podatkih drugi stranki (verifikatorju) brez razkritja dejanskih podatkov ali znanja. To pomeni, da lahko poznavalec dokaže, da ve nekaj, ne da bi dejansko razkril, kaj točno ve.
ZK proofi so pomembni v svetu kriptografije in varnosti na več načinov:
- Zasebnost: Omogočajo dokazovanje identitete ali znanja brez razkritja podrobnosti. Na primer, oseba lahko dokaže, da je starejša od 18 let (brez razkrivanja svoje točne starosti), ali da pozna geslo (brez razkritja dejanskega gesla).
- Varovanje podatkov: ZK proofi omogočajo preverjanje pravilnosti določenih izračunov brez razkrivanja vhodnih podatkov. To je uporabno v številnih aplikacijah, vključno s kriptovalutami, kjer lahko uporabniki dokažejo, da so njihove transakcije veljavne, ne da bi razkrili natančne vsote ali naslove.
- Dokazovanje lastništva: ZK proofi omogočajo dokazovanje, da imate določeno lastnino (kot je kriptovaluta, nepremičnina ali digitalna vsebina) brez razkrivanja podrobnosti o lastnini.
- Varnost pri izvajanju pametnih pogodb: Uporabljajo se tudi v pametnih pogodbah in decentraliziranih aplikacijah za dokazovanje izpolnjevanja določenih pogojev brez razkrivanja podrobnosti o transakciji ali pogodbenem dogovoru.
Eden izmed znanih primerov ZK proofov je "zk-SNARK" (zero-knowledge succinct non-interactive argument of knowledge), ki se pogosto uporablja v blockchain tehnologijah, kot je Ethereum, za izboljšanje zasebnosti in varnosti transakcij.
Uporaba ZK proofov je še posebej pomembna v okoljih, kjer je varnost in zasebnost ključna, saj omogočajo preverjanje informacij, ne da bi bile te informacije razkrite drugim strankam ali javnosti.
Kaje je Advent of Code?
Advent of Code je letni dogodek in izziv za ljubitelje programiranja in reševanja algoritmičnih izzivov. Ta dogodek je bil ustvarjen leta 2015 s strani Erica Wastlja in je postal priljubljen med razvijalci in programerji po vsem svetu.
Glavne značilnosti Advent of Code vključujejo:
- Decembrski izzivi: Advent of Code poteka med decembrskim obdobjem, običajno od 1. do 25. decembra. Vsak dan v tem obdobju je objavljen nov izziv, ki vsebuje programski problem ali nalogo, ki jo je treba rešiti.
- Raznolikost nalog: Izzivi Advent of Code segajo od klasičnih algoritmičnih nalog, kot so iskanje poti, sortiranje in analiza nizov, do bolj kreativnih izzivov, ki vključujejo matematiko, igre in logično razmišljanje.
- Rast zahtevnosti: Običajno se začnejo z enostavnejšimi nalogami na začetku meseca, nato pa se postopoma povečuje zahtevnost, pri čemer so naloge v drugi polovici meseca običajno bolj izzivalne.
- Globalna skupnost: Advent of Code je odprt za vse, ki želijo sodelovati, in ima veliko mednarodno skupnost razvijalcev. Udeleženci rešujejo naloge in objavljajo svoje rešitve v različnih jezikih ter se pogosto povezujejo v forumih in na družabnih omrežjih, da si izmenjujejo izkušnje in rešitve.
- Brezplačen in nagrade: Sodelovanje v Advent of Code je brezplačno, vendar pa lahko sodelujoči zbirajo zvezde za vsako rešeno nalogo. Prav tako obstaja nagradni seznam za tiste, ki rešijo vse naloge v tekočem letu.
Advent of Code je odličen način za izboljšanje svojih programerskih veščin, učenje novih algoritmov in jezika programiranja ter za zabavno sodelovanje z razvijalsko skupnostjo med praznično sezono. Reševanje teh nalog je pogosto izzivno, a obenem tudi zabavno in poučno.
Produkcija && Podpora
✨ Patreon ✨
- Ogrodje je mogoče, ker ste poleg! Podprite nas, da bomo še naprej skupaj na Patreon.
✨ Podporniki ✨
- 3fs - V kolikor iščete nove izzive iz področja razvoja / oblikovanja pobrskajte po 3fs.cloud.
- Humanfrog - Družba za strateško svetovanje z jedrnimi kompetencami na področjih internetnih tehnologij, oblikovanja in trženja. V iskanju .NET / Wordpress / WooComerce / Laravel razvijalcev in Sistemskih administratorjev na humanfrog / kariera.
✨ Sodelujoči ✨
- Produkcija: Jan Dolar, DOLAR Media
- Tehnična pomoč in svetovanje: Andraž Sraka, Tomaž Zaman, Tilen Zaman, Jernej Gračner, Nuša Mahorič
- Artwork: Jernej Gračner
P.s.: Pridruži se nam na Discordu!
Hvala ker ste poleg! 🚀