Smart Contracts
Uvod: Šta su Smart Contracti?
Neka vrsta definicije: smart contract je program koji niko ne moze da zaustavi izmeni ili poništi, nastali su odavno, ali razvojem blockchain tehnologije su postali popularniji
Istorija: - Koncept je teoretski izumljen početkom 1990-ih kao ideja za "digitalne ugovore" - Implementiran je tek razvojem blockchain tehnologije, posebno sa pojavom Ethereuma 2015. godine - Bitcoin ima ograničen smart contract jezik, a Ethereum koristi Turing-kompletan jezik
Zašto se nisu koristili ranije?
Iako je ideja nastala odavno, praktična primena je bila nemoguća jer su nedostajali ključni elementi:
- Blockchain infrastruktura — trebala je decentralizovana mreža koja može da čuva i izvršava kod
- Konsensualni mehanizmi — potreban nacin da sve čvorove u mreži budu usklađene
- Kriptografija — digitalni potpisi i heširanje trebali su da budu praktični
- Turing-kompletan jezik — programski jezik dovoljan za pisanje proizvoljnih programa
Prednosti Smart Contracta
1. Eliminacija posrednika
- Nisu potrebni advokati, notari, banke niti druge institucije kao "pouzdana treća strana"
- Kod je sam garancija da će se ugovor izvršiti
- Primer: umesto da notar potvrdi transfer vlasništva, smart contract to uradi automatski
2. Transparentnost
- Sve strane mogu da vide kompletan kod ugovora
- Nema skrivenih klauzula ili ne-pojašnjenih akcija
- Svako može da proveri šta će se desiti pre nego što se izvrši
3. Brže izvršavanje
- Klasični ugovori se izvršavaju dugo (čekanje na advokate, administrativne procedure)
- Smart contracti se izvršavaju u minutama ili čak sekundama
- Automatska provera uslova umesto ručne administrativne obrade
4. Niži troškovi
- Nema honorara za advogate, notare, banke
- Samo troškovi izvršavanja na blockchain-u (gas troškovi na Ethereumu)
- Često dosta jeftiniji od tradicionalnog pristupa
5. Manja mogućnost prevare
- Kod je fiksan — ne može biti promenjen tokom izvršavanja
- Sve strane znaju tačno šta se dešava
Gde se koriste trenutno?
1. Kriptovalute
- Upravljanje izdavanjem novog novca
- Distribucija nagrada rudarima/validatorima
2. Web3 aplikacije
- Decentralizovane berze (DEX) — Uniswap, SushiSwap
- Decentralizovani krediti — Aave, Compound
- NFT tržišta — OpenSea
- Decentralizovani društveni mediji
3. Automatizacija poslovanja
- Automatske isplate kada se ispune uslovi
- Trigger-based akcije (npr. ako cena pada ispod X, automatski kupi)
4. Osiguranje
- Parametarsko osiguranje — ako se desi određeni događaj (npr. kišni dani padnu ispod proseka), automatski isplata
- Bez potrebe da osiguravajuća firma proverava legitimnost zahteva
5. Upravljanje i glasovanje
- Decentralizovane autonomne organizacije (DAO)
- Transparentno glasanje bez mogućnosti manipulacije
Blockchain Tehnologija - Osnove
Šta je blockchain?
Blockchain je distribuirana baza podataka koja se sastoji od lanca blokova, gde svaki blok sadrži:
- Skup transakcija (podataka)
- Heš prethodnog bloka (povezanost)
- Vremensku oznaku
- Heš svog sadržaja
Ključne karakteristike:
- Decentralizovan — nije kontrolisan od strane jedne osobe ili kompanije
- Imutabilan — ne može se promeniti istorija bez invalidiranja svih sledećih blokova
- Transparentan — svi mogu da vide sve transakcije
Kako funkcioniše?
1. Neko inicira transakciju
2. Transakcija ide u transaction pool (pending)
3. Mineri/validatori je biraju i dodaju u blok
4. Blok se dodaje u lanac nakon što se dostigne konsenzus
5. Transakcija je sada trajno zabeležena
Bitcoin
Cilj: Digitalni novac bez potrebe za bankom
Smart Contracti:
- Ima veoma ograničen script jezik — nije Turing kompletan
- Može se koristiti samo za jednostavne operacije (npr. "pošalji X ako su potpisi validni")
- Primena je ograničena na prebacivanje vrednosti
Konsenzus mehanizam:
- PoW (Proof of Work) — mineri rešavaju teške matematičke probleme
- više računske moći = veće šanse da pronađeš blok
- Energetski intenzivno ali sigurno
Transakcije:
- Transakcija ide u transaction pool
- Mineri biraju profitabilne transakcije (sa visokim fee-om)
- Rešavaju PoW problem (~10 minuta po bloku)
- Blok se dodaje, dobijaju nagradu
Ethereum
Cilj: Platforme za izvršavanje proizvoljnih programa (smart contracta)
Smart Contracti:
- Sa dovoljno sredstava (gas-a), mogu se izvršiti proizvoljno kompleksni programi
- Omogućava kompletnu logiku poslovanja
Virtual Machine:
- EVM (Ethereum Virtual Machine) — izvršava bytecode (kompajlirani oblik Soliditija ili nekog višeg programskog jezika)
- Slično kao Java Virtual Machine — isti kod radi na svim čvorovima
- Deterministička — svi čvorovi će doći do istog rezultata
Gas model:
- Svaka operacija ima gas cost (cena u jedinicama gas-a)
- Sprečava beskonačne petlje — program mora da ima dovoljno gas-a da se izvrši
- Korisnik plaća:
gas_potrošen × gas_cena
Konsenzus mehanizam:
- PoW (do 2022.) — kao Bitcoin, mineri, energetski skupo
- PoS (od 2022., "The Merge") — validatori čuvaju ETH kao kolateral
- Ekonomski rizik umesto computing power
- ~99.95% manje energije
- Brže finalization (~12 sekundi po bloku umesto ~15)
Neki drugi konsenzus mehanizmi:
- Proof of Authority — unapred dogovoreni čvorovi validiraju (centralizovano ali brzo, cesto u privatnim mrežama)
- Proof of Elapsed time
- Proof of Burn - spali malo novca da generišeš blok
Lepi Primeri Smart Contracta
1. Flash Loans (Blic Pozajmice)
Scenario: Viđaš divnu priliku — možeš kupiti token na Uniswap-u po nižoj ceni i odmah ga prodati na Sushi-Swap-u po višoj, zarađujući razliku. Problem — trebaš mu 1 milion dolara gotovine koju nemaš.
Rešenje sa smart contractom:
- Pozajmi 1M$ iz likvidnostnog basena (flash loan)
- Kupi token na Uniswap-u
- Odmah ga proda na Sushi-Swap-u
- Vrati pozajmljenih 1M$ + mali fee
- Ostatak zadrži kao profit
- Sve se dešava u JEDNOM transakciji
- Ako profita nema, cela transakcija se poništava
Ključna prednost: Nemaš rizik — ako arbitraža ne bude profitabilna, nikada nećeš vraćati novac (transakcija se rollback-uje).
2. Automatska isplata radnika svake sekunde
Klasičan način:
- Radnik radi mesec dana
- Na kraju meseca, poslodavac proverava sate i izdaje nalog za plaćanje
- Papiri, administrativna kašnjenja, mogućnost greške
Sa smart contractom:
- Za svaku sekundu rada, akumulira se mali deo plate
- Radnik može povući novac u bilo kom trenutku
- Plate se plaćaju u realnom vremenu
- Nema mogućnosti za ne-plaćanje — kod je garancija
3. Decentralizovane autonomne organizacije (DAO)
Primer: Fond sa 10 miliona dolara
Klasičan način:
- Direktor upravlja fondom
- Članovi glasaju za odluke ali direktor može ignorisati glasanje
- Direktor može da preuredi sredstva kako želi
- Rizik od prevare, nepotizma
Sa DAO smart contractom:
- Svaki član ima token = glas
- Svaka odluka ide u glasanje
- Samo većina može da autorizuje prebacivanje sredstava
- Sve finansije su javne i proverene
4. Lutrije gde niko ne gubi
Klasična lutrija: - Kupuješ kartu za 1$ - Samo nekoliko osoba dobija — ostali izgube novac - Nema povratka
Sa smart contractom (Lottery Pool):
- 100 osoba kupi po 1$ (ukupno 100$)
- Sav novac se ulaže
- Novac generiše 5% godišnje = 5$ preko godine
- Koju god godinu, jedan nasumičan pobednik dobija 105$
- Svi ostali dobijaju svoje 1$ nazad
Rezultat: Niko ne gubi osnovno ulaganje, a jedan učesnik dobija sve kamate!
5. Mini kriptovalute - tokeni
Svaki smart contract može kreirati vlastiti token.
Problemi sa Smart Contractima
1. Hard Fork (ETH vs ETC)
Nakon DAO napada, Ethereum zajednica je podeljena:
Opcija A: Hard Fork (Ethereum - ETH)
- Vraćanje vremenske mašine (rollback) do pre napada
- oni koji nisu glasali za fork stvaraju Ethereum Classic (ETC)
- Izgleda kao moć utvrđuje šta se smatra "pravim" blockchain-om
- "Immutability" je slomljena — ako je ugovor "lošiji", promenimo ga
Opcija B: Ethereum Classic (ETC)
- "Kod je zakon" — bez intervencija
- Čuvanje originalnog filosofskog stava o decentralizaciji
- Ali manja zajednica, manja sigurnost
Pitanje: Ko odlučuje šta je "pošteno"? Većina? Razvojni tim? Ako blockchain može biti forkovan, da li je stvarno nepromenjiv?
2. Privatnost i Anonimnost
Problem: Sve transakcije i interakcije sa smart contractima su javne!
3. Kradja transakcija
Miner vidi transakciju koju sam poslao, vidi da ima nagrada za onog ko posalje tu transakciju, posalje tu transakciju sa većom provizijom, njegova se prva doda u blockchain, moja se odbije jer je druga.
Privatna Ethereum Mreža - Testiranje
Za razvoj smart contracta, ne koristi se javni Ethereum jer je skupo: Koristi se ili test mreža ili privatna mreža.
Prednosti:
- Besplatno (testneta ETH)
- Trenutne transakcije
- Puna kontrola
Blok, Transakcija, Nalog, Ugovor
Struktura Blockchain-a
┌─────────────────────┐
│ Blok #1000 │
├─────────────────────┤
│ Heš prethodnog: 0x..│
│ Vremensku oznaka: ..│
│ Nonce: 12345 │
│ │
│ Transakcije: │
│ ┌─────────────────┐ │
│ │ TX #1 │ │
│ │ TX #2 │ │
│ │ TX #3 │ │
│ └─────────────────┘ │
│ │
│ Heš ovog bloka: 0x..│
└─────────────────────┘
Šta je Transakcija?
Transakcija je zahtev za promenu stanja blockchain-a:
Proces: 1. Korisnik kreiram i potpisuje (sa privatnim ključem) 2. Pošalje mreži 3. Ide u memory pool (pending) 4. Validatori/mineri je dodaju u blok 5. Blok se dodaje — transakcija je završena
Šta je Nalog (Account)?
Ethereum ima dva tipa naloga:
1. Spoljašnji nalog (EOA - Externally Owned Account)
- Kontrolisan od strane osobe (ima privatni ključ)
- Može inicijavati transakcije
2. Smart Contract Nalog
- Nema privatnog ključa — niko ga ne kontroliše
- Može biti aktiviran samo iz druge transakcije
Šta je Blok?
Blok je grupa transakcija koje se dodavaju blockchain-u istovremeno:
┌─────────────────────────────────┐
│ Blok Header: │
│ - Broj: 17500000 │
│ - Vremenska oznaka: 1704067200 │
│ - Heš prethodnog bloka: 0x... │
│ - Merkle root (heš svih TX): ..│
│ - Miner: 0x1234... │
│ - Difficulty: target │
│ │
│ Transakcije: │
│ [TX1, TX2, TX3, ..., TXn] │
│ │
│ Proof: (za PoW) pronadjeni Nonce│
└─────────────────────────────────┘
Kako se kreira blok: 1. Validatori/mineri biraju profitabilne transakcije iz transaction pool-a 2. Provere da li su validne (dovoljno gas-a, ispravan nonce, itd.) 3. Izvršavaju ih i ažuriraju stanje 4. Rešavaju PoW/PoS uslov 5. Blok se emituje — ostali čvorovi ga proveravaju 6. Ako je validan, dodaju ga